{"id":"50d3ea6d455c8cb0a6b5b4600e48ae12","_format":"hh-sol-build-info-1","solcVersion":"0.8.28","solcLongVersion":"0.8.28+commit.7893614a","input":{"language":"Solidity","sources":{"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\nimport { IMessageLibManager } from \"./IMessageLibManager.sol\";\nimport { IMessagingComposer } from \"./IMessagingComposer.sol\";\nimport { IMessagingChannel } from \"./IMessagingChannel.sol\";\nimport { IMessagingContext } from \"./IMessagingContext.sol\";\n\nstruct MessagingParams {\n    uint32 dstEid;\n    bytes32 receiver;\n    bytes message;\n    bytes options;\n    bool payInLzToken;\n}\n\nstruct MessagingReceipt {\n    bytes32 guid;\n    uint64 nonce;\n    MessagingFee fee;\n}\n\nstruct MessagingFee {\n    uint256 nativeFee;\n    uint256 lzTokenFee;\n}\n\nstruct Origin {\n    uint32 srcEid;\n    bytes32 sender;\n    uint64 nonce;\n}\n\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\n\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\n\n    event PacketDelivered(Origin origin, address receiver);\n\n    event LzReceiveAlert(\n        address indexed receiver,\n        address indexed executor,\n        Origin origin,\n        bytes32 guid,\n        uint256 gas,\n        uint256 value,\n        bytes message,\n        bytes extraData,\n        bytes reason\n    );\n\n    event LzTokenSet(address token);\n\n    event DelegateSet(address sender, address delegate);\n\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\n\n    function send(\n        MessagingParams calldata _params,\n        address _refundAddress\n    ) external payable returns (MessagingReceipt memory);\n\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\n\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\n\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\n\n    function lzReceive(\n        Origin calldata _origin,\n        address _receiver,\n        bytes32 _guid,\n        bytes calldata _message,\n        bytes calldata _extraData\n    ) external payable;\n\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\n\n    function setLzToken(address _lzToken) external;\n\n    function lzToken() external view returns (address);\n\n    function nativeToken() external view returns (address);\n\n    function setDelegate(address _delegate) external;\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\nimport { Origin } from \"./ILayerZeroEndpointV2.sol\";\n\ninterface ILayerZeroReceiver {\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\n\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\n\n    function lzReceive(\n        Origin calldata _origin,\n        bytes32 _guid,\n        bytes calldata _message,\n        address _executor,\n        bytes calldata _extraData\n    ) external payable;\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\nimport { IERC165 } from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\nimport { SetConfigParam } from \"./IMessageLibManager.sol\";\n\nenum MessageLibType {\n    Send,\n    Receive,\n    SendAndReceive\n}\n\ninterface IMessageLib is IERC165 {\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\n\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\n\n    function isSupportedEid(uint32 _eid) external view returns (bool);\n\n    // message libs of same major version are compatible\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\n\n    function messageLibType() external view returns (MessageLibType);\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\nstruct SetConfigParam {\n    uint32 eid;\n    uint32 configType;\n    bytes config;\n}\n\ninterface IMessageLibManager {\n    struct Timeout {\n        address lib;\n        uint256 expiry;\n    }\n\n    event LibraryRegistered(address newLib);\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\n\n    function registerLibrary(address _lib) external;\n\n    function isRegisteredLibrary(address _lib) external view returns (bool);\n\n    function getRegisteredLibraries() external view returns (address[] memory);\n\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\n\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\n\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\n\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\n\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\n\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\n\n    function isSupportedEid(uint32 _eid) external view returns (bool);\n\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\n\n    /// ------------------- OApp interfaces -------------------\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\n\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\n\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\n\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\n\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\n\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\n\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\n\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\n\n    function getConfig(\n        address _oapp,\n        address _lib,\n        uint32 _eid,\n        uint32 _configType\n    ) external view returns (bytes memory config);\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\ninterface IMessagingChannel {\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\n\n    function eid() external view returns (uint32);\n\n    // this is an emergency function if a message cannot be verified for some reasons\n    // required to provide _nextNonce to avoid race condition\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\n\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\n\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\n\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\n\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\n\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\n\n    function inboundPayloadHash(\n        address _receiver,\n        uint32 _srcEid,\n        bytes32 _sender,\n        uint64 _nonce\n    ) external view returns (bytes32);\n\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\ninterface IMessagingComposer {\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\n    event LzComposeAlert(\n        address indexed from,\n        address indexed to,\n        address indexed executor,\n        bytes32 guid,\n        uint16 index,\n        uint256 gas,\n        uint256 value,\n        bytes message,\n        bytes extraData,\n        bytes reason\n    );\n\n    function composeQueue(\n        address _from,\n        address _to,\n        bytes32 _guid,\n        uint16 _index\n    ) external view returns (bytes32 messageHash);\n\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\n\n    function lzCompose(\n        address _from,\n        address _to,\n        bytes32 _guid,\n        uint16 _index,\n        bytes calldata _message,\n        bytes calldata _extraData\n    ) external payable;\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\ninterface IMessagingContext {\n    function isSendingMessage() external view returns (bool);\n\n    function getSendContext() external view returns (uint32 dstEid, address sender);\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\nimport { MessagingFee } from \"./ILayerZeroEndpointV2.sol\";\nimport { IMessageLib } from \"./IMessageLib.sol\";\n\nstruct Packet {\n    uint64 nonce;\n    uint32 srcEid;\n    address sender;\n    uint32 dstEid;\n    bytes32 receiver;\n    bytes32 guid;\n    bytes message;\n}\n\ninterface ISendLib is IMessageLib {\n    function send(\n        Packet calldata _packet,\n        bytes calldata _options,\n        bool _payInLzToken\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\n\n    function quote(\n        Packet calldata _packet,\n        bytes calldata _options,\n        bool _payInLzToken\n    ) external view returns (MessagingFee memory);\n\n    function setTreasury(address _treasury) external;\n\n    function withdrawFee(address _to, uint256 _amount) external;\n\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol":{"content":"// SPDX-License-Identifier: LZBL-1.2\n\npragma solidity ^0.8.20;\n\nlibrary AddressCast {\n    error AddressCast_InvalidSizeForAddress();\n    error AddressCast_InvalidAddress();\n\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\n        result = bytes32(_addressBytes);\n        unchecked {\n            uint256 offset = 32 - _addressBytes.length;\n            result = result >> (offset * 8);\n        }\n    }\n\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\n        result = bytes32(uint256(uint160(_address)));\n    }\n\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\n        result = new bytes(_size);\n        unchecked {\n            uint256 offset = 256 - _size * 8;\n            assembly {\n                mstore(add(result, 32), shl(offset, _addressBytes32))\n            }\n        }\n    }\n\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\n        result = address(uint160(uint256(_addressBytes32)));\n    }\n\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\n        result = address(bytes20(_addressBytes));\n    }\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol":{"content":"// SPDX-License-Identifier: LZBL-1.2\n\npragma solidity ^0.8.20;\n\nimport { Packet } from \"../../interfaces/ISendLib.sol\";\nimport { AddressCast } from \"../../libs/AddressCast.sol\";\n\nlibrary PacketV1Codec {\n    using AddressCast for address;\n    using AddressCast for bytes32;\n\n    uint8 internal constant PACKET_VERSION = 1;\n\n    // header (version + nonce + path)\n    // version\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\n    //    nonce\n    uint256 private constant NONCE_OFFSET = 1;\n    //    path\n    uint256 private constant SRC_EID_OFFSET = 9;\n    uint256 private constant SENDER_OFFSET = 13;\n    uint256 private constant DST_EID_OFFSET = 45;\n    uint256 private constant RECEIVER_OFFSET = 49;\n    // payload (guid + message)\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\n    uint256 private constant MESSAGE_OFFSET = 113;\n\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\n        encodedPacket = abi.encodePacked(\n            PACKET_VERSION,\n            _packet.nonce,\n            _packet.srcEid,\n            _packet.sender.toBytes32(),\n            _packet.dstEid,\n            _packet.receiver,\n            _packet.guid,\n            _packet.message\n        );\n    }\n\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\n        return\n            abi.encodePacked(\n                PACKET_VERSION,\n                _packet.nonce,\n                _packet.srcEid,\n                _packet.sender.toBytes32(),\n                _packet.dstEid,\n                _packet.receiver\n            );\n    }\n\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\n        return abi.encodePacked(_packet.guid, _packet.message);\n    }\n\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\n        return _packet[0:GUID_OFFSET];\n    }\n\n    function version(bytes calldata _packet) internal pure returns (uint8) {\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\n    }\n\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\n    }\n\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\n    }\n\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\n    }\n\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\n        return sender(_packet).toAddress();\n    }\n\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\n    }\n\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\n    }\n\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\n        return receiver(_packet).toAddress();\n    }\n\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\n    }\n\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\n        return bytes(_packet[MESSAGE_OFFSET:]);\n    }\n\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\n        return bytes(_packet[GUID_OFFSET:]);\n    }\n\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\n        return keccak256(payload(_packet));\n    }\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { ILayerZeroEndpointV2 } from \"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\";\n\n/**\n * @title IOAppCore\n */\ninterface IOAppCore {\n    // Custom error messages\n    error OnlyPeer(uint32 eid, bytes32 sender);\n    error NoPeer(uint32 eid);\n    error InvalidEndpointCall();\n    error InvalidDelegate();\n\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\n    event PeerSet(uint32 eid, bytes32 peer);\n\n    /**\n     * @notice Retrieves the OApp version information.\n     * @return senderVersion The version of the OAppSender.sol contract.\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\n     */\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\n\n    /**\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\n     * @return iEndpoint The LayerZero endpoint as an interface.\n     */\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\n\n    /**\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\n     * @param _eid The endpoint ID.\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\n     */\n    function peers(uint32 _eid) external view returns (bytes32 peer);\n\n    /**\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\n     * @param _eid The endpoint ID.\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\n     */\n    function setPeer(uint32 _eid, bytes32 _peer) external;\n\n    /**\n     * @notice Sets the delegate address for the OApp Core.\n     * @param _delegate The address of the delegate to be set.\n     */\n    function setDelegate(address _delegate) external;\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\n/**\n * @title IOAppMsgInspector\n * @dev Interface for the OApp Message Inspector, allowing examination of message and options contents.\n */\ninterface IOAppMsgInspector {\n    // Custom error message for inspection failure\n    error InspectionFailed(bytes message, bytes options);\n\n    /**\n     * @notice Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid.\n     * @param _message The message payload to be inspected.\n     * @param _options Additional options or parameters for inspection.\n     * @return valid A boolean indicating whether the inspection passed (true) or failed (false).\n     *\n     * @dev Optionally done as a revert, OR use the boolean provided to handle the failure.\n     */\n    function inspect(bytes calldata _message, bytes calldata _options) external view returns (bool valid);\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Struct representing enforced option parameters.\n */\nstruct EnforcedOptionParam {\n    uint32 eid; // Endpoint ID\n    uint16 msgType; // Message Type\n    bytes options; // Additional options\n}\n\n/**\n * @title IOAppOptionsType3\n * @dev Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\n */\ninterface IOAppOptionsType3 {\n    // Custom error message for invalid options\n    error InvalidOptions(bytes options);\n\n    // Event emitted when enforced options are set\n    event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\n\n    /**\n     * @notice Sets enforced options for specific endpoint and message type combinations.\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\n     */\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\n\n    /**\n     * @notice Combines options for a given endpoint and message type.\n     * @param _eid The endpoint ID.\n     * @param _msgType The OApp message type.\n     * @param _extraOptions Additional options passed by the caller.\n     * @return options The combination of caller specified options AND enforced options.\n     */\n    function combineOptions(\n        uint32 _eid,\n        uint16 _msgType,\n        bytes calldata _extraOptions\n    ) external view returns (bytes memory options);\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport { ILayerZeroReceiver, Origin } from \"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\";\n\ninterface IOAppReceiver is ILayerZeroReceiver {\n    /**\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\n     * @param _origin The origin information containing the source endpoint and sender address.\n     *  - srcEid: The source chain endpoint ID.\n     *  - sender: The sender address on the src chain.\n     *  - nonce: The nonce of the message.\n     * @param _message The lzReceive payload.\n     * @param _sender The sender address.\n     * @return isSender Is a valid sender.\n     *\n     * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\n     * @dev The default sender IS the OAppReceiver implementer.\n     */\n    function isComposeMsgSender(\n        Origin calldata _origin,\n        bytes calldata _message,\n        address _sender\n    ) external view returns (bool isSender);\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { Ownable } from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport { IOAppOptionsType3, EnforcedOptionParam } from \"../interfaces/IOAppOptionsType3.sol\";\n\n/**\n * @title OAppOptionsType3\n * @dev Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.\n */\nabstract contract OAppOptionsType3 is IOAppOptionsType3, Ownable {\n    uint16 internal constant OPTION_TYPE_3 = 3;\n\n    // @dev The \"msgType\" should be defined in the child contract.\n    mapping(uint32 eid => mapping(uint16 msgType => bytes enforcedOption)) public enforcedOptions;\n\n    /**\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\n     *\n     * @dev Only the owner/admin of the OApp can call this function.\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\n     */\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) public virtual onlyOwner {\n        _setEnforcedOptions(_enforcedOptions);\n    }\n\n    /**\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\n     *\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\n     */\n    function _setEnforcedOptions(EnforcedOptionParam[] memory _enforcedOptions) internal virtual {\n        for (uint256 i = 0; i < _enforcedOptions.length; i++) {\n            // @dev Enforced options are only available for optionType 3, as type 1 and 2 dont support combining.\n            _assertOptionsType3(_enforcedOptions[i].options);\n            enforcedOptions[_enforcedOptions[i].eid][_enforcedOptions[i].msgType] = _enforcedOptions[i].options;\n        }\n\n        emit EnforcedOptionSet(_enforcedOptions);\n    }\n\n    /**\n     * @notice Combines options for a given endpoint and message type.\n     * @param _eid The endpoint ID.\n     * @param _msgType The OAPP message type.\n     * @param _extraOptions Additional options passed by the caller.\n     * @return options The combination of caller specified options AND enforced options.\n     *\n     * @dev If there is an enforced lzReceive option:\n     * - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether}\n     * - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.\n     * @dev This presence of duplicated options is handled off-chain in the verifier/executor.\n     */\n    function combineOptions(\n        uint32 _eid,\n        uint16 _msgType,\n        bytes calldata _extraOptions\n    ) public view virtual returns (bytes memory) {\n        bytes memory enforced = enforcedOptions[_eid][_msgType];\n\n        // No enforced options, pass whatever the caller supplied, even if it's empty or legacy type 1/2 options.\n        if (enforced.length == 0) return _extraOptions;\n\n        // No caller options, return enforced\n        if (_extraOptions.length == 0) return enforced;\n\n        // @dev If caller provided _extraOptions, must be type 3 as its the ONLY type that can be combined.\n        if (_extraOptions.length >= 2) {\n            _assertOptionsType3(_extraOptions);\n            // @dev Remove the first 2 bytes containing the type from the _extraOptions and combine with enforced.\n            return bytes.concat(enforced, _extraOptions[2:]);\n        }\n\n        // No valid set of options was found.\n        revert InvalidOptions(_extraOptions);\n    }\n\n    /**\n     * @dev Internal function to assert that options are of type 3.\n     * @param _options The options to be checked.\n     */\n    function _assertOptionsType3(bytes memory _options) internal pure virtual {\n        uint16 optionsType;\n        assembly {\n            optionsType := mload(add(_options, 2))\n        }\n        if (optionsType != OPTION_TYPE_3) revert InvalidOptions(_options);\n    }\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\n// @dev Import the 'MessagingFee' and 'MessagingReceipt' so it's exposed to OApp implementers\n// solhint-disable-next-line no-unused-import\nimport { OAppSender, MessagingFee, MessagingReceipt } from \"./OAppSender.sol\";\n// @dev Import the 'Origin' so it's exposed to OApp implementers\n// solhint-disable-next-line no-unused-import\nimport { OAppReceiver, Origin } from \"./OAppReceiver.sol\";\nimport { OAppCore } from \"./OAppCore.sol\";\n\n/**\n * @title OApp\n * @dev Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.\n */\nabstract contract OApp is OAppSender, OAppReceiver {\n    /**\n     * @dev Constructor to initialize the OApp with the provided endpoint and owner.\n     * @param _endpoint The address of the LOCAL LayerZero endpoint.\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\n     */\n    constructor(address _endpoint, address _delegate) OAppCore(_endpoint, _delegate) {}\n\n    /**\n     * @notice Retrieves the OApp version information.\n     * @return senderVersion The version of the OAppSender.sol implementation.\n     * @return receiverVersion The version of the OAppReceiver.sol implementation.\n     */\n    function oAppVersion()\n        public\n        pure\n        virtual\n        override(OAppSender, OAppReceiver)\n        returns (uint64 senderVersion, uint64 receiverVersion)\n    {\n        return (SENDER_VERSION, RECEIVER_VERSION);\n    }\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { Ownable } from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport { IOAppCore, ILayerZeroEndpointV2 } from \"./interfaces/IOAppCore.sol\";\n\n/**\n * @title OAppCore\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\n */\nabstract contract OAppCore is IOAppCore, Ownable {\n    // The LayerZero endpoint associated with the given OApp\n    ILayerZeroEndpointV2 public immutable endpoint;\n\n    // Mapping to store peers associated with corresponding endpoints\n    mapping(uint32 eid => bytes32 peer) public peers;\n\n    /**\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\n     *\n     * @dev The delegate typically should be set as the owner of the contract.\n     */\n    constructor(address _endpoint, address _delegate) {\n        endpoint = ILayerZeroEndpointV2(_endpoint);\n\n        if (_delegate == address(0)) revert InvalidDelegate();\n        endpoint.setDelegate(_delegate);\n    }\n\n    /**\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\n     * @param _eid The endpoint ID.\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\n     *\n     * @dev Only the owner/admin of the OApp can call this function.\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\n     * @dev Set this to bytes32(0) to remove the peer address.\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\n     */\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\n        _setPeer(_eid, _peer);\n    }\n\n    /**\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\n     * @param _eid The endpoint ID.\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\n     *\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\n     * @dev Set this to bytes32(0) to remove the peer address.\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\n     */\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\n        peers[_eid] = _peer;\n        emit PeerSet(_eid, _peer);\n    }\n\n    /**\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\n     * ie. the peer is set to bytes32(0).\n     * @param _eid The endpoint ID.\n     * @return peer The address of the peer associated with the specified endpoint.\n     */\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\n        bytes32 peer = peers[_eid];\n        if (peer == bytes32(0)) revert NoPeer(_eid);\n        return peer;\n    }\n\n    /**\n     * @notice Sets the delegate address for the OApp.\n     * @param _delegate The address of the delegate to be set.\n     *\n     * @dev Only the owner/admin of the OApp can call this function.\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\n     */\n    function setDelegate(address _delegate) public onlyOwner {\n        endpoint.setDelegate(_delegate);\n    }\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { IOAppReceiver, Origin } from \"./interfaces/IOAppReceiver.sol\";\nimport { OAppCore } from \"./OAppCore.sol\";\n\n/**\n * @title OAppReceiver\n * @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\n */\nabstract contract OAppReceiver is IOAppReceiver, OAppCore {\n    // Custom error message for when the caller is not the registered endpoint/\n    error OnlyEndpoint(address addr);\n\n    // @dev The version of the OAppReceiver implementation.\n    // @dev Version is bumped when changes are made to this contract.\n    uint64 internal constant RECEIVER_VERSION = 2;\n\n    /**\n     * @notice Retrieves the OApp version information.\n     * @return senderVersion The version of the OAppSender.sol contract.\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\n     *\n     * @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.\n     * ie. this is a RECEIVE only OApp.\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\n     */\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\n        return (0, RECEIVER_VERSION);\n    }\n\n    /**\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\n     * @dev _origin The origin information containing the source endpoint and sender address.\n     *  - srcEid: The source chain endpoint ID.\n     *  - sender: The sender address on the src chain.\n     *  - nonce: The nonce of the message.\n     * @dev _message The lzReceive payload.\n     * @param _sender The sender address.\n     * @return isSender Is a valid sender.\n     *\n     * @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.\n     * @dev The default sender IS the OAppReceiver implementer.\n     */\n    function isComposeMsgSender(\n        Origin calldata /*_origin*/,\n        bytes calldata /*_message*/,\n        address _sender\n    ) public view virtual returns (bool) {\n        return _sender == address(this);\n    }\n\n    /**\n     * @notice Checks if the path initialization is allowed based on the provided origin.\n     * @param origin The origin information containing the source endpoint and sender address.\n     * @return Whether the path has been initialized.\n     *\n     * @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.\n     * @dev This defaults to assuming if a peer has been set, its initialized.\n     * Can be overridden by the OApp if there is other logic to determine this.\n     */\n    function allowInitializePath(Origin calldata origin) public view virtual returns (bool) {\n        return peers[origin.srcEid] == origin.sender;\n    }\n\n    /**\n     * @notice Retrieves the next nonce for a given source endpoint and sender address.\n     * @dev _srcEid The source endpoint ID.\n     * @dev _sender The sender address.\n     * @return nonce The next nonce.\n     *\n     * @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.\n     * @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.\n     * @dev This is also enforced by the OApp.\n     * @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\n     */\n    function nextNonce(uint32 /*_srcEid*/, bytes32 /*_sender*/) public view virtual returns (uint64 nonce) {\n        return 0;\n    }\n\n    /**\n     * @dev Entry point for receiving messages or packets from the endpoint.\n     * @param _origin The origin information containing the source endpoint and sender address.\n     *  - srcEid: The source chain endpoint ID.\n     *  - sender: The sender address on the src chain.\n     *  - nonce: The nonce of the message.\n     * @param _guid The unique identifier for the received LayerZero message.\n     * @param _message The payload of the received message.\n     * @param _executor The address of the executor for the received message.\n     * @param _extraData Additional arbitrary data provided by the corresponding executor.\n     *\n     * @dev Entry point for receiving msg/packet from the LayerZero endpoint.\n     */\n    function lzReceive(\n        Origin calldata _origin,\n        bytes32 _guid,\n        bytes calldata _message,\n        address _executor,\n        bytes calldata _extraData\n    ) public payable virtual {\n        // Ensures that only the endpoint can attempt to lzReceive() messages to this OApp.\n        if (address(endpoint) != msg.sender) revert OnlyEndpoint(msg.sender);\n\n        // Ensure that the sender matches the expected peer for the source endpoint.\n        if (_getPeerOrRevert(_origin.srcEid) != _origin.sender) revert OnlyPeer(_origin.srcEid, _origin.sender);\n\n        // Call the internal OApp implementation of lzReceive.\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\n    }\n\n    /**\n     * @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation.\n     */\n    function _lzReceive(\n        Origin calldata _origin,\n        bytes32 _guid,\n        bytes calldata _message,\n        address _executor,\n        bytes calldata _extraData\n    ) internal virtual;\n}\n"},"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { SafeERC20, IERC20 } from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport { MessagingParams, MessagingFee, MessagingReceipt } from \"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\";\nimport { OAppCore } from \"./OAppCore.sol\";\n\n/**\n * @title OAppSender\n * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\n */\nabstract contract OAppSender is OAppCore {\n    using SafeERC20 for IERC20;\n\n    // Custom error messages\n    error NotEnoughNative(uint256 msgValue);\n    error LzTokenUnavailable();\n\n    // @dev The version of the OAppSender implementation.\n    // @dev Version is bumped when changes are made to this contract.\n    uint64 internal constant SENDER_VERSION = 1;\n\n    /**\n     * @notice Retrieves the OApp version information.\n     * @return senderVersion The version of the OAppSender.sol contract.\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\n     *\n     * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\n     * ie. this is a SEND only OApp.\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\n     */\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\n        return (SENDER_VERSION, 0);\n    }\n\n    /**\n     * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\n     * @param _dstEid The destination endpoint ID.\n     * @param _message The message payload.\n     * @param _options Additional options for the message.\n     * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\n     * @return fee The calculated MessagingFee for the message.\n     *      - nativeFee: The native fee for the message.\n     *      - lzTokenFee: The LZ token fee for the message.\n     */\n    function _quote(\n        uint32 _dstEid,\n        bytes memory _message,\n        bytes memory _options,\n        bool _payInLzToken\n    ) internal view virtual returns (MessagingFee memory fee) {\n        return\n            endpoint.quote(\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),\n                address(this)\n            );\n    }\n\n    /**\n     * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\n     * @param _dstEid The destination endpoint ID.\n     * @param _message The message payload.\n     * @param _options Additional options for the message.\n     * @param _fee The calculated LayerZero fee for the message.\n     *      - nativeFee: The native fee.\n     *      - lzTokenFee: The lzToken fee.\n     * @param _refundAddress The address to receive any excess fee values sent to the endpoint.\n     * @return receipt The receipt for the sent message.\n     *      - guid: The unique identifier for the sent message.\n     *      - nonce: The nonce of the sent message.\n     *      - fee: The LayerZero fee incurred for the message.\n     */\n    function _lzSend(\n        uint32 _dstEid,\n        bytes memory _message,\n        bytes memory _options,\n        MessagingFee memory _fee,\n        address _refundAddress\n    ) internal virtual returns (MessagingReceipt memory receipt) {\n        // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.\n        uint256 messageValue = _payNative(_fee.nativeFee);\n        if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);\n\n        return\n            // solhint-disable-next-line check-send-result\n            endpoint.send{ value: messageValue }(\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),\n                _refundAddress\n            );\n    }\n\n    /**\n     * @dev Internal function to pay the native fee associated with the message.\n     * @param _nativeFee The native fee to be paid.\n     * @return nativeFee The amount of native currency paid.\n     *\n     * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\n     * this will need to be overridden because msg.value would contain multiple lzFees.\n     * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\n     * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\n     * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.\n     */\n    function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {\n        if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);\n        return _nativeFee;\n    }\n\n    /**\n     * @dev Internal function to pay the LZ token fee associated with the message.\n     * @param _lzTokenFee The LZ token fee to be paid.\n     *\n     * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\n     * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().\n     */\n    function _payLzToken(uint256 _lzTokenFee) internal virtual {\n        // @dev Cannot cache the token because it is not immutable in the endpoint.\n        address lzToken = endpoint.lzToken();\n        if (lzToken == address(0)) revert LzTokenUnavailable();\n\n        // Pay LZ token fee by sending tokens to the endpoint.\n        IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);\n    }\n}\n"},"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\n// @dev Import the Origin so it's exposed to OAppPreCrimeSimulator implementers.\n// solhint-disable-next-line no-unused-import\nimport { InboundPacket, Origin } from \"../libs/Packet.sol\";\n\n/**\n * @title IOAppPreCrimeSimulator Interface\n * @dev Interface for the preCrime simulation functionality in an OApp.\n */\ninterface IOAppPreCrimeSimulator {\n    // @dev simulation result used in PreCrime implementation\n    error SimulationResult(bytes result);\n    error OnlySelf();\n\n    /**\n     * @dev Emitted when the preCrime contract address is set.\n     * @param preCrimeAddress The address of the preCrime contract.\n     */\n    event PreCrimeSet(address preCrimeAddress);\n\n    /**\n     * @dev Retrieves the address of the preCrime contract implementation.\n     * @return The address of the preCrime contract.\n     */\n    function preCrime() external view returns (address);\n\n    /**\n     * @dev Retrieves the address of the OApp contract.\n     * @return The address of the OApp contract.\n     */\n    function oApp() external view returns (address);\n\n    /**\n     * @dev Sets the preCrime contract address.\n     * @param _preCrime The address of the preCrime contract.\n     */\n    function setPreCrime(address _preCrime) external;\n\n    /**\n     * @dev Mocks receiving a packet, then reverts with a series of data to infer the state/result.\n     * @param _packets An array of LayerZero InboundPacket objects representing received packets.\n     */\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) external payable;\n\n    /**\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\n     * @param _eid The endpoint Id to check.\n     * @param _peer The peer to check.\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\n     */\n    function isPeer(uint32 _eid, bytes32 _peer) external view returns (bool);\n}\n"},"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\nstruct PreCrimePeer {\n    uint32 eid;\n    bytes32 preCrime;\n    bytes32 oApp;\n}\n\n// TODO not done yet\ninterface IPreCrime {\n    error OnlyOffChain();\n\n    // for simulate()\n    error PacketOversize(uint256 max, uint256 actual);\n    error PacketUnsorted();\n    error SimulationFailed(bytes reason);\n\n    // for preCrime()\n    error SimulationResultNotFound(uint32 eid);\n    error InvalidSimulationResult(uint32 eid, bytes reason);\n    error CrimeFound(bytes crime);\n\n    function getConfig(bytes[] calldata _packets, uint256[] calldata _packetMsgValues) external returns (bytes memory);\n\n    function simulate(\n        bytes[] calldata _packets,\n        uint256[] calldata _packetMsgValues\n    ) external payable returns (bytes memory);\n\n    function buildSimulationResult() external view returns (bytes memory);\n\n    function preCrime(\n        bytes[] calldata _packets,\n        uint256[] calldata _packetMsgValues,\n        bytes[] calldata _simulations\n    ) external;\n\n    function version() external view returns (uint64 major, uint8 minor);\n}\n"},"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { Origin } from \"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\";\nimport { PacketV1Codec } from \"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\";\n\n/**\n * @title InboundPacket\n * @dev Structure representing an inbound packet received by the contract.\n */\nstruct InboundPacket {\n    Origin origin; // Origin information of the packet.\n    uint32 dstEid; // Destination endpointId of the packet.\n    address receiver; // Receiver address for the packet.\n    bytes32 guid; // Unique identifier of the packet.\n    uint256 value; // msg.value of the packet.\n    address executor; // Executor address for the packet.\n    bytes message; // Message payload of the packet.\n    bytes extraData; // Additional arbitrary data for the packet.\n}\n\n/**\n * @title PacketDecoder\n * @dev Library for decoding LayerZero packets.\n */\nlibrary PacketDecoder {\n    using PacketV1Codec for bytes;\n\n    /**\n     * @dev Decode an inbound packet from the given packet data.\n     * @param _packet The packet data to decode.\n     * @return packet An InboundPacket struct representing the decoded packet.\n     */\n    function decode(bytes calldata _packet) internal pure returns (InboundPacket memory packet) {\n        packet.origin = Origin(_packet.srcEid(), _packet.sender(), _packet.nonce());\n        packet.dstEid = _packet.dstEid();\n        packet.receiver = _packet.receiverB20();\n        packet.guid = _packet.guid();\n        packet.message = _packet.message();\n    }\n\n    /**\n     * @dev Decode multiple inbound packets from the given packet data and associated message values.\n     * @param _packets An array of packet data to decode.\n     * @param _packetMsgValues An array of associated message values for each packet.\n     * @return packets An array of InboundPacket structs representing the decoded packets.\n     */\n    function decode(\n        bytes[] calldata _packets,\n        uint256[] memory _packetMsgValues\n    ) internal pure returns (InboundPacket[] memory packets) {\n        packets = new InboundPacket[](_packets.length);\n        for (uint256 i = 0; i < _packets.length; i++) {\n            bytes calldata packet = _packets[i];\n            packets[i] = PacketDecoder.decode(packet);\n            // @dev Allows the verifier to specify the msg.value that gets passed in lzReceive.\n            packets[i].value = _packetMsgValues[i];\n        }\n    }\n}\n"},"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { Ownable } from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport { IPreCrime } from \"./interfaces/IPreCrime.sol\";\nimport { IOAppPreCrimeSimulator, InboundPacket, Origin } from \"./interfaces/IOAppPreCrimeSimulator.sol\";\n\n/**\n * @title OAppPreCrimeSimulator\n * @dev Abstract contract serving as the base for preCrime simulation functionality in an OApp.\n */\nabstract contract OAppPreCrimeSimulator is IOAppPreCrimeSimulator, Ownable {\n    // The address of the preCrime implementation.\n    address public preCrime;\n\n    /**\n     * @dev Retrieves the address of the OApp contract.\n     * @return The address of the OApp contract.\n     *\n     * @dev The simulator contract is the base contract for the OApp by default.\n     * @dev If the simulator is a separate contract, override this function.\n     */\n    function oApp() external view virtual returns (address) {\n        return address(this);\n    }\n\n    /**\n     * @dev Sets the preCrime contract address.\n     * @param _preCrime The address of the preCrime contract.\n     */\n    function setPreCrime(address _preCrime) public virtual onlyOwner {\n        preCrime = _preCrime;\n        emit PreCrimeSet(_preCrime);\n    }\n\n    /**\n     * @dev Interface for pre-crime simulations. Always reverts at the end with the simulation results.\n     * @param _packets An array of InboundPacket objects representing received packets to be delivered.\n     *\n     * @dev WARNING: MUST revert at the end with the simulation results.\n     * @dev Gives the preCrime implementation the ability to mock sending packets to the lzReceive function,\n     * WITHOUT actually executing them.\n     */\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) public payable virtual {\n        for (uint256 i = 0; i < _packets.length; i++) {\n            InboundPacket calldata packet = _packets[i];\n\n            // Ignore packets that are not from trusted peers.\n            if (!isPeer(packet.origin.srcEid, packet.origin.sender)) continue;\n\n            // @dev Because a verifier is calling this function, it doesnt have access to executor params:\n            //  - address _executor\n            //  - bytes calldata _extraData\n            // preCrime will NOT work for OApps that rely on these two parameters inside of their _lzReceive().\n            // They are instead stubbed to default values, address(0) and bytes(\"\")\n            // @dev Calling this.lzReceiveSimulate removes ability for assembly return 0 callstack exit,\n            // which would cause the revert to be ignored.\n            this.lzReceiveSimulate{ value: packet.value }(\n                packet.origin,\n                packet.guid,\n                packet.message,\n                packet.executor,\n                packet.extraData\n            );\n        }\n\n        // @dev Revert with the simulation results. msg.sender must implement IPreCrime.buildSimulationResult().\n        revert SimulationResult(IPreCrime(msg.sender).buildSimulationResult());\n    }\n\n    /**\n     * @dev Is effectively an internal function because msg.sender must be address(this).\n     * Allows resetting the call stack for 'internal' calls.\n     * @param _origin The origin information containing the source endpoint and sender address.\n     *  - srcEid: The source chain endpoint ID.\n     *  - sender: The sender address on the src chain.\n     *  - nonce: The nonce of the message.\n     * @param _guid The unique identifier of the packet.\n     * @param _message The message payload of the packet.\n     * @param _executor The executor address for the packet.\n     * @param _extraData Additional data for the packet.\n     */\n    function lzReceiveSimulate(\n        Origin calldata _origin,\n        bytes32 _guid,\n        bytes calldata _message,\n        address _executor,\n        bytes calldata _extraData\n    ) external payable virtual {\n        // @dev Ensure ONLY can be called 'internally'.\n        if (msg.sender != address(this)) revert OnlySelf();\n        _lzReceiveSimulate(_origin, _guid, _message, _executor, _extraData);\n    }\n\n    /**\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\n     * @param _origin The origin information.\n     *  - srcEid: The source chain endpoint ID.\n     *  - sender: The sender address from the src chain.\n     *  - nonce: The nonce of the LayerZero message.\n     * @param _guid The GUID of the LayerZero message.\n     * @param _message The LayerZero message.\n     * @param _executor The address of the off-chain executor.\n     * @param _extraData Arbitrary data passed by the msg executor.\n     *\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\n     */\n    function _lzReceiveSimulate(\n        Origin calldata _origin,\n        bytes32 _guid,\n        bytes calldata _message,\n        address _executor,\n        bytes calldata _extraData\n    ) internal virtual;\n\n    /**\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\n     * @param _eid The endpoint Id to check.\n     * @param _peer The peer to check.\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\n     */\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual returns (bool);\n}\n"},"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { MessagingReceipt, MessagingFee } from \"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\";\n\n/**\n * @dev Struct representing token parameters for the OFT send() operation.\n */\nstruct SendParam {\n    uint32 dstEid; // Destination endpoint ID.\n    bytes32 to; // Recipient address.\n    uint256 amountLD; // Amount to send in local decimals.\n    uint256 minAmountLD; // Minimum amount to send in local decimals.\n    bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.\n    bytes composeMsg; // The composed message for the send() operation.\n    bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.\n}\n\n/**\n * @dev Struct representing OFT limit information.\n * @dev These amounts can change dynamically and are up the specific oft implementation.\n */\nstruct OFTLimit {\n    uint256 minAmountLD; // Minimum amount in local decimals that can be sent to the recipient.\n    uint256 maxAmountLD; // Maximum amount in local decimals that can be sent to the recipient.\n}\n\n/**\n * @dev Struct representing OFT receipt information.\n */\nstruct OFTReceipt {\n    uint256 amountSentLD; // Amount of tokens ACTUALLY debited from the sender in local decimals.\n    // @dev In non-default implementations, the amountReceivedLD COULD differ from this value.\n    uint256 amountReceivedLD; // Amount of tokens to be received on the remote side.\n}\n\n/**\n * @dev Struct representing OFT fee details.\n * @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI.\n */\nstruct OFTFeeDetail {\n    int256 feeAmountLD; // Amount of the fee in local decimals.\n    string description; // Description of the fee.\n}\n\n/**\n * @title IOFT\n * @dev Interface for the OftChain (OFT) token.\n * @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\n * @dev This specific interface ID is '0x02e49c2c'.\n */\ninterface IOFT {\n    // Custom error messages\n    error InvalidLocalDecimals();\n    error SlippageExceeded(uint256 amountLD, uint256 minAmountLD);\n\n    // Events\n    event OFTSent(\n        bytes32 indexed guid, // GUID of the OFT message.\n        uint32 dstEid, // Destination Endpoint ID.\n        address indexed fromAddress, // Address of the sender on the src chain.\n        uint256 amountSentLD, // Amount of tokens sent in local decimals.\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\n    );\n    event OFTReceived(\n        bytes32 indexed guid, // GUID of the OFT message.\n        uint32 srcEid, // Source Endpoint ID.\n        address indexed toAddress, // Address of the recipient on the dst chain.\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\n    );\n\n    /**\n     * @notice Retrieves interfaceID and the version of the OFT.\n     * @return interfaceId The interface ID.\n     * @return version The version.\n     *\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\n     */\n    function oftVersion() external view returns (bytes4 interfaceId, uint64 version);\n\n    /**\n     * @notice Retrieves the address of the token associated with the OFT.\n     * @return token The address of the ERC20 token implementation.\n     */\n    function token() external view returns (address);\n\n    /**\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\n     * @return requiresApproval Needs approval of the underlying token implementation.\n     *\n     * @dev Allows things like wallet implementers to determine integration requirements,\n     * without understanding the underlying token implementation.\n     */\n    function approvalRequired() external view returns (bool);\n\n    /**\n     * @notice Retrieves the shared decimals of the OFT.\n     * @return sharedDecimals The shared decimals of the OFT.\n     */\n    function sharedDecimals() external view returns (uint8);\n\n    /**\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\n     * @param _sendParam The parameters for the send operation.\n     * @return limit The OFT limit information.\n     * @return oftFeeDetails The details of OFT fees.\n     * @return receipt The OFT receipt information.\n     */\n    function quoteOFT(\n        SendParam calldata _sendParam\n    ) external view returns (OFTLimit memory, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory);\n\n    /**\n     * @notice Provides a quote for the send() operation.\n     * @param _sendParam The parameters for the send() operation.\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\n     * @return fee The calculated LayerZero messaging fee from the send() operation.\n     *\n     * @dev MessagingFee: LayerZero msg fee\n     *  - nativeFee: The native fee.\n     *  - lzTokenFee: The lzToken fee.\n     */\n    function quoteSend(SendParam calldata _sendParam, bool _payInLzToken) external view returns (MessagingFee memory);\n\n    /**\n     * @notice Executes the send() operation.\n     * @param _sendParam The parameters for the send operation.\n     * @param _fee The fee information supplied by the caller.\n     *      - nativeFee: The native fee.\n     *      - lzTokenFee: The lzToken fee.\n     * @param _refundAddress The address to receive any excess funds from fees etc. on the src.\n     * @return receipt The LayerZero messaging receipt from the send() operation.\n     * @return oftReceipt The OFT receipt information.\n     *\n     * @dev MessagingReceipt: LayerZero msg receipt\n     *  - guid: The unique identifier for the sent message.\n     *  - nonce: The nonce of the sent message.\n     *  - fee: The LayerZero fee incurred for the message.\n     */\n    function send(\n        SendParam calldata _sendParam,\n        MessagingFee calldata _fee,\n        address _refundAddress\n    ) external payable returns (MessagingReceipt memory, OFTReceipt memory);\n}\n"},"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nlibrary OFTComposeMsgCodec {\n    // Offset constants for decoding composed messages\n    uint8 private constant NONCE_OFFSET = 8;\n    uint8 private constant SRC_EID_OFFSET = 12;\n    uint8 private constant AMOUNT_LD_OFFSET = 44;\n    uint8 private constant COMPOSE_FROM_OFFSET = 76;\n\n    /**\n     * @dev Encodes a OFT composed message.\n     * @param _nonce The nonce value.\n     * @param _srcEid The source endpoint ID.\n     * @param _amountLD The amount in local decimals.\n     * @param _composeMsg The composed message.\n     * @return _msg The encoded Composed message.\n     */\n    function encode(\n        uint64 _nonce,\n        uint32 _srcEid,\n        uint256 _amountLD,\n        bytes memory _composeMsg // 0x[composeFrom][composeMsg]\n    ) internal pure returns (bytes memory _msg) {\n        _msg = abi.encodePacked(_nonce, _srcEid, _amountLD, _composeMsg);\n    }\n\n    /**\n     * @dev Retrieves the nonce for the composed message.\n     * @param _msg The message.\n     * @return The nonce value.\n     */\n    function nonce(bytes calldata _msg) internal pure returns (uint64) {\n        return uint64(bytes8(_msg[:NONCE_OFFSET]));\n    }\n\n    /**\n     * @dev Retrieves the source endpoint ID for the composed message.\n     * @param _msg The message.\n     * @return The source endpoint ID.\n     */\n    function srcEid(bytes calldata _msg) internal pure returns (uint32) {\n        return uint32(bytes4(_msg[NONCE_OFFSET:SRC_EID_OFFSET]));\n    }\n\n    /**\n     * @dev Retrieves the amount in local decimals from the composed message.\n     * @param _msg The message.\n     * @return The amount in local decimals.\n     */\n    function amountLD(bytes calldata _msg) internal pure returns (uint256) {\n        return uint256(bytes32(_msg[SRC_EID_OFFSET:AMOUNT_LD_OFFSET]));\n    }\n\n    /**\n     * @dev Retrieves the composeFrom value from the composed message.\n     * @param _msg The message.\n     * @return The composeFrom value.\n     */\n    function composeFrom(bytes calldata _msg) internal pure returns (bytes32) {\n        return bytes32(_msg[AMOUNT_LD_OFFSET:COMPOSE_FROM_OFFSET]);\n    }\n\n    /**\n     * @dev Retrieves the composed message.\n     * @param _msg The message.\n     * @return The composed message.\n     */\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\n        return _msg[COMPOSE_FROM_OFFSET:];\n    }\n\n    /**\n     * @dev Converts an address to bytes32.\n     * @param _addr The address to convert.\n     * @return The bytes32 representation of the address.\n     */\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\n        return bytes32(uint256(uint160(_addr)));\n    }\n\n    /**\n     * @dev Converts bytes32 to an address.\n     * @param _b The bytes32 value to convert.\n     * @return The address representation of bytes32.\n     */\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\n        return address(uint160(uint256(_b)));\n    }\n}\n"},"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nlibrary OFTMsgCodec {\n    // Offset constants for encoding and decoding OFT messages\n    uint8 private constant SEND_TO_OFFSET = 32;\n    uint8 private constant SEND_AMOUNT_SD_OFFSET = 40;\n\n    /**\n     * @dev Encodes an OFT LayerZero message.\n     * @param _sendTo The recipient address.\n     * @param _amountShared The amount in shared decimals.\n     * @param _composeMsg The composed message.\n     * @return _msg The encoded message.\n     * @return hasCompose A boolean indicating whether the message has a composed payload.\n     */\n    function encode(\n        bytes32 _sendTo,\n        uint64 _amountShared,\n        bytes memory _composeMsg\n    ) internal view returns (bytes memory _msg, bool hasCompose) {\n        hasCompose = _composeMsg.length > 0;\n        // @dev Remote chains will want to know the composed function caller ie. msg.sender on the src.\n        _msg = hasCompose\n            ? abi.encodePacked(_sendTo, _amountShared, addressToBytes32(msg.sender), _composeMsg)\n            : abi.encodePacked(_sendTo, _amountShared);\n    }\n\n    /**\n     * @dev Checks if the OFT message is composed.\n     * @param _msg The OFT message.\n     * @return A boolean indicating whether the message is composed.\n     */\n    function isComposed(bytes calldata _msg) internal pure returns (bool) {\n        return _msg.length > SEND_AMOUNT_SD_OFFSET;\n    }\n\n    /**\n     * @dev Retrieves the recipient address from the OFT message.\n     * @param _msg The OFT message.\n     * @return The recipient address.\n     */\n    function sendTo(bytes calldata _msg) internal pure returns (bytes32) {\n        return bytes32(_msg[:SEND_TO_OFFSET]);\n    }\n\n    /**\n     * @dev Retrieves the amount in shared decimals from the OFT message.\n     * @param _msg The OFT message.\n     * @return The amount in shared decimals.\n     */\n    function amountSD(bytes calldata _msg) internal pure returns (uint64) {\n        return uint64(bytes8(_msg[SEND_TO_OFFSET:SEND_AMOUNT_SD_OFFSET]));\n    }\n\n    /**\n     * @dev Retrieves the composed message from the OFT message.\n     * @param _msg The OFT message.\n     * @return The composed message.\n     */\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\n        return _msg[SEND_AMOUNT_SD_OFFSET:];\n    }\n\n    /**\n     * @dev Converts an address to bytes32.\n     * @param _addr The address to convert.\n     * @return The bytes32 representation of the address.\n     */\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\n        return bytes32(uint256(uint160(_addr)));\n    }\n\n    /**\n     * @dev Converts bytes32 to an address.\n     * @param _b The bytes32 value to convert.\n     * @return The address representation of bytes32.\n     */\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\n        return address(uint160(uint256(_b)));\n    }\n}\n"},"@layerzerolabs/oft-evm/contracts/OFT.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport { IOFT, OFTCore } from \"./OFTCore.sol\";\n\n/**\n * @title OFT Contract\n * @dev OFT is an ERC-20 token that extends the functionality of the OFTCore contract.\n */\nabstract contract OFT is OFTCore, ERC20 {\n    /**\n     * @dev Constructor for the OFT contract.\n     * @param _name The name of the OFT.\n     * @param _symbol The symbol of the OFT.\n     * @param _lzEndpoint The LayerZero endpoint address.\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\n     */\n    constructor(\n        string memory _name,\n        string memory _symbol,\n        address _lzEndpoint,\n        address _delegate\n    ) ERC20(_name, _symbol) OFTCore(decimals(), _lzEndpoint, _delegate) {}\n\n    /**\n     * @dev Retrieves the address of the underlying ERC20 implementation.\n     * @return The address of the OFT token.\n     *\n     * @dev In the case of OFT, address(this) and erc20 are the same contract.\n     */\n    function token() public view returns (address) {\n        return address(this);\n    }\n\n    /**\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\n     * @return requiresApproval Needs approval of the underlying token implementation.\n     *\n     * @dev In the case of OFT where the contract IS the token, approval is NOT required.\n     */\n    function approvalRequired() external pure virtual returns (bool) {\n        return false;\n    }\n\n    /**\n     * @dev Burns tokens from the sender's specified balance.\n     * @param _from The address to debit the tokens from.\n     * @param _amountLD The amount of tokens to send in local decimals.\n     * @param _minAmountLD The minimum amount to send in local decimals.\n     * @param _dstEid The destination chain ID.\n     * @return amountSentLD The amount sent in local decimals.\n     * @return amountReceivedLD The amount received in local decimals on the remote.\n     */\n    function _debit(\n        address _from,\n        uint256 _amountLD,\n        uint256 _minAmountLD,\n        uint32 _dstEid\n    ) internal virtual override returns (uint256 amountSentLD, uint256 amountReceivedLD) {\n        (amountSentLD, amountReceivedLD) = _debitView(_amountLD, _minAmountLD, _dstEid);\n\n        // @dev In NON-default OFT, amountSentLD could be 100, with a 10% fee, the amountReceivedLD amount is 90,\n        // therefore amountSentLD CAN differ from amountReceivedLD.\n\n        // @dev Default OFT burns on src.\n        _burn(_from, amountSentLD);\n    }\n\n    /**\n     * @dev Credits tokens to the specified address.\n     * @param _to The address to credit the tokens to.\n     * @param _amountLD The amount of tokens to credit in local decimals.\n     * @dev _srcEid The source chain ID.\n     * @return amountReceivedLD The amount of tokens ACTUALLY received in local decimals.\n     */\n    function _credit(\n        address _to,\n        uint256 _amountLD,\n        uint32 /*_srcEid*/\n    ) internal virtual override returns (uint256 amountReceivedLD) {\n        if (_to == address(0x0)) _to = address(0xdead); // _mint(...) does not support address(0x0)\n        // @dev Default OFT mints on dst.\n        _mint(_to, _amountLD);\n        // @dev In the case of NON-default OFT, the _amountLD MIGHT not be == amountReceivedLD.\n        return _amountLD;\n    }\n}\n"},"@layerzerolabs/oft-evm/contracts/OFTCore.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.20;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\nimport { OApp, Origin } from \"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\";\nimport { OAppOptionsType3 } from \"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\";\nimport { IOAppMsgInspector } from \"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\";\n\nimport { OAppPreCrimeSimulator } from \"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\";\n\nimport { IOFT, SendParam, OFTLimit, OFTReceipt, OFTFeeDetail, MessagingReceipt, MessagingFee } from \"./interfaces/IOFT.sol\";\nimport { OFTMsgCodec } from \"./libs/OFTMsgCodec.sol\";\nimport { OFTComposeMsgCodec } from \"./libs/OFTComposeMsgCodec.sol\";\n\n/**\n * @title OFTCore\n * @dev Abstract contract for the OftChain (OFT) token.\n */\nabstract contract OFTCore is IOFT, OApp, OAppPreCrimeSimulator, OAppOptionsType3 {\n    using OFTMsgCodec for bytes;\n    using OFTMsgCodec for bytes32;\n\n    // @notice Provides a conversion rate when swapping between denominations of SD and LD\n    //      - shareDecimals == SD == shared Decimals\n    //      - localDecimals == LD == local decimals\n    // @dev Considers that tokens have different decimal amounts on various chains.\n    // @dev eg.\n    //  For a token\n    //      - locally with 4 decimals --> 1.2345 => uint(12345)\n    //      - remotely with 2 decimals --> 1.23 => uint(123)\n    //      - The conversion rate would be 10 ** (4 - 2) = 100\n    //  @dev If you want to send 1.2345 -> (uint 12345), you CANNOT represent that value on the remote,\n    //  you can only display 1.23 -> uint(123).\n    //  @dev To preserve the dust that would otherwise be lost on that conversion,\n    //  we need to unify a denomination that can be represented on ALL chains inside of the OFT mesh\n    uint256 public immutable decimalConversionRate;\n\n    // @notice Msg types that are used to identify the various OFT operations.\n    // @dev This can be extended in child contracts for non-default oft operations\n    // @dev These values are used in things like combineOptions() in OAppOptionsType3.sol.\n    uint16 public constant SEND = 1;\n    uint16 public constant SEND_AND_CALL = 2;\n\n    // Address of an optional contract to inspect both 'message' and 'options'\n    address public msgInspector;\n    event MsgInspectorSet(address inspector);\n\n    /**\n     * @dev Constructor.\n     * @param _localDecimals The decimals of the token on the local chain (this chain).\n     * @param _endpoint The address of the LayerZero endpoint.\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\n     */\n    constructor(uint8 _localDecimals, address _endpoint, address _delegate) OApp(_endpoint, _delegate) {\n        if (_localDecimals < sharedDecimals()) revert InvalidLocalDecimals();\n        decimalConversionRate = 10 ** (_localDecimals - sharedDecimals());\n    }\n\n    /**\n     * @notice Retrieves interfaceID and the version of the OFT.\n     * @return interfaceId The interface ID.\n     * @return version The version.\n     *\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\n     */\n    function oftVersion() external pure virtual returns (bytes4 interfaceId, uint64 version) {\n        return (type(IOFT).interfaceId, 1);\n    }\n\n    /**\n     * @dev Retrieves the shared decimals of the OFT.\n     * @return The shared decimals of the OFT.\n     *\n     * @dev Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap\n     * Lowest common decimal denominator between chains.\n     * Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64).\n     * For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller.\n     * ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\n     */\n    function sharedDecimals() public view virtual returns (uint8) {\n        return 6;\n    }\n\n    /**\n     * @dev Sets the message inspector address for the OFT.\n     * @param _msgInspector The address of the message inspector.\n     *\n     * @dev This is an optional contract that can be used to inspect both 'message' and 'options'.\n     * @dev Set it to address(0) to disable it, or set it to a contract address to enable it.\n     */\n    function setMsgInspector(address _msgInspector) public virtual onlyOwner {\n        msgInspector = _msgInspector;\n        emit MsgInspectorSet(_msgInspector);\n    }\n\n    /**\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\n     * @param _sendParam The parameters for the send operation.\n     * @return oftLimit The OFT limit information.\n     * @return oftFeeDetails The details of OFT fees.\n     * @return oftReceipt The OFT receipt information.\n     */\n    function quoteOFT(\n        SendParam calldata _sendParam\n    )\n        external\n        view\n        virtual\n        returns (OFTLimit memory oftLimit, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory oftReceipt)\n    {\n        uint256 minAmountLD = 0; // Unused in the default implementation.\n        uint256 maxAmountLD = IERC20(this.token()).totalSupply(); // Unused in the default implementation.\n        oftLimit = OFTLimit(minAmountLD, maxAmountLD);\n\n        // Unused in the default implementation; reserved for future complex fee details.\n        oftFeeDetails = new OFTFeeDetail[](0);\n\n        // @dev This is the same as the send() operation, but without the actual send.\n        // - amountSentLD is the amount in local decimals that would be sent from the sender.\n        // - amountReceivedLD is the amount in local decimals that will be credited to the recipient on the remote OFT instance.\n        // @dev The amountSentLD MIGHT not equal the amount the user actually receives. HOWEVER, the default does.\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debitView(\n            _sendParam.amountLD,\n            _sendParam.minAmountLD,\n            _sendParam.dstEid\n        );\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\n    }\n\n    /**\n     * @notice Provides a quote for the send() operation.\n     * @param _sendParam The parameters for the send() operation.\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\n     * @return msgFee The calculated LayerZero messaging fee from the send() operation.\n     *\n     * @dev MessagingFee: LayerZero msg fee\n     *  - nativeFee: The native fee.\n     *  - lzTokenFee: The lzToken fee.\n     */\n    function quoteSend(\n        SendParam calldata _sendParam,\n        bool _payInLzToken\n    ) external view virtual returns (MessagingFee memory msgFee) {\n        // @dev mock the amount to receive, this is the same operation used in the send().\n        // The quote is as similar as possible to the actual send() operation.\n        (, uint256 amountReceivedLD) = _debitView(_sendParam.amountLD, _sendParam.minAmountLD, _sendParam.dstEid);\n\n        // @dev Builds the options and OFT message to quote in the endpoint.\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\n\n        // @dev Calculates the LayerZero fee for the send() operation.\n        return _quote(_sendParam.dstEid, message, options, _payInLzToken);\n    }\n\n    /**\n     * @dev Executes the send operation.\n     * @param _sendParam The parameters for the send operation.\n     * @param _fee The calculated fee for the send() operation.\n     *      - nativeFee: The native fee.\n     *      - lzTokenFee: The lzToken fee.\n     * @param _refundAddress The address to receive any excess funds.\n     * @return msgReceipt The receipt for the send operation.\n     * @return oftReceipt The OFT receipt information.\n     *\n     * @dev MessagingReceipt: LayerZero msg receipt\n     *  - guid: The unique identifier for the sent message.\n     *  - nonce: The nonce of the sent message.\n     *  - fee: The LayerZero fee incurred for the message.\n     */\n    function send(\n        SendParam calldata _sendParam,\n        MessagingFee calldata _fee,\n        address _refundAddress\n    ) external payable virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\n        return _send(_sendParam, _fee, _refundAddress);\n    }\n\n    /**\n     * @dev Internal function to execute the send operation.\n     * @param _sendParam The parameters for the send operation.\n     * @param _fee The calculated fee for the send() operation.\n     *      - nativeFee: The native fee.\n     *      - lzTokenFee: The lzToken fee.\n     * @param _refundAddress The address to receive any excess funds.\n     * @return msgReceipt The receipt for the send operation.\n     * @return oftReceipt The OFT receipt information.\n     *\n     * @dev MessagingReceipt: LayerZero msg receipt\n     *  - guid: The unique identifier for the sent message.\n     *  - nonce: The nonce of the sent message.\n     *  - fee: The LayerZero fee incurred for the message.\n     */\n    function _send(\n        SendParam calldata _sendParam,\n        MessagingFee calldata _fee,\n        address _refundAddress\n    ) internal virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\n        // @dev Applies the token transfers regarding this send() operation.\n        // - amountSentLD is the amount in local decimals that was ACTUALLY sent/debited from the sender.\n        // - amountReceivedLD is the amount in local decimals that will be received/credited to the recipient on the remote OFT instance.\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debit(\n            msg.sender,\n            _sendParam.amountLD,\n            _sendParam.minAmountLD,\n            _sendParam.dstEid\n        );\n\n        // @dev Builds the options and OFT message to quote in the endpoint.\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\n\n        // @dev Sends the message to the LayerZero endpoint and returns the LayerZero msg receipt.\n        msgReceipt = _lzSend(_sendParam.dstEid, message, options, _fee, _refundAddress);\n        // @dev Formulate the OFT receipt.\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\n\n        emit OFTSent(msgReceipt.guid, _sendParam.dstEid, msg.sender, amountSentLD, amountReceivedLD);\n    }\n\n    /**\n     * @dev Internal function to build the message and options.\n     * @param _sendParam The parameters for the send() operation.\n     * @param _amountLD The amount in local decimals.\n     * @return message The encoded message.\n     * @return options The encoded options.\n     */\n    function _buildMsgAndOptions(\n        SendParam calldata _sendParam,\n        uint256 _amountLD\n    ) internal view virtual returns (bytes memory message, bytes memory options) {\n        bool hasCompose;\n        // @dev This generated message has the msg.sender encoded into the payload so the remote knows who the caller is.\n        (message, hasCompose) = OFTMsgCodec.encode(\n            _sendParam.to,\n            _toSD(_amountLD),\n            // @dev Must be include a non empty bytes if you want to compose, EVEN if you dont need it on the remote.\n            // EVEN if you dont require an arbitrary payload to be sent... eg. '0x01'\n            _sendParam.composeMsg\n        );\n        // @dev Change the msg type depending if its composed or not.\n        uint16 msgType = hasCompose ? SEND_AND_CALL : SEND;\n        // @dev Combine the callers _extraOptions with the enforced options via the OAppOptionsType3.\n        options = combineOptions(_sendParam.dstEid, msgType, _sendParam.extraOptions);\n\n        // @dev Optionally inspect the message and options depending if the OApp owner has set a msg inspector.\n        // @dev If it fails inspection, needs to revert in the implementation. ie. does not rely on return boolean\n        address inspector = msgInspector; // caches the msgInspector to avoid potential double storage read\n        if (inspector != address(0)) IOAppMsgInspector(inspector).inspect(message, options);\n    }\n\n    /**\n     * @dev Internal function to handle the receive on the LayerZero endpoint.\n     * @param _origin The origin information.\n     *  - srcEid: The source chain endpoint ID.\n     *  - sender: The sender address from the src chain.\n     *  - nonce: The nonce of the LayerZero message.\n     * @param _guid The unique identifier for the received LayerZero message.\n     * @param _message The encoded message.\n     * @dev _executor The address of the executor.\n     * @dev _extraData Additional data.\n     */\n    function _lzReceive(\n        Origin calldata _origin,\n        bytes32 _guid,\n        bytes calldata _message,\n        address /*_executor*/, // @dev unused in the default implementation.\n        bytes calldata /*_extraData*/ // @dev unused in the default implementation.\n    ) internal virtual override {\n        // @dev The src sending chain doesnt know the address length on this chain (potentially non-evm)\n        // Thus everything is bytes32() encoded in flight.\n        address toAddress = _message.sendTo().bytes32ToAddress();\n        // @dev Credit the amountLD to the recipient and return the ACTUAL amount the recipient received in local decimals\n        uint256 amountReceivedLD = _credit(toAddress, _toLD(_message.amountSD()), _origin.srcEid);\n\n        if (_message.isComposed()) {\n            // @dev Proprietary composeMsg format for the OFT.\n            bytes memory composeMsg = OFTComposeMsgCodec.encode(\n                _origin.nonce,\n                _origin.srcEid,\n                amountReceivedLD,\n                _message.composeMsg()\n            );\n\n            // @dev Stores the lzCompose payload that will be executed in a separate tx.\n            // Standardizes functionality for executing arbitrary contract invocation on some non-evm chains.\n            // @dev The off-chain executor will listen and process the msg based on the src-chain-callers compose options passed.\n            // @dev The index is used when a OApp needs to compose multiple msgs on lzReceive.\n            // For default OFT implementation there is only 1 compose msg per lzReceive, thus its always 0.\n            endpoint.sendCompose(toAddress, _guid, 0 /* the index of the composed message*/, composeMsg);\n        }\n\n        emit OFTReceived(_guid, _origin.srcEid, toAddress, amountReceivedLD);\n    }\n\n    /**\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\n     * @param _origin The origin information.\n     *  - srcEid: The source chain endpoint ID.\n     *  - sender: The sender address from the src chain.\n     *  - nonce: The nonce of the LayerZero message.\n     * @param _guid The unique identifier for the received LayerZero message.\n     * @param _message The LayerZero message.\n     * @param _executor The address of the off-chain executor.\n     * @param _extraData Arbitrary data passed by the msg executor.\n     *\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\n     */\n    function _lzReceiveSimulate(\n        Origin calldata _origin,\n        bytes32 _guid,\n        bytes calldata _message,\n        address _executor,\n        bytes calldata _extraData\n    ) internal virtual override {\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\n    }\n\n    /**\n     * @dev Check if the peer is considered 'trusted' by the OApp.\n     * @param _eid The endpoint ID to check.\n     * @param _peer The peer to check.\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\n     *\n     * @dev Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\n     */\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual override returns (bool) {\n        return peers[_eid] == _peer;\n    }\n\n    /**\n     * @dev Internal function to remove dust from the given local decimal amount.\n     * @param _amountLD The amount in local decimals.\n     * @return amountLD The amount after removing dust.\n     *\n     * @dev Prevents the loss of dust when moving amounts between chains with different decimals.\n     * @dev eg. uint(123) with a conversion rate of 100 becomes uint(100).\n     */\n    function _removeDust(uint256 _amountLD) internal view virtual returns (uint256 amountLD) {\n        return (_amountLD / decimalConversionRate) * decimalConversionRate;\n    }\n\n    /**\n     * @dev Internal function to convert an amount from shared decimals into local decimals.\n     * @param _amountSD The amount in shared decimals.\n     * @return amountLD The amount in local decimals.\n     */\n    function _toLD(uint64 _amountSD) internal view virtual returns (uint256 amountLD) {\n        return _amountSD * decimalConversionRate;\n    }\n\n    /**\n     * @dev Internal function to convert an amount from local decimals into shared decimals.\n     * @param _amountLD The amount in local decimals.\n     * @return amountSD The amount in shared decimals.\n     */\n    function _toSD(uint256 _amountLD) internal view virtual returns (uint64 amountSD) {\n        return uint64(_amountLD / decimalConversionRate);\n    }\n\n    /**\n     * @dev Internal function to mock the amount mutation from a OFT debit() operation.\n     * @param _amountLD The amount to send in local decimals.\n     * @param _minAmountLD The minimum amount to send in local decimals.\n     * @dev _dstEid The destination endpoint ID.\n     * @return amountSentLD The amount sent, in local decimals.\n     * @return amountReceivedLD The amount to be received on the remote chain, in local decimals.\n     *\n     * @dev This is where things like fees would be calculated and deducted from the amount to be received on the remote.\n     */\n    function _debitView(\n        uint256 _amountLD,\n        uint256 _minAmountLD,\n        uint32 /*_dstEid*/\n    ) internal view virtual returns (uint256 amountSentLD, uint256 amountReceivedLD) {\n        // @dev Remove the dust so nothing is lost on the conversion between chains with different decimals for the token.\n        amountSentLD = _removeDust(_amountLD);\n        // @dev The amount to send is the same as amount received in the default implementation.\n        amountReceivedLD = amountSentLD;\n\n        // @dev Check for slippage.\n        if (amountReceivedLD < _minAmountLD) {\n            revert SlippageExceeded(amountReceivedLD, _minAmountLD);\n        }\n    }\n\n    /**\n     * @dev Internal function to perform a debit operation.\n     * @param _from The address to debit.\n     * @param _amountLD The amount to send in local decimals.\n     * @param _minAmountLD The minimum amount to send in local decimals.\n     * @param _dstEid The destination endpoint ID.\n     * @return amountSentLD The amount sent in local decimals.\n     * @return amountReceivedLD The amount received in local decimals on the remote.\n     *\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\n     */\n    function _debit(\n        address _from,\n        uint256 _amountLD,\n        uint256 _minAmountLD,\n        uint32 _dstEid\n    ) internal virtual returns (uint256 amountSentLD, uint256 amountReceivedLD);\n\n    /**\n     * @dev Internal function to perform a credit operation.\n     * @param _to The address to credit.\n     * @param _amountLD The amount to credit in local decimals.\n     * @param _srcEid The source endpoint ID.\n     * @return amountReceivedLD The amount ACTUALLY received in local decimals.\n     *\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\n     */\n    function _credit(\n        address _to,\n        uint256 _amountLD,\n        uint32 _srcEid\n    ) internal virtual returns (uint256 amountReceivedLD);\n}\n"},"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    /**\n     * @dev The caller account is not authorized to perform an operation.\n     */\n    error OwnableUnauthorizedAccount(address account);\n\n    /**\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\n     */\n    error OwnableInvalidOwner(address owner);\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n     */\n    constructor(address initialOwner) {\n        if (initialOwner == address(0)) {\n            revert OwnableInvalidOwner(address(0));\n        }\n        _transferOwnership(initialOwner);\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        _checkOwner();\n        _;\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if the sender is not the owner.\n     */\n    function _checkOwner() internal view virtual {\n        if (owner() != _msgSender()) {\n            revert OwnableUnauthorizedAccount(_msgSender());\n        }\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby disabling any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        if (newOwner == address(0)) {\n            revert OwnableInvalidOwner(address(0));\n        }\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC20InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC20InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\n     * @param needed Minimum amount required to perform a transfer.\n     */\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC20InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n    /**\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n     * Used in balance queries.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721InvalidOwner(address owner);\n\n    /**\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721NonexistentToken(uint256 tokenId);\n\n    /**\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param tokenId Identifier number of a token.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC721InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC721InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC721InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n    /**\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     * @param balance Current balance for the interacting account.\n     * @param needed Minimum amount required to perform a transfer.\n     * @param tokenId Identifier number of a token.\n     */\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n    /**\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\n     * @param sender Address whose tokens are being transferred.\n     */\n    error ERC1155InvalidSender(address sender);\n\n    /**\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\n     * @param receiver Address to which tokens are being transferred.\n     */\n    error ERC1155InvalidReceiver(address receiver);\n\n    /**\n     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     * @param owner Address of the current owner of a token.\n     */\n    error ERC1155MissingApprovalForAll(address operator, address owner);\n\n    /**\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n     * @param approver Address initiating an approval operation.\n     */\n    error ERC1155InvalidApprover(address approver);\n\n    /**\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\n     */\n    error ERC1155InvalidOperator(address operator);\n\n    /**\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n     * Used in batch transfers.\n     * @param idsLength Length of the array of token identifiers\n     * @param valuesLength Length of the array of token amounts\n     */\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n"},"@openzeppelin/contracts/interfaces/IERC1271.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (interfaces/IERC1271.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-1271 standard signature validation method for\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\n */\ninterface IERC1271 {\n    /**\n     * @dev Should return whether the signature provided is valid for the provided data\n     * @param hash      Hash of the data to be signed\n     * @param signature Signature byte array associated with `hash`\n     */\n    function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\n}\n"},"@openzeppelin/contracts/interfaces/IERC1363.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @title IERC1363\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n *\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\n */\ninterface IERC1363 is IERC20, IERC165 {\n    /*\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\n     * 0xb0202a11 ===\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\n     */\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n     * @param to The address which you want to transfer to.\n     * @param value The amount of tokens to be transferred.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function transferAndCall(address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n     * @param to The address which you want to transfer to.\n     * @param value The amount of tokens to be transferred.\n     * @param data Additional data with no specified format, sent in call to `to`.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n     * @param from The address which you want to send tokens from.\n     * @param to The address which you want to transfer to.\n     * @param value The amount of tokens to be transferred.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n     * @param from The address which you want to send tokens from.\n     * @param to The address which you want to transfer to.\n     * @param value The amount of tokens to be transferred.\n     * @param data Additional data with no specified format, sent in call to `to`.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n     * @param spender The address which will spend the funds.\n     * @param value The amount of tokens to be spent.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function approveAndCall(address spender, uint256 value) external returns (bool);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n     * @param spender The address which will spend the funds.\n     * @param value The amount of tokens to be spent.\n     * @param data Additional data with no specified format, sent in call to `spender`.\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\n     */\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\n}\n"},"@openzeppelin/contracts/interfaces/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../utils/introspection/IERC165.sol\";\n"},"@openzeppelin/contracts/interfaces/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../token/ERC20/IERC20.sol\";\n"},"@openzeppelin/contracts/interfaces/IERC4906.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC4906.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"./IERC165.sol\";\nimport {IERC721} from \"./IERC721.sol\";\n\n/// @title ERC-721 Metadata Update Extension\ninterface IERC4906 is IERC165, IERC721 {\n    /// @dev This event emits when the metadata of a token is changed.\n    /// So that the third-party platforms such as NFT market could\n    /// timely update the images and related attributes of the NFT.\n    event MetadataUpdate(uint256 _tokenId);\n\n    /// @dev This event emits when the metadata of a range of tokens is changed.\n    /// So that the third-party platforms such as NFT market could\n    /// timely update the images and related attributes of the NFTs.\n    event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);\n}\n"},"@openzeppelin/contracts/interfaces/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721} from \"../token/ERC721/IERC721.sol\";\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n    mapping(address account => uint256) private _balances;\n\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n    uint256 private _totalSupply;\n\n    string private _name;\n    string private _symbol;\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * Both values are immutable: they can only be set once during construction.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the default value returned by this function, unless\n     * it's overridden.\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual returns (uint8) {\n        return 18;\n    }\n\n    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual returns (uint256) {\n        return _totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\n    function balanceOf(address account) public view virtual returns (uint256) {\n        return _balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - the caller must have a balance of at least `value`.\n     */\n    function transfer(address to, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _transfer(owner, to, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-allowance}.\n     */\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 value) public virtual returns (bool) {\n        address owner = _msgSender();\n        _approve(owner, spender, value);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Skips emitting an {Approval} event indicating an allowance update. This is not\n     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n     *\n     * NOTE: Does not update the allowance if the current allowance\n     * is the maximum `uint256`.\n     *\n     * Requirements:\n     *\n     * - `from` and `to` cannot be the zero address.\n     * - `from` must have a balance of at least `value`.\n     * - the caller must have allowance for ``from``'s tokens of at least\n     * `value`.\n     */\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n        address spender = _msgSender();\n        _spendAllowance(from, spender, value);\n        _transfer(from, to, value);\n        return true;\n    }\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\n     *\n     * This internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _transfer(address from, address to, uint256 value) internal {\n        if (from == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        if (to == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(from, to, value);\n    }\n\n    /**\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n     * this function.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _update(address from, address to, uint256 value) internal virtual {\n        if (from == address(0)) {\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\n            _totalSupply += value;\n        } else {\n            uint256 fromBalance = _balances[from];\n            if (fromBalance < value) {\n                revert ERC20InsufficientBalance(from, fromBalance, value);\n            }\n            unchecked {\n                // Overflow not possible: value <= fromBalance <= totalSupply.\n                _balances[from] = fromBalance - value;\n            }\n        }\n\n        if (to == address(0)) {\n            unchecked {\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n                _totalSupply -= value;\n            }\n        } else {\n            unchecked {\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n                _balances[to] += value;\n            }\n        }\n\n        emit Transfer(from, to, value);\n    }\n\n    /**\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n     * Relies on the `_update` mechanism\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\n     */\n    function _mint(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidReceiver(address(0));\n        }\n        _update(address(0), account, value);\n    }\n\n    /**\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n     * Relies on the `_update` mechanism.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * NOTE: This function is not virtual, {_update} should be overridden instead\n     */\n    function _burn(address account, uint256 value) internal {\n        if (account == address(0)) {\n            revert ERC20InvalidSender(address(0));\n        }\n        _update(account, address(0), value);\n    }\n\n    /**\n     * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     *\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n     */\n    function _approve(address owner, address spender, uint256 value) internal {\n        _approve(owner, spender, value, true);\n    }\n\n    /**\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n     *\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n     * `Approval` event during `transferFrom` operations.\n     *\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n     * true using the following override:\n     *\n     * ```solidity\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     *     super._approve(owner, spender, value, true);\n     * }\n     * ```\n     *\n     * Requirements are the same as {_approve}.\n     */\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n        if (owner == address(0)) {\n            revert ERC20InvalidApprover(address(0));\n        }\n        if (spender == address(0)) {\n            revert ERC20InvalidSpender(address(0));\n        }\n        _allowances[owner][spender] = value;\n        if (emitEvent) {\n            emit Approval(owner, spender, value);\n        }\n    }\n\n    /**\n     * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n     *\n     * Does not update the allowance value in case of infinite allowance.\n     * Revert if not enough allowance is available.\n     *\n     * Does not emit an {Approval} event.\n     */\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n        uint256 currentAllowance = allowance(owner, spender);\n        if (currentAllowance < type(uint256).max) {\n            if (currentAllowance < value) {\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n            }\n            unchecked {\n                _approve(owner, spender, currentAllowance - value, false);\n            }\n        }\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the decimals places of the token.\n     */\n    function decimals() external view returns (uint8);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n\n    /**\n     * @dev Returns the value of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the value of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\n     * allowance mechanism. `value` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\nimport {IERC1363} from \"../../../interfaces/IERC1363.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n    /**\n     * @dev An operation with an ERC-20 token failed.\n     */\n    error SafeERC20FailedOperation(address token);\n\n    /**\n     * @dev Indicates a failed `decreaseAllowance` request.\n     */\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\n\n    /**\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful.\n     */\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\n    }\n\n    /**\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n     */\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\n    }\n\n    /**\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\n     */\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\n    }\n\n    /**\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\n     */\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\n    }\n\n    /**\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful.\n     *\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n     * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n     */\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n        uint256 oldAllowance = token.allowance(address(this), spender);\n        forceApprove(token, spender, oldAllowance + value);\n    }\n\n    /**\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n     * value, non-reverting calls are assumed to be successful.\n     *\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n     * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n     */\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\n        unchecked {\n            uint256 currentAllowance = token.allowance(address(this), spender);\n            if (currentAllowance < requestedDecrease) {\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\n            }\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\n        }\n    }\n\n    /**\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n     * to be set to zero before setting it to a non-zero value, such as USDT.\n     *\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n     * only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n     * set here.\n     */\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\n\n        if (!_callOptionalReturnBool(token, approvalCall)) {\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\n            _callOptionalReturn(token, approvalCall);\n        }\n    }\n\n    /**\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n     * targeting contracts.\n     *\n     * Reverts if the returned value is other than `true`.\n     */\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n        if (to.code.length == 0) {\n            safeTransfer(token, to, value);\n        } else if (!token.transferAndCall(to, value, data)) {\n            revert SafeERC20FailedOperation(address(token));\n        }\n    }\n\n    /**\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n     * targeting contracts.\n     *\n     * Reverts if the returned value is other than `true`.\n     */\n    function transferFromAndCallRelaxed(\n        IERC1363 token,\n        address from,\n        address to,\n        uint256 value,\n        bytes memory data\n    ) internal {\n        if (to.code.length == 0) {\n            safeTransferFrom(token, from, to, value);\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\n            revert SafeERC20FailedOperation(address(token));\n        }\n    }\n\n    /**\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n     * targeting contracts.\n     *\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n     * once without retrying, and relies on the returned value to be true.\n     *\n     * Reverts if the returned value is other than `true`.\n     */\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n        if (to.code.length == 0) {\n            forceApprove(token, to, value);\n        } else if (!token.approveAndCall(to, value, data)) {\n            revert SafeERC20FailedOperation(address(token));\n        }\n    }\n\n    /**\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\n     * @param token The token targeted by the call.\n     * @param data The call data (encoded using abi.encode or one of its variants).\n     *\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\n     */\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\n        uint256 returnSize;\n        uint256 returnValue;\n        assembly (\"memory-safe\") {\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n            // bubble errors\n            if iszero(success) {\n                let ptr := mload(0x40)\n                returndatacopy(ptr, 0, returndatasize())\n                revert(ptr, returndatasize())\n            }\n            returnSize := returndatasize()\n            returnValue := mload(0)\n        }\n\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\n            revert SafeERC20FailedOperation(address(token));\n        }\n    }\n\n    /**\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\n     * @param token The token targeted by the call.\n     * @param data The call data (encoded using abi.encode or one of its variants).\n     *\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\n     */\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\n        bool success;\n        uint256 returnSize;\n        uint256 returnValue;\n        assembly (\"memory-safe\") {\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n            returnSize := returndatasize()\n            returnValue := mload(0)\n        }\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\n    }\n}\n"},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721} from \"./IERC721.sol\";\nimport {IERC721Metadata} from \"./extensions/IERC721Metadata.sol\";\nimport {ERC721Utils} from \"./utils/ERC721Utils.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {Strings} from \"../../utils/Strings.sol\";\nimport {IERC165, ERC165} from \"../../utils/introspection/ERC165.sol\";\nimport {IERC721Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\nabstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Errors {\n    using Strings for uint256;\n\n    // Token name\n    string private _name;\n\n    // Token symbol\n    string private _symbol;\n\n    mapping(uint256 tokenId => address) private _owners;\n\n    mapping(address owner => uint256) private _balances;\n\n    mapping(uint256 tokenId => address) private _tokenApprovals;\n\n    mapping(address owner => mapping(address operator => bool)) private _operatorApprovals;\n\n    /**\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n        return\n            interfaceId == type(IERC721).interfaceId ||\n            interfaceId == type(IERC721Metadata).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev See {IERC721-balanceOf}.\n     */\n    function balanceOf(address owner) public view virtual returns (uint256) {\n        if (owner == address(0)) {\n            revert ERC721InvalidOwner(address(0));\n        }\n        return _balances[owner];\n    }\n\n    /**\n     * @dev See {IERC721-ownerOf}.\n     */\n    function ownerOf(uint256 tokenId) public view virtual returns (address) {\n        return _requireOwned(tokenId);\n    }\n\n    /**\n     * @dev See {IERC721Metadata-name}.\n     */\n    function name() public view virtual returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-symbol}.\n     */\n    function symbol() public view virtual returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-tokenURI}.\n     */\n    function tokenURI(uint256 tokenId) public view virtual returns (string memory) {\n        _requireOwned(tokenId);\n\n        string memory baseURI = _baseURI();\n        return bytes(baseURI).length > 0 ? string.concat(baseURI, tokenId.toString()) : \"\";\n    }\n\n    /**\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n     * by default, can be overridden in child contracts.\n     */\n    function _baseURI() internal view virtual returns (string memory) {\n        return \"\";\n    }\n\n    /**\n     * @dev See {IERC721-approve}.\n     */\n    function approve(address to, uint256 tokenId) public virtual {\n        _approve(to, tokenId, _msgSender());\n    }\n\n    /**\n     * @dev See {IERC721-getApproved}.\n     */\n    function getApproved(uint256 tokenId) public view virtual returns (address) {\n        _requireOwned(tokenId);\n\n        return _getApproved(tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-setApprovalForAll}.\n     */\n    function setApprovalForAll(address operator, bool approved) public virtual {\n        _setApprovalForAll(_msgSender(), operator, approved);\n    }\n\n    /**\n     * @dev See {IERC721-isApprovedForAll}.\n     */\n    function isApprovedForAll(address owner, address operator) public view virtual returns (bool) {\n        return _operatorApprovals[owner][operator];\n    }\n\n    /**\n     * @dev See {IERC721-transferFrom}.\n     */\n    function transferFrom(address from, address to, uint256 tokenId) public virtual {\n        if (to == address(0)) {\n            revert ERC721InvalidReceiver(address(0));\n        }\n        // Setting an \"auth\" arguments enables the `_isAuthorized` check which verifies that the token exists\n        // (from != 0). Therefore, it is not needed to verify that the return value is not 0 here.\n        address previousOwner = _update(to, tokenId, _msgSender());\n        if (previousOwner != from) {\n            revert ERC721IncorrectOwner(from, tokenId, previousOwner);\n        }\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId) public {\n        safeTransferFrom(from, to, tokenId, \"\");\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual {\n        transferFrom(from, to, tokenId);\n        ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\n    }\n\n    /**\n     * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n     *\n     * IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n     * core ERC-721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n     * consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n     * `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`.\n     */\n    function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\n        return _owners[tokenId];\n    }\n\n    /**\n     * @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted.\n     */\n    function _getApproved(uint256 tokenId) internal view virtual returns (address) {\n        return _tokenApprovals[tokenId];\n    }\n\n    /**\n     * @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n     * particular (ignoring whether it is owned by `owner`).\n     *\n     * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n     * assumption.\n     */\n    function _isAuthorized(address owner, address spender, uint256 tokenId) internal view virtual returns (bool) {\n        return\n            spender != address(0) &&\n            (owner == spender || isApprovedForAll(owner, spender) || _getApproved(tokenId) == spender);\n    }\n\n    /**\n     * @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n     * Reverts if:\n     * - `spender` does not have approval from `owner` for `tokenId`.\n     * - `spender` does not have approval to manage all of `owner`'s assets.\n     *\n     * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n     * assumption.\n     */\n    function _checkAuthorized(address owner, address spender, uint256 tokenId) internal view virtual {\n        if (!_isAuthorized(owner, spender, tokenId)) {\n            if (owner == address(0)) {\n                revert ERC721NonexistentToken(tokenId);\n            } else {\n                revert ERC721InsufficientApproval(spender, tokenId);\n            }\n        }\n    }\n\n    /**\n     * @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n     *\n     * NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n     * a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n     *\n     * WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n     * {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n     * remain consistent with one another.\n     */\n    function _increaseBalance(address account, uint128 value) internal virtual {\n        unchecked {\n            _balances[account] += value;\n        }\n    }\n\n    /**\n     * @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n     * (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n     *\n     * The `auth` argument is optional. If the value passed is non 0, then this function will check that\n     * `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n     *\n     * Emits a {Transfer} event.\n     *\n     * NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}.\n     */\n    function _update(address to, uint256 tokenId, address auth) internal virtual returns (address) {\n        address from = _ownerOf(tokenId);\n\n        // Perform (optional) operator check\n        if (auth != address(0)) {\n            _checkAuthorized(from, auth, tokenId);\n        }\n\n        // Execute the update\n        if (from != address(0)) {\n            // Clear approval. No need to re-authorize or emit the Approval event\n            _approve(address(0), tokenId, address(0), false);\n\n            unchecked {\n                _balances[from] -= 1;\n            }\n        }\n\n        if (to != address(0)) {\n            unchecked {\n                _balances[to] += 1;\n            }\n        }\n\n        _owners[tokenId] = to;\n\n        emit Transfer(from, to, tokenId);\n\n        return from;\n    }\n\n    /**\n     * @dev Mints `tokenId` and transfers it to `to`.\n     *\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - `to` cannot be the zero address.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _mint(address to, uint256 tokenId) internal {\n        if (to == address(0)) {\n            revert ERC721InvalidReceiver(address(0));\n        }\n        address previousOwner = _update(to, tokenId, address(0));\n        if (previousOwner != address(0)) {\n            revert ERC721InvalidSender(address(0));\n        }\n    }\n\n    /**\n     * @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeMint(address to, uint256 tokenId) internal {\n        _safeMint(to, tokenId, \"\");\n    }\n\n    /**\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n     */\n    function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\n        _mint(to, tokenId);\n        ERC721Utils.checkOnERC721Received(_msgSender(), address(0), to, tokenId, data);\n    }\n\n    /**\n     * @dev Destroys `tokenId`.\n     * The approval is cleared when the token is burned.\n     * This is an internal function that does not check if the sender is authorized to operate on the token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _burn(uint256 tokenId) internal {\n        address previousOwner = _update(address(0), tokenId, address(0));\n        if (previousOwner == address(0)) {\n            revert ERC721NonexistentToken(tokenId);\n        }\n    }\n\n    /**\n     * @dev Transfers `tokenId` from `from` to `to`.\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _transfer(address from, address to, uint256 tokenId) internal {\n        if (to == address(0)) {\n            revert ERC721InvalidReceiver(address(0));\n        }\n        address previousOwner = _update(to, tokenId, address(0));\n        if (previousOwner == address(0)) {\n            revert ERC721NonexistentToken(tokenId);\n        } else if (previousOwner != from) {\n            revert ERC721IncorrectOwner(from, tokenId, previousOwner);\n        }\n    }\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n     * are aware of the ERC-721 standard to prevent tokens from being forever locked.\n     *\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\n     *\n     * This internal function is like {safeTransferFrom} in the sense that it invokes\n     * {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\n     *\n     * Requirements:\n     *\n     * - `tokenId` token must exist and be owned by `from`.\n     * - `to` cannot be the zero address.\n     * - `from` cannot be the zero address.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeTransfer(address from, address to, uint256 tokenId) internal {\n        _safeTransfer(from, to, tokenId, \"\");\n    }\n\n    /**\n     * @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n     */\n    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\n        _transfer(from, to, tokenId);\n        ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\n    }\n\n    /**\n     * @dev Approve `to` to operate on `tokenId`\n     *\n     * The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n     * either the owner of the token, or approved to operate on all tokens held by this owner.\n     *\n     * Emits an {Approval} event.\n     *\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n     */\n    function _approve(address to, uint256 tokenId, address auth) internal {\n        _approve(to, tokenId, auth, true);\n    }\n\n    /**\n     * @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n     * emitted in the context of transfers.\n     */\n    function _approve(address to, uint256 tokenId, address auth, bool emitEvent) internal virtual {\n        // Avoid reading the owner unless necessary\n        if (emitEvent || auth != address(0)) {\n            address owner = _requireOwned(tokenId);\n\n            // We do not use _isAuthorized because single-token approvals should not be able to call approve\n            if (auth != address(0) && owner != auth && !isApprovedForAll(owner, auth)) {\n                revert ERC721InvalidApprover(auth);\n            }\n\n            if (emitEvent) {\n                emit Approval(owner, to, tokenId);\n            }\n        }\n\n        _tokenApprovals[tokenId] = to;\n    }\n\n    /**\n     * @dev Approve `operator` to operate on all of `owner` tokens\n     *\n     * Requirements:\n     * - operator can't be the address zero.\n     *\n     * Emits an {ApprovalForAll} event.\n     */\n    function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\n        if (operator == address(0)) {\n            revert ERC721InvalidOperator(operator);\n        }\n        _operatorApprovals[owner][operator] = approved;\n        emit ApprovalForAll(owner, operator, approved);\n    }\n\n    /**\n     * @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n     * Returns the owner.\n     *\n     * Overrides to ownership logic should be done to {_ownerOf}.\n     */\n    function _requireOwned(uint256 tokenId) internal view returns (address) {\n        address owner = _ownerOf(tokenId);\n        if (owner == address(0)) {\n            revert ERC721NonexistentToken(tokenId);\n        }\n        return owner;\n    }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC721/extensions/ERC721URIStorage.sol)\n\npragma solidity ^0.8.20;\n\nimport {ERC721} from \"../ERC721.sol\";\nimport {Strings} from \"../../../utils/Strings.sol\";\nimport {IERC4906} from \"../../../interfaces/IERC4906.sol\";\nimport {IERC165} from \"../../../interfaces/IERC165.sol\";\n\n/**\n * @dev ERC-721 token with storage based token URI management.\n */\nabstract contract ERC721URIStorage is IERC4906, ERC721 {\n    using Strings for uint256;\n\n    // Interface ID as defined in ERC-4906. This does not correspond to a traditional interface ID as ERC-4906 only\n    // defines events and does not include any external function.\n    bytes4 private constant ERC4906_INTERFACE_ID = bytes4(0x49064906);\n\n    // Optional mapping for token URIs\n    mapping(uint256 tokenId => string) private _tokenURIs;\n\n    /**\n     * @dev See {IERC165-supportsInterface}\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, IERC165) returns (bool) {\n        return interfaceId == ERC4906_INTERFACE_ID || super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev See {IERC721Metadata-tokenURI}.\n     */\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n        _requireOwned(tokenId);\n\n        string memory _tokenURI = _tokenURIs[tokenId];\n        string memory base = _baseURI();\n\n        // If there is no base URI, return the token URI.\n        if (bytes(base).length == 0) {\n            return _tokenURI;\n        }\n        // If both are set, concatenate the baseURI and tokenURI (via string.concat).\n        if (bytes(_tokenURI).length > 0) {\n            return string.concat(base, _tokenURI);\n        }\n\n        return super.tokenURI(tokenId);\n    }\n\n    /**\n     * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n     *\n     * Emits {IERC4906-MetadataUpdate}.\n     */\n    function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\n        _tokenURIs[tokenId] = _tokenURI;\n        emit MetadataUpdate(tokenId);\n    }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721} from \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n    /**\n     * @dev Returns the token collection name.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the token collection symbol.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n     */\n    function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC-721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n    /**\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n     */\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n     */\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n    /**\n     * @dev Returns the number of tokens in ``owner``'s account.\n     */\n    function balanceOf(address owner) external view returns (uint256 balance);\n\n    /**\n     * @dev Returns the owner of the `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function ownerOf(uint256 tokenId) external view returns (address owner);\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n     *   a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n     *   {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n     *   a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\n\n    /**\n     * @dev Transfers `tokenId` token from `from` to `to`.\n     *\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 tokenId) external;\n\n    /**\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n     * The approval is cleared when the token is transferred.\n     *\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n     *\n     * Requirements:\n     *\n     * - The caller must own the token or be an approved operator.\n     * - `tokenId` must exist.\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address to, uint256 tokenId) external;\n\n    /**\n     * @dev Approve or remove `operator` as an operator for the caller.\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n     *\n     * Requirements:\n     *\n     * - The `operator` cannot be the address zero.\n     *\n     * Emits an {ApprovalForAll} event.\n     */\n    function setApprovalForAll(address operator, bool approved) external;\n\n    /**\n     * @dev Returns the account approved for `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function getApproved(uint256 tokenId) external view returns (address operator);\n\n    /**\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n     *\n     * See {setApprovalForAll}\n     */\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @title ERC-721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC-721 asset contracts.\n */\ninterface IERC721Receiver {\n    /**\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n     * by `operator` from `from`, this function is called.\n     *\n     * It must return its Solidity selector to confirm the token transfer.\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n     * reverted.\n     *\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\n     */\n    function onERC721Received(\n        address operator,\n        address from,\n        uint256 tokenId,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"},"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC721/utils/ERC721Utils.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721Receiver} from \"../IERC721Receiver.sol\";\nimport {IERC721Errors} from \"../../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Library that provide common ERC-721 utility functions.\n *\n * See https://eips.ethereum.org/EIPS/eip-721[ERC-721].\n *\n * _Available since v5.1._\n */\nlibrary ERC721Utils {\n    /**\n     * @dev Performs an acceptance check for the provided `operator` by calling {IERC721Receiver-onERC721Received}\n     * on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).\n     *\n     * The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).\n     * Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept\n     * the transfer.\n     */\n    function checkOnERC721Received(\n        address operator,\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) internal {\n        if (to.code.length > 0) {\n            try IERC721Receiver(to).onERC721Received(operator, from, tokenId, data) returns (bytes4 retval) {\n                if (retval != IERC721Receiver.onERC721Received.selector) {\n                    // Token rejected\n                    revert IERC721Errors.ERC721InvalidReceiver(to);\n                }\n            } catch (bytes memory reason) {\n                if (reason.length == 0) {\n                    // non-IERC721Receiver implementer\n                    revert IERC721Errors.ERC721InvalidReceiver(to);\n                } else {\n                    assembly (\"memory-safe\") {\n                        revert(add(32, reason), mload(reason))\n                    }\n                }\n            }\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n}\n"},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n    enum RecoverError {\n        NoError,\n        InvalidSignature,\n        InvalidSignatureLength,\n        InvalidSignatureS\n    }\n\n    /**\n     * @dev The signature derives the `address(0)`.\n     */\n    error ECDSAInvalidSignature();\n\n    /**\n     * @dev The signature has an invalid length.\n     */\n    error ECDSAInvalidSignatureLength(uint256 length);\n\n    /**\n     * @dev The signature has an S value that is in the upper half order.\n     */\n    error ECDSAInvalidSignatureS(bytes32 s);\n\n    /**\n     * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n     * return address(0) without also returning an error description. Errors are documented using an enum (error type)\n     * and a bytes32 providing additional information about the error.\n     *\n     * If no error is returned, then the address can be used for verification purposes.\n     *\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n     * this function rejects them by requiring the `s` value to be in the lower\n     * half order, and the `v` value to be either 27 or 28.\n     *\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n     * verification to be secure: it is possible to craft signatures that\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n     * this is by receiving a hash of the original message (which may otherwise\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n     *\n     * Documentation for signature generation:\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n     */\n    function tryRecover(\n        bytes32 hash,\n        bytes memory signature\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n        if (signature.length == 65) {\n            bytes32 r;\n            bytes32 s;\n            uint8 v;\n            // ecrecover takes the signature parameters, and the only way to get them\n            // currently is to use assembly.\n            assembly (\"memory-safe\") {\n                r := mload(add(signature, 0x20))\n                s := mload(add(signature, 0x40))\n                v := byte(0, mload(add(signature, 0x60)))\n            }\n            return tryRecover(hash, v, r, s);\n        } else {\n            return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\n        }\n    }\n\n    /**\n     * @dev Returns the address that signed a hashed message (`hash`) with\n     * `signature`. This address can then be used for verification purposes.\n     *\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n     * this function rejects them by requiring the `s` value to be in the lower\n     * half order, and the `v` value to be either 27 or 28.\n     *\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n     * verification to be secure: it is possible to craft signatures that\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n     * this is by receiving a hash of the original message (which may otherwise\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n     */\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\n        _throwError(error, errorArg);\n        return recovered;\n    }\n\n    /**\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n     *\n     * See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]\n     */\n    function tryRecover(\n        bytes32 hash,\n        bytes32 r,\n        bytes32 vs\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n        unchecked {\n            bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n            // We do not check for an overflow here since the shift operation results in 0 or 1.\n            uint8 v = uint8((uint256(vs) >> 255) + 27);\n            return tryRecover(hash, v, r, s);\n        }\n    }\n\n    /**\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n     */\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\n        _throwError(error, errorArg);\n        return recovered;\n    }\n\n    /**\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n     * `r` and `s` signature fields separately.\n     */\n    function tryRecover(\n        bytes32 hash,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n        // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n        //\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n        // these malleable signatures as well.\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n            return (address(0), RecoverError.InvalidSignatureS, s);\n        }\n\n        // If the signature is valid (and not malleable), return the signer address\n        address signer = ecrecover(hash, v, r, s);\n        if (signer == address(0)) {\n            return (address(0), RecoverError.InvalidSignature, bytes32(0));\n        }\n\n        return (signer, RecoverError.NoError, bytes32(0));\n    }\n\n    /**\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\n     * `r` and `s` signature fields separately.\n     */\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\n        _throwError(error, errorArg);\n        return recovered;\n    }\n\n    /**\n     * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\n     */\n    function _throwError(RecoverError error, bytes32 errorArg) private pure {\n        if (error == RecoverError.NoError) {\n            return; // no error: do nothing\n        } else if (error == RecoverError.InvalidSignature) {\n            revert ECDSAInvalidSignature();\n        } else if (error == RecoverError.InvalidSignatureLength) {\n            revert ECDSAInvalidSignatureLength(uint256(errorArg));\n        } else if (error == RecoverError.InvalidSignatureS) {\n            revert ECDSAInvalidSignatureS(errorArg);\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/SignatureChecker.sol)\n\npragma solidity ^0.8.20;\n\nimport {ECDSA} from \"./ECDSA.sol\";\nimport {IERC1271} from \"../../interfaces/IERC1271.sol\";\n\n/**\n * @dev Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support both ECDSA\n * signatures from externally owned accounts (EOAs) as well as ERC-1271 signatures from smart contract wallets like\n * Argent and Safe Wallet (previously Gnosis Safe).\n */\nlibrary SignatureChecker {\n    /**\n     * @dev Checks if a signature is valid for a given signer and data hash. If the signer is a smart contract, the\n     * signature is validated against that smart contract using ERC-1271, otherwise it's validated using `ECDSA.recover`.\n     *\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\n     */\n    function isValidSignatureNow(address signer, bytes32 hash, bytes memory signature) internal view returns (bool) {\n        if (signer.code.length == 0) {\n            (address recovered, ECDSA.RecoverError err, ) = ECDSA.tryRecover(hash, signature);\n            return err == ECDSA.RecoverError.NoError && recovered == signer;\n        } else {\n            return isValidERC1271SignatureNow(signer, hash, signature);\n        }\n    }\n\n    /**\n     * @dev Checks if a signature is valid for a given signer and data hash. The signature is validated\n     * against the signer smart contract using ERC-1271.\n     *\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\n     */\n    function isValidERC1271SignatureNow(\n        address signer,\n        bytes32 hash,\n        bytes memory signature\n    ) internal view returns (bool) {\n        (bool success, bytes memory result) = signer.staticcall(\n            abi.encodeCall(IERC1271.isValidSignature, (hash, signature))\n        );\n        return (success &&\n            result.length >= 32 &&\n            abi.decode(result, (bytes32)) == bytes32(IERC1271.isValidSignature.selector));\n    }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165 is IERC165 {\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n        return interfaceId == type(IERC165).interfaceId;\n    }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.20;\n\nimport {Panic} from \"../Panic.sol\";\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n    enum Rounding {\n        Floor, // Toward negative infinity\n        Ceil, // Toward positive infinity\n        Trunc, // Toward zero\n        Expand // Away from zero\n    }\n\n    /**\n     * @dev Return the 512-bit addition of two uint256.\n     *\n     * The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low.\n     */\n    function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n        assembly (\"memory-safe\") {\n            low := add(a, b)\n            high := lt(low, a)\n        }\n    }\n\n    /**\n     * @dev Return the 512-bit multiplication of two uint256.\n     *\n     * The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low.\n     */\n    function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\n        // 512-bit multiply [high low] = x * y. Compute the product mod 2²⁵⁶ and mod 2²⁵⁶ - 1, then use\n        // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n        // variables such that product = high * 2²⁵⁶ + low.\n        assembly (\"memory-safe\") {\n            let mm := mulmod(a, b, not(0))\n            low := mul(a, b)\n            high := sub(sub(mm, low), lt(mm, low))\n        }\n    }\n\n    /**\n     * @dev Returns the addition of two unsigned integers, with a success flag (no overflow).\n     */\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            uint256 c = a + b;\n            success = c >= a;\n            result = c * SafeCast.toUint(success);\n        }\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow).\n     */\n    function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            uint256 c = a - b;\n            success = c <= a;\n            result = c * SafeCast.toUint(success);\n        }\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow).\n     */\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            uint256 c = a * b;\n            assembly (\"memory-safe\") {\n                // Only true when the multiplication doesn't overflow\n                // (c / a == b) || (a == 0)\n                success := or(eq(div(c, a), b), iszero(a))\n            }\n            // equivalent to: success ? c : 0\n            result = c * SafeCast.toUint(success);\n        }\n    }\n\n    /**\n     * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\n     */\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            success = b > 0;\n            assembly (\"memory-safe\") {\n                // The `DIV` opcode returns zero when the denominator is 0.\n                result := div(a, b)\n            }\n        }\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\n     */\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n        unchecked {\n            success = b > 0;\n            assembly (\"memory-safe\") {\n                // The `MOD` opcode returns zero when the denominator is 0.\n                result := mod(a, b)\n            }\n        }\n    }\n\n    /**\n     * @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing.\n     */\n    function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) {\n        (bool success, uint256 result) = tryAdd(a, b);\n        return ternary(success, result, type(uint256).max);\n    }\n\n    /**\n     * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing.\n     */\n    function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) {\n        (, uint256 result) = trySub(a, b);\n        return result;\n    }\n\n    /**\n     * @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing.\n     */\n    function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) {\n        (bool success, uint256 result) = tryMul(a, b);\n        return ternary(success, result, type(uint256).max);\n    }\n\n    /**\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n     *\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n     * one branch when needed, making this function more expensive.\n     */\n    function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\n        unchecked {\n            // branchless ternary works because:\n            // b ^ (a ^ b) == a\n            // b ^ 0 == b\n            return b ^ ((a ^ b) * SafeCast.toUint(condition));\n        }\n    }\n\n    /**\n     * @dev Returns the largest of two numbers.\n     */\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\n        return ternary(a > b, a, b);\n    }\n\n    /**\n     * @dev Returns the smallest of two numbers.\n     */\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\n        return ternary(a < b, a, b);\n    }\n\n    /**\n     * @dev Returns the average of two numbers. The result is rounded towards\n     * zero.\n     */\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\n        // (a + b) / 2 can overflow.\n        return (a & b) + (a ^ b) / 2;\n    }\n\n    /**\n     * @dev Returns the ceiling of the division of two numbers.\n     *\n     * This differs from standard division with `/` in that it rounds towards infinity instead\n     * of rounding towards zero.\n     */\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n        if (b == 0) {\n            // Guarantee the same behavior as in a regular Solidity division.\n            Panic.panic(Panic.DIVISION_BY_ZERO);\n        }\n\n        // The following calculation ensures accurate ceiling division without overflow.\n        // Since a is non-zero, (a - 1) / b will not overflow.\n        // The largest possible result occurs when (a - 1) / b is type(uint256).max,\n        // but the largest value we can obtain is type(uint256).max - 1, which happens\n        // when a = type(uint256).max and b = 1.\n        unchecked {\n            return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\n        }\n    }\n\n    /**\n     * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n     * denominator == 0.\n     *\n     * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n     * Uniswap Labs also under MIT license.\n     */\n    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n        unchecked {\n            (uint256 high, uint256 low) = mul512(x, y);\n\n            // Handle non-overflow cases, 256 by 256 division.\n            if (high == 0) {\n                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n                // The surrounding unchecked block does not change this fact.\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n                return low / denominator;\n            }\n\n            // Make sure the result is less than 2²⁵⁶. Also prevents denominator == 0.\n            if (denominator <= high) {\n                Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\n            }\n\n            ///////////////////////////////////////////////\n            // 512 by 256 division.\n            ///////////////////////////////////////////////\n\n            // Make division exact by subtracting the remainder from [high low].\n            uint256 remainder;\n            assembly (\"memory-safe\") {\n                // Compute remainder using mulmod.\n                remainder := mulmod(x, y, denominator)\n\n                // Subtract 256 bit number from 512 bit number.\n                high := sub(high, gt(remainder, low))\n                low := sub(low, remainder)\n            }\n\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\n            // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\n\n            uint256 twos = denominator & (0 - denominator);\n            assembly (\"memory-safe\") {\n                // Divide denominator by twos.\n                denominator := div(denominator, twos)\n\n                // Divide [high low] by twos.\n                low := div(low, twos)\n\n                // Flip twos such that it is 2²⁵⁶ / twos. If twos is zero, then it becomes one.\n                twos := add(div(sub(0, twos), twos), 1)\n            }\n\n            // Shift in bits from high into low.\n            low |= high * twos;\n\n            // Invert denominator mod 2²⁵⁶. Now that denominator is an odd number, it has an inverse modulo 2²⁵⁶ such\n            // that denominator * inv ≡ 1 mod 2²⁵⁶. Compute the inverse by starting with a seed that is correct for\n            // four bits. That is, denominator * inv ≡ 1 mod 2⁴.\n            uint256 inverse = (3 * denominator) ^ 2;\n\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\n            // works in modular arithmetic, doubling the correct bits in each step.\n            inverse *= 2 - denominator * inverse; // inverse mod 2⁸\n            inverse *= 2 - denominator * inverse; // inverse mod 2¹⁶\n            inverse *= 2 - denominator * inverse; // inverse mod 2³²\n            inverse *= 2 - denominator * inverse; // inverse mod 2⁶⁴\n            inverse *= 2 - denominator * inverse; // inverse mod 2¹²⁸\n            inverse *= 2 - denominator * inverse; // inverse mod 2²⁵⁶\n\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n            // This will give us the correct result modulo 2²⁵⁶. Since the preconditions guarantee that the outcome is\n            // less than 2²⁵⁶, this is the final result. We don't need to compute the high bits of the result and high\n            // is no longer required.\n            result = low * inverse;\n            return result;\n        }\n    }\n\n    /**\n     * @dev Calculates x * y / denominator with full precision, following the selected rounding direction.\n     */\n    function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n        return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\n    }\n\n    /**\n     * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256.\n     */\n    function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) {\n        unchecked {\n            (uint256 high, uint256 low) = mul512(x, y);\n            if (high >= 1 << n) {\n                Panic.panic(Panic.UNDER_OVERFLOW);\n            }\n            return (high << (256 - n)) | (low >> n);\n        }\n    }\n\n    /**\n     * @dev Calculates x * y >> n with full precision, following the selected rounding direction.\n     */\n    function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) {\n        return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0);\n    }\n\n    /**\n     * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n     *\n     * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n     * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n     *\n     * If the input value is not inversible, 0 is returned.\n     *\n     * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n     * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\n     */\n    function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\n        unchecked {\n            if (n == 0) return 0;\n\n            // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\n            // Used to compute integers x and y such that: ax + ny = gcd(a, n).\n            // When the gcd is 1, then the inverse of a modulo n exists and it's x.\n            // ax + ny = 1\n            // ax = 1 + (-y)n\n            // ax ≡ 1 (mod n) # x is the inverse of a modulo n\n\n            // If the remainder is 0 the gcd is n right away.\n            uint256 remainder = a % n;\n            uint256 gcd = n;\n\n            // Therefore the initial coefficients are:\n            // ax + ny = gcd(a, n) = n\n            // 0a + 1n = n\n            int256 x = 0;\n            int256 y = 1;\n\n            while (remainder != 0) {\n                uint256 quotient = gcd / remainder;\n\n                (gcd, remainder) = (\n                    // The old remainder is the next gcd to try.\n                    remainder,\n                    // Compute the next remainder.\n                    // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\n                    // where gcd is at most n (capped to type(uint256).max)\n                    gcd - remainder * quotient\n                );\n\n                (x, y) = (\n                    // Increment the coefficient of a.\n                    y,\n                    // Decrement the coefficient of n.\n                    // Can overflow, but the result is casted to uint256 so that the\n                    // next value of y is \"wrapped around\" to a value between 0 and n - 1.\n                    x - y * int256(quotient)\n                );\n            }\n\n            if (gcd != 1) return 0; // No inverse exists.\n            return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\n        }\n    }\n\n    /**\n     * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n     *\n     * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n     * prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n     * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n     *\n     * NOTE: this function does NOT check that `p` is a prime greater than `2`.\n     */\n    function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\n        unchecked {\n            return Math.modExp(a, p - 2, p);\n        }\n    }\n\n    /**\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n     *\n     * Requirements:\n     * - modulus can't be zero\n     * - underlying staticcall to precompile must succeed\n     *\n     * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n     * sure the chain you're using it on supports the precompiled contract for modular exponentiation\n     * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n     * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n     * interpreted as 0.\n     */\n    function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\n        (bool success, uint256 result) = tryModExp(b, e, m);\n        if (!success) {\n            Panic.panic(Panic.DIVISION_BY_ZERO);\n        }\n        return result;\n    }\n\n    /**\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n     * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n     * to operate modulo 0 or if the underlying precompile reverted.\n     *\n     * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n     * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n     * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n     * of a revert, but the result may be incorrectly interpreted as 0.\n     */\n    function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\n        if (m == 0) return (false, 0);\n        assembly (\"memory-safe\") {\n            let ptr := mload(0x40)\n            // | Offset    | Content    | Content (Hex)                                                      |\n            // |-----------|------------|--------------------------------------------------------------------|\n            // | 0x00:0x1f | size of b  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n            // | 0x20:0x3f | size of e  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n            // | 0x40:0x5f | size of m  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n            // | 0x60:0x7f | value of b | 0x<.............................................................b> |\n            // | 0x80:0x9f | value of e | 0x<.............................................................e> |\n            // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\n            mstore(ptr, 0x20)\n            mstore(add(ptr, 0x20), 0x20)\n            mstore(add(ptr, 0x40), 0x20)\n            mstore(add(ptr, 0x60), b)\n            mstore(add(ptr, 0x80), e)\n            mstore(add(ptr, 0xa0), m)\n\n            // Given the result < m, it's guaranteed to fit in 32 bytes,\n            // so we can use the memory scratch space located at offset 0.\n            success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\n            result := mload(0x00)\n        }\n    }\n\n    /**\n     * @dev Variant of {modExp} that supports inputs of arbitrary length.\n     */\n    function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\n        (bool success, bytes memory result) = tryModExp(b, e, m);\n        if (!success) {\n            Panic.panic(Panic.DIVISION_BY_ZERO);\n        }\n        return result;\n    }\n\n    /**\n     * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\n     */\n    function tryModExp(\n        bytes memory b,\n        bytes memory e,\n        bytes memory m\n    ) internal view returns (bool success, bytes memory result) {\n        if (_zeroBytes(m)) return (false, new bytes(0));\n\n        uint256 mLen = m.length;\n\n        // Encode call args in result and move the free memory pointer\n        result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\n\n        assembly (\"memory-safe\") {\n            let dataPtr := add(result, 0x20)\n            // Write result on top of args to avoid allocating extra memory.\n            success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\n            // Overwrite the length.\n            // result.length > returndatasize() is guaranteed because returndatasize() == m.length\n            mstore(result, mLen)\n            // Set the memory pointer after the returned data.\n            mstore(0x40, add(dataPtr, mLen))\n        }\n    }\n\n    /**\n     * @dev Returns whether the provided byte array is zero.\n     */\n    function _zeroBytes(bytes memory byteArray) private pure returns (bool) {\n        for (uint256 i = 0; i < byteArray.length; ++i) {\n            if (byteArray[i] != 0) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    /**\n     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n     * towards zero.\n     *\n     * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n     * using integer operations.\n     */\n    function sqrt(uint256 a) internal pure returns (uint256) {\n        unchecked {\n            // Take care of easy edge cases when a == 0 or a == 1\n            if (a <= 1) {\n                return a;\n            }\n\n            // In this function, we use Newton's method to get a root of `f(x) := x² - a`. It involves building a\n            // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\n            // the current value as `ε_n = | x_n - sqrt(a) |`.\n            //\n            // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\n            // of the target. (i.e. `2**(e-1) ≤ sqrt(a) < 2**e`). We know that `e ≤ 128` because `(2¹²⁸)² = 2²⁵⁶` is\n            // bigger than any uint256.\n            //\n            // By noticing that\n            // `2**(e-1) ≤ sqrt(a) < 2**e → (2**(e-1))² ≤ a < (2**e)² → 2**(2*e-2) ≤ a < 2**(2*e)`\n            // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\n            // to the msb function.\n            uint256 aa = a;\n            uint256 xn = 1;\n\n            if (aa >= (1 << 128)) {\n                aa >>= 128;\n                xn <<= 64;\n            }\n            if (aa >= (1 << 64)) {\n                aa >>= 64;\n                xn <<= 32;\n            }\n            if (aa >= (1 << 32)) {\n                aa >>= 32;\n                xn <<= 16;\n            }\n            if (aa >= (1 << 16)) {\n                aa >>= 16;\n                xn <<= 8;\n            }\n            if (aa >= (1 << 8)) {\n                aa >>= 8;\n                xn <<= 4;\n            }\n            if (aa >= (1 << 4)) {\n                aa >>= 4;\n                xn <<= 2;\n            }\n            if (aa >= (1 << 2)) {\n                xn <<= 1;\n            }\n\n            // We now have x_n such that `x_n = 2**(e-1) ≤ sqrt(a) < 2**e = 2 * x_n`. This implies ε_n ≤ 2**(e-1).\n            //\n            // We can refine our estimation by noticing that the middle of that interval minimizes the error.\n            // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to ε_n ≤ 2**(e-2).\n            // This is going to be our x_0 (and ε_0)\n            xn = (3 * xn) >> 1; // ε_0 := | x_0 - sqrt(a) | ≤ 2**(e-2)\n\n            // From here, Newton's method give us:\n            // x_{n+1} = (x_n + a / x_n) / 2\n            //\n            // One should note that:\n            // x_{n+1}² - a = ((x_n + a / x_n) / 2)² - a\n            //              = ((x_n² + a) / (2 * x_n))² - a\n            //              = (x_n⁴ + 2 * a * x_n² + a²) / (4 * x_n²) - a\n            //              = (x_n⁴ + 2 * a * x_n² + a² - 4 * a * x_n²) / (4 * x_n²)\n            //              = (x_n⁴ - 2 * a * x_n² + a²) / (4 * x_n²)\n            //              = (x_n² - a)² / (2 * x_n)²\n            //              = ((x_n² - a) / (2 * x_n))²\n            //              ≥ 0\n            // Which proves that for all n ≥ 1, sqrt(a) ≤ x_n\n            //\n            // This gives us the proof of quadratic convergence of the sequence:\n            // ε_{n+1} = | x_{n+1} - sqrt(a) |\n            //         = | (x_n + a / x_n) / 2 - sqrt(a) |\n            //         = | (x_n² + a - 2*x_n*sqrt(a)) / (2 * x_n) |\n            //         = | (x_n - sqrt(a))² / (2 * x_n) |\n            //         = | ε_n² / (2 * x_n) |\n            //         = ε_n² / | (2 * x_n) |\n            //\n            // For the first iteration, we have a special case where x_0 is known:\n            // ε_1 = ε_0² / | (2 * x_0) |\n            //     ≤ (2**(e-2))² / (2 * (2**(e-1) + 2**(e-2)))\n            //     ≤ 2**(2*e-4) / (3 * 2**(e-1))\n            //     ≤ 2**(e-3) / 3\n            //     ≤ 2**(e-3-log2(3))\n            //     ≤ 2**(e-4.5)\n            //\n            // For the following iterations, we use the fact that, 2**(e-1) ≤ sqrt(a) ≤ x_n:\n            // ε_{n+1} = ε_n² / | (2 * x_n) |\n            //         ≤ (2**(e-k))² / (2 * 2**(e-1))\n            //         ≤ 2**(2*e-2*k) / 2**e\n            //         ≤ 2**(e-2*k)\n            xn = (xn + a / xn) >> 1; // ε_1 := | x_1 - sqrt(a) | ≤ 2**(e-4.5)  -- special case, see above\n            xn = (xn + a / xn) >> 1; // ε_2 := | x_2 - sqrt(a) | ≤ 2**(e-9)    -- general case with k = 4.5\n            xn = (xn + a / xn) >> 1; // ε_3 := | x_3 - sqrt(a) | ≤ 2**(e-18)   -- general case with k = 9\n            xn = (xn + a / xn) >> 1; // ε_4 := | x_4 - sqrt(a) | ≤ 2**(e-36)   -- general case with k = 18\n            xn = (xn + a / xn) >> 1; // ε_5 := | x_5 - sqrt(a) | ≤ 2**(e-72)   -- general case with k = 36\n            xn = (xn + a / xn) >> 1; // ε_6 := | x_6 - sqrt(a) | ≤ 2**(e-144)  -- general case with k = 72\n\n            // Because e ≤ 128 (as discussed during the first estimation phase), we know have reached a precision\n            // ε_6 ≤ 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\n            // sqrt(a) or sqrt(a) + 1.\n            return xn - SafeCast.toUint(xn > a / xn);\n        }\n    }\n\n    /**\n     * @dev Calculates sqrt(a), following the selected rounding direction.\n     */\n    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = sqrt(a);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 2 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     */\n    function log2(uint256 x) internal pure returns (uint256 r) {\n        // If value has upper 128 bits set, log2 result is at least 128\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n        // If upper 64 bits of 128-bit half set, add 64 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n        // If upper 32 bits of 64-bit half set, add 32 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n        // If upper 16 bits of 32-bit half set, add 16 to result\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n        // If upper 8 bits of 16-bit half set, add 8 to result\n        r |= SafeCast.toUint((x >> r) > 0xff) << 3;\n        // If upper 4 bits of 8-bit half set, add 4 to result\n        r |= SafeCast.toUint((x >> r) > 0xf) << 2;\n\n        // Shifts value right by the current result and use it as an index into this lookup table:\n        //\n        // | x (4 bits) |  index  | table[index] = MSB position |\n        // |------------|---------|-----------------------------|\n        // |    0000    |    0    |        table[0] = 0         |\n        // |    0001    |    1    |        table[1] = 0         |\n        // |    0010    |    2    |        table[2] = 1         |\n        // |    0011    |    3    |        table[3] = 1         |\n        // |    0100    |    4    |        table[4] = 2         |\n        // |    0101    |    5    |        table[5] = 2         |\n        // |    0110    |    6    |        table[6] = 2         |\n        // |    0111    |    7    |        table[7] = 2         |\n        // |    1000    |    8    |        table[8] = 3         |\n        // |    1001    |    9    |        table[9] = 3         |\n        // |    1010    |   10    |        table[10] = 3        |\n        // |    1011    |   11    |        table[11] = 3        |\n        // |    1100    |   12    |        table[12] = 3        |\n        // |    1101    |   13    |        table[13] = 3        |\n        // |    1110    |   14    |        table[14] = 3        |\n        // |    1111    |   15    |        table[15] = 3        |\n        //\n        // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes.\n        assembly (\"memory-safe\") {\n            r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000))\n        }\n    }\n\n    /**\n     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log2(value);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 10 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     */\n    function log10(uint256 value) internal pure returns (uint256) {\n        uint256 result = 0;\n        unchecked {\n            if (value >= 10 ** 64) {\n                value /= 10 ** 64;\n                result += 64;\n            }\n            if (value >= 10 ** 32) {\n                value /= 10 ** 32;\n                result += 32;\n            }\n            if (value >= 10 ** 16) {\n                value /= 10 ** 16;\n                result += 16;\n            }\n            if (value >= 10 ** 8) {\n                value /= 10 ** 8;\n                result += 8;\n            }\n            if (value >= 10 ** 4) {\n                value /= 10 ** 4;\n                result += 4;\n            }\n            if (value >= 10 ** 2) {\n                value /= 10 ** 2;\n                result += 2;\n            }\n            if (value >= 10 ** 1) {\n                result += 1;\n            }\n        }\n        return result;\n    }\n\n    /**\n     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log10(value);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 256 of a positive value rounded towards zero.\n     * Returns 0 if given 0.\n     *\n     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n     */\n    function log256(uint256 x) internal pure returns (uint256 r) {\n        // If value has upper 128 bits set, log2 result is at least 128\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\n        // If upper 64 bits of 128-bit half set, add 64 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\n        // If upper 32 bits of 64-bit half set, add 32 to result\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\n        // If upper 16 bits of 32-bit half set, add 16 to result\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\n        // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8\n        return (r >> 3) | SafeCast.toUint((x >> r) > 0xff);\n    }\n\n    /**\n     * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log256(value);\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\n        }\n    }\n\n    /**\n     * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\n     */\n    function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\n        return uint8(rounding) % 2 == 1;\n    }\n}\n"},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeCast {\n    /**\n     * @dev Value doesn't fit in an uint of `bits` size.\n     */\n    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\n\n    /**\n     * @dev An int value doesn't fit in an uint of `bits` size.\n     */\n    error SafeCastOverflowedIntToUint(int256 value);\n\n    /**\n     * @dev Value doesn't fit in an int of `bits` size.\n     */\n    error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\n\n    /**\n     * @dev An uint value doesn't fit in an int of `bits` size.\n     */\n    error SafeCastOverflowedUintToInt(uint256 value);\n\n    /**\n     * @dev Returns the downcasted uint248 from uint256, reverting on\n     * overflow (when the input is greater than largest uint248).\n     *\n     * Counterpart to Solidity's `uint248` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 248 bits\n     */\n    function toUint248(uint256 value) internal pure returns (uint248) {\n        if (value > type(uint248).max) {\n            revert SafeCastOverflowedUintDowncast(248, value);\n        }\n        return uint248(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint240 from uint256, reverting on\n     * overflow (when the input is greater than largest uint240).\n     *\n     * Counterpart to Solidity's `uint240` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 240 bits\n     */\n    function toUint240(uint256 value) internal pure returns (uint240) {\n        if (value > type(uint240).max) {\n            revert SafeCastOverflowedUintDowncast(240, value);\n        }\n        return uint240(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint232 from uint256, reverting on\n     * overflow (when the input is greater than largest uint232).\n     *\n     * Counterpart to Solidity's `uint232` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 232 bits\n     */\n    function toUint232(uint256 value) internal pure returns (uint232) {\n        if (value > type(uint232).max) {\n            revert SafeCastOverflowedUintDowncast(232, value);\n        }\n        return uint232(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint224 from uint256, reverting on\n     * overflow (when the input is greater than largest uint224).\n     *\n     * Counterpart to Solidity's `uint224` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 224 bits\n     */\n    function toUint224(uint256 value) internal pure returns (uint224) {\n        if (value > type(uint224).max) {\n            revert SafeCastOverflowedUintDowncast(224, value);\n        }\n        return uint224(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint216 from uint256, reverting on\n     * overflow (when the input is greater than largest uint216).\n     *\n     * Counterpart to Solidity's `uint216` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 216 bits\n     */\n    function toUint216(uint256 value) internal pure returns (uint216) {\n        if (value > type(uint216).max) {\n            revert SafeCastOverflowedUintDowncast(216, value);\n        }\n        return uint216(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint208 from uint256, reverting on\n     * overflow (when the input is greater than largest uint208).\n     *\n     * Counterpart to Solidity's `uint208` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 208 bits\n     */\n    function toUint208(uint256 value) internal pure returns (uint208) {\n        if (value > type(uint208).max) {\n            revert SafeCastOverflowedUintDowncast(208, value);\n        }\n        return uint208(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint200 from uint256, reverting on\n     * overflow (when the input is greater than largest uint200).\n     *\n     * Counterpart to Solidity's `uint200` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 200 bits\n     */\n    function toUint200(uint256 value) internal pure returns (uint200) {\n        if (value > type(uint200).max) {\n            revert SafeCastOverflowedUintDowncast(200, value);\n        }\n        return uint200(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint192 from uint256, reverting on\n     * overflow (when the input is greater than largest uint192).\n     *\n     * Counterpart to Solidity's `uint192` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 192 bits\n     */\n    function toUint192(uint256 value) internal pure returns (uint192) {\n        if (value > type(uint192).max) {\n            revert SafeCastOverflowedUintDowncast(192, value);\n        }\n        return uint192(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint184 from uint256, reverting on\n     * overflow (when the input is greater than largest uint184).\n     *\n     * Counterpart to Solidity's `uint184` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 184 bits\n     */\n    function toUint184(uint256 value) internal pure returns (uint184) {\n        if (value > type(uint184).max) {\n            revert SafeCastOverflowedUintDowncast(184, value);\n        }\n        return uint184(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint176 from uint256, reverting on\n     * overflow (when the input is greater than largest uint176).\n     *\n     * Counterpart to Solidity's `uint176` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 176 bits\n     */\n    function toUint176(uint256 value) internal pure returns (uint176) {\n        if (value > type(uint176).max) {\n            revert SafeCastOverflowedUintDowncast(176, value);\n        }\n        return uint176(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint168 from uint256, reverting on\n     * overflow (when the input is greater than largest uint168).\n     *\n     * Counterpart to Solidity's `uint168` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 168 bits\n     */\n    function toUint168(uint256 value) internal pure returns (uint168) {\n        if (value > type(uint168).max) {\n            revert SafeCastOverflowedUintDowncast(168, value);\n        }\n        return uint168(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint160 from uint256, reverting on\n     * overflow (when the input is greater than largest uint160).\n     *\n     * Counterpart to Solidity's `uint160` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 160 bits\n     */\n    function toUint160(uint256 value) internal pure returns (uint160) {\n        if (value > type(uint160).max) {\n            revert SafeCastOverflowedUintDowncast(160, value);\n        }\n        return uint160(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint152 from uint256, reverting on\n     * overflow (when the input is greater than largest uint152).\n     *\n     * Counterpart to Solidity's `uint152` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 152 bits\n     */\n    function toUint152(uint256 value) internal pure returns (uint152) {\n        if (value > type(uint152).max) {\n            revert SafeCastOverflowedUintDowncast(152, value);\n        }\n        return uint152(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint144 from uint256, reverting on\n     * overflow (when the input is greater than largest uint144).\n     *\n     * Counterpart to Solidity's `uint144` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 144 bits\n     */\n    function toUint144(uint256 value) internal pure returns (uint144) {\n        if (value > type(uint144).max) {\n            revert SafeCastOverflowedUintDowncast(144, value);\n        }\n        return uint144(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint136 from uint256, reverting on\n     * overflow (when the input is greater than largest uint136).\n     *\n     * Counterpart to Solidity's `uint136` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 136 bits\n     */\n    function toUint136(uint256 value) internal pure returns (uint136) {\n        if (value > type(uint136).max) {\n            revert SafeCastOverflowedUintDowncast(136, value);\n        }\n        return uint136(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint128 from uint256, reverting on\n     * overflow (when the input is greater than largest uint128).\n     *\n     * Counterpart to Solidity's `uint128` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 128 bits\n     */\n    function toUint128(uint256 value) internal pure returns (uint128) {\n        if (value > type(uint128).max) {\n            revert SafeCastOverflowedUintDowncast(128, value);\n        }\n        return uint128(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint120 from uint256, reverting on\n     * overflow (when the input is greater than largest uint120).\n     *\n     * Counterpart to Solidity's `uint120` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 120 bits\n     */\n    function toUint120(uint256 value) internal pure returns (uint120) {\n        if (value > type(uint120).max) {\n            revert SafeCastOverflowedUintDowncast(120, value);\n        }\n        return uint120(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint112 from uint256, reverting on\n     * overflow (when the input is greater than largest uint112).\n     *\n     * Counterpart to Solidity's `uint112` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 112 bits\n     */\n    function toUint112(uint256 value) internal pure returns (uint112) {\n        if (value > type(uint112).max) {\n            revert SafeCastOverflowedUintDowncast(112, value);\n        }\n        return uint112(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint104 from uint256, reverting on\n     * overflow (when the input is greater than largest uint104).\n     *\n     * Counterpart to Solidity's `uint104` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 104 bits\n     */\n    function toUint104(uint256 value) internal pure returns (uint104) {\n        if (value > type(uint104).max) {\n            revert SafeCastOverflowedUintDowncast(104, value);\n        }\n        return uint104(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint96 from uint256, reverting on\n     * overflow (when the input is greater than largest uint96).\n     *\n     * Counterpart to Solidity's `uint96` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 96 bits\n     */\n    function toUint96(uint256 value) internal pure returns (uint96) {\n        if (value > type(uint96).max) {\n            revert SafeCastOverflowedUintDowncast(96, value);\n        }\n        return uint96(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint88 from uint256, reverting on\n     * overflow (when the input is greater than largest uint88).\n     *\n     * Counterpart to Solidity's `uint88` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 88 bits\n     */\n    function toUint88(uint256 value) internal pure returns (uint88) {\n        if (value > type(uint88).max) {\n            revert SafeCastOverflowedUintDowncast(88, value);\n        }\n        return uint88(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint80 from uint256, reverting on\n     * overflow (when the input is greater than largest uint80).\n     *\n     * Counterpart to Solidity's `uint80` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 80 bits\n     */\n    function toUint80(uint256 value) internal pure returns (uint80) {\n        if (value > type(uint80).max) {\n            revert SafeCastOverflowedUintDowncast(80, value);\n        }\n        return uint80(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint72 from uint256, reverting on\n     * overflow (when the input is greater than largest uint72).\n     *\n     * Counterpart to Solidity's `uint72` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 72 bits\n     */\n    function toUint72(uint256 value) internal pure returns (uint72) {\n        if (value > type(uint72).max) {\n            revert SafeCastOverflowedUintDowncast(72, value);\n        }\n        return uint72(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint64 from uint256, reverting on\n     * overflow (when the input is greater than largest uint64).\n     *\n     * Counterpart to Solidity's `uint64` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 64 bits\n     */\n    function toUint64(uint256 value) internal pure returns (uint64) {\n        if (value > type(uint64).max) {\n            revert SafeCastOverflowedUintDowncast(64, value);\n        }\n        return uint64(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint56 from uint256, reverting on\n     * overflow (when the input is greater than largest uint56).\n     *\n     * Counterpart to Solidity's `uint56` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 56 bits\n     */\n    function toUint56(uint256 value) internal pure returns (uint56) {\n        if (value > type(uint56).max) {\n            revert SafeCastOverflowedUintDowncast(56, value);\n        }\n        return uint56(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint48 from uint256, reverting on\n     * overflow (when the input is greater than largest uint48).\n     *\n     * Counterpart to Solidity's `uint48` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 48 bits\n     */\n    function toUint48(uint256 value) internal pure returns (uint48) {\n        if (value > type(uint48).max) {\n            revert SafeCastOverflowedUintDowncast(48, value);\n        }\n        return uint48(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint40 from uint256, reverting on\n     * overflow (when the input is greater than largest uint40).\n     *\n     * Counterpart to Solidity's `uint40` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 40 bits\n     */\n    function toUint40(uint256 value) internal pure returns (uint40) {\n        if (value > type(uint40).max) {\n            revert SafeCastOverflowedUintDowncast(40, value);\n        }\n        return uint40(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint32 from uint256, reverting on\n     * overflow (when the input is greater than largest uint32).\n     *\n     * Counterpart to Solidity's `uint32` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 32 bits\n     */\n    function toUint32(uint256 value) internal pure returns (uint32) {\n        if (value > type(uint32).max) {\n            revert SafeCastOverflowedUintDowncast(32, value);\n        }\n        return uint32(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint24 from uint256, reverting on\n     * overflow (when the input is greater than largest uint24).\n     *\n     * Counterpart to Solidity's `uint24` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 24 bits\n     */\n    function toUint24(uint256 value) internal pure returns (uint24) {\n        if (value > type(uint24).max) {\n            revert SafeCastOverflowedUintDowncast(24, value);\n        }\n        return uint24(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint16 from uint256, reverting on\n     * overflow (when the input is greater than largest uint16).\n     *\n     * Counterpart to Solidity's `uint16` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 16 bits\n     */\n    function toUint16(uint256 value) internal pure returns (uint16) {\n        if (value > type(uint16).max) {\n            revert SafeCastOverflowedUintDowncast(16, value);\n        }\n        return uint16(value);\n    }\n\n    /**\n     * @dev Returns the downcasted uint8 from uint256, reverting on\n     * overflow (when the input is greater than largest uint8).\n     *\n     * Counterpart to Solidity's `uint8` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 8 bits\n     */\n    function toUint8(uint256 value) internal pure returns (uint8) {\n        if (value > type(uint8).max) {\n            revert SafeCastOverflowedUintDowncast(8, value);\n        }\n        return uint8(value);\n    }\n\n    /**\n     * @dev Converts a signed int256 into an unsigned uint256.\n     *\n     * Requirements:\n     *\n     * - input must be greater than or equal to 0.\n     */\n    function toUint256(int256 value) internal pure returns (uint256) {\n        if (value < 0) {\n            revert SafeCastOverflowedIntToUint(value);\n        }\n        return uint256(value);\n    }\n\n    /**\n     * @dev Returns the downcasted int248 from int256, reverting on\n     * overflow (when the input is less than smallest int248 or\n     * greater than largest int248).\n     *\n     * Counterpart to Solidity's `int248` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 248 bits\n     */\n    function toInt248(int256 value) internal pure returns (int248 downcasted) {\n        downcasted = int248(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(248, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int240 from int256, reverting on\n     * overflow (when the input is less than smallest int240 or\n     * greater than largest int240).\n     *\n     * Counterpart to Solidity's `int240` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 240 bits\n     */\n    function toInt240(int256 value) internal pure returns (int240 downcasted) {\n        downcasted = int240(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(240, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int232 from int256, reverting on\n     * overflow (when the input is less than smallest int232 or\n     * greater than largest int232).\n     *\n     * Counterpart to Solidity's `int232` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 232 bits\n     */\n    function toInt232(int256 value) internal pure returns (int232 downcasted) {\n        downcasted = int232(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(232, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int224 from int256, reverting on\n     * overflow (when the input is less than smallest int224 or\n     * greater than largest int224).\n     *\n     * Counterpart to Solidity's `int224` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 224 bits\n     */\n    function toInt224(int256 value) internal pure returns (int224 downcasted) {\n        downcasted = int224(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(224, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int216 from int256, reverting on\n     * overflow (when the input is less than smallest int216 or\n     * greater than largest int216).\n     *\n     * Counterpart to Solidity's `int216` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 216 bits\n     */\n    function toInt216(int256 value) internal pure returns (int216 downcasted) {\n        downcasted = int216(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(216, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int208 from int256, reverting on\n     * overflow (when the input is less than smallest int208 or\n     * greater than largest int208).\n     *\n     * Counterpart to Solidity's `int208` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 208 bits\n     */\n    function toInt208(int256 value) internal pure returns (int208 downcasted) {\n        downcasted = int208(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(208, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int200 from int256, reverting on\n     * overflow (when the input is less than smallest int200 or\n     * greater than largest int200).\n     *\n     * Counterpart to Solidity's `int200` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 200 bits\n     */\n    function toInt200(int256 value) internal pure returns (int200 downcasted) {\n        downcasted = int200(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(200, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int192 from int256, reverting on\n     * overflow (when the input is less than smallest int192 or\n     * greater than largest int192).\n     *\n     * Counterpart to Solidity's `int192` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 192 bits\n     */\n    function toInt192(int256 value) internal pure returns (int192 downcasted) {\n        downcasted = int192(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(192, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int184 from int256, reverting on\n     * overflow (when the input is less than smallest int184 or\n     * greater than largest int184).\n     *\n     * Counterpart to Solidity's `int184` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 184 bits\n     */\n    function toInt184(int256 value) internal pure returns (int184 downcasted) {\n        downcasted = int184(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(184, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int176 from int256, reverting on\n     * overflow (when the input is less than smallest int176 or\n     * greater than largest int176).\n     *\n     * Counterpart to Solidity's `int176` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 176 bits\n     */\n    function toInt176(int256 value) internal pure returns (int176 downcasted) {\n        downcasted = int176(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(176, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int168 from int256, reverting on\n     * overflow (when the input is less than smallest int168 or\n     * greater than largest int168).\n     *\n     * Counterpart to Solidity's `int168` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 168 bits\n     */\n    function toInt168(int256 value) internal pure returns (int168 downcasted) {\n        downcasted = int168(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(168, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int160 from int256, reverting on\n     * overflow (when the input is less than smallest int160 or\n     * greater than largest int160).\n     *\n     * Counterpart to Solidity's `int160` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 160 bits\n     */\n    function toInt160(int256 value) internal pure returns (int160 downcasted) {\n        downcasted = int160(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(160, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int152 from int256, reverting on\n     * overflow (when the input is less than smallest int152 or\n     * greater than largest int152).\n     *\n     * Counterpart to Solidity's `int152` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 152 bits\n     */\n    function toInt152(int256 value) internal pure returns (int152 downcasted) {\n        downcasted = int152(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(152, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int144 from int256, reverting on\n     * overflow (when the input is less than smallest int144 or\n     * greater than largest int144).\n     *\n     * Counterpart to Solidity's `int144` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 144 bits\n     */\n    function toInt144(int256 value) internal pure returns (int144 downcasted) {\n        downcasted = int144(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(144, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int136 from int256, reverting on\n     * overflow (when the input is less than smallest int136 or\n     * greater than largest int136).\n     *\n     * Counterpart to Solidity's `int136` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 136 bits\n     */\n    function toInt136(int256 value) internal pure returns (int136 downcasted) {\n        downcasted = int136(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(136, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int128 from int256, reverting on\n     * overflow (when the input is less than smallest int128 or\n     * greater than largest int128).\n     *\n     * Counterpart to Solidity's `int128` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 128 bits\n     */\n    function toInt128(int256 value) internal pure returns (int128 downcasted) {\n        downcasted = int128(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(128, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int120 from int256, reverting on\n     * overflow (when the input is less than smallest int120 or\n     * greater than largest int120).\n     *\n     * Counterpart to Solidity's `int120` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 120 bits\n     */\n    function toInt120(int256 value) internal pure returns (int120 downcasted) {\n        downcasted = int120(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(120, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int112 from int256, reverting on\n     * overflow (when the input is less than smallest int112 or\n     * greater than largest int112).\n     *\n     * Counterpart to Solidity's `int112` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 112 bits\n     */\n    function toInt112(int256 value) internal pure returns (int112 downcasted) {\n        downcasted = int112(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(112, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int104 from int256, reverting on\n     * overflow (when the input is less than smallest int104 or\n     * greater than largest int104).\n     *\n     * Counterpart to Solidity's `int104` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 104 bits\n     */\n    function toInt104(int256 value) internal pure returns (int104 downcasted) {\n        downcasted = int104(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(104, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int96 from int256, reverting on\n     * overflow (when the input is less than smallest int96 or\n     * greater than largest int96).\n     *\n     * Counterpart to Solidity's `int96` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 96 bits\n     */\n    function toInt96(int256 value) internal pure returns (int96 downcasted) {\n        downcasted = int96(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(96, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int88 from int256, reverting on\n     * overflow (when the input is less than smallest int88 or\n     * greater than largest int88).\n     *\n     * Counterpart to Solidity's `int88` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 88 bits\n     */\n    function toInt88(int256 value) internal pure returns (int88 downcasted) {\n        downcasted = int88(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(88, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int80 from int256, reverting on\n     * overflow (when the input is less than smallest int80 or\n     * greater than largest int80).\n     *\n     * Counterpart to Solidity's `int80` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 80 bits\n     */\n    function toInt80(int256 value) internal pure returns (int80 downcasted) {\n        downcasted = int80(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(80, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int72 from int256, reverting on\n     * overflow (when the input is less than smallest int72 or\n     * greater than largest int72).\n     *\n     * Counterpart to Solidity's `int72` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 72 bits\n     */\n    function toInt72(int256 value) internal pure returns (int72 downcasted) {\n        downcasted = int72(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(72, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int64 from int256, reverting on\n     * overflow (when the input is less than smallest int64 or\n     * greater than largest int64).\n     *\n     * Counterpart to Solidity's `int64` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 64 bits\n     */\n    function toInt64(int256 value) internal pure returns (int64 downcasted) {\n        downcasted = int64(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(64, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int56 from int256, reverting on\n     * overflow (when the input is less than smallest int56 or\n     * greater than largest int56).\n     *\n     * Counterpart to Solidity's `int56` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 56 bits\n     */\n    function toInt56(int256 value) internal pure returns (int56 downcasted) {\n        downcasted = int56(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(56, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int48 from int256, reverting on\n     * overflow (when the input is less than smallest int48 or\n     * greater than largest int48).\n     *\n     * Counterpart to Solidity's `int48` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 48 bits\n     */\n    function toInt48(int256 value) internal pure returns (int48 downcasted) {\n        downcasted = int48(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(48, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int40 from int256, reverting on\n     * overflow (when the input is less than smallest int40 or\n     * greater than largest int40).\n     *\n     * Counterpart to Solidity's `int40` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 40 bits\n     */\n    function toInt40(int256 value) internal pure returns (int40 downcasted) {\n        downcasted = int40(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(40, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int32 from int256, reverting on\n     * overflow (when the input is less than smallest int32 or\n     * greater than largest int32).\n     *\n     * Counterpart to Solidity's `int32` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 32 bits\n     */\n    function toInt32(int256 value) internal pure returns (int32 downcasted) {\n        downcasted = int32(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(32, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int24 from int256, reverting on\n     * overflow (when the input is less than smallest int24 or\n     * greater than largest int24).\n     *\n     * Counterpart to Solidity's `int24` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 24 bits\n     */\n    function toInt24(int256 value) internal pure returns (int24 downcasted) {\n        downcasted = int24(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(24, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int16 from int256, reverting on\n     * overflow (when the input is less than smallest int16 or\n     * greater than largest int16).\n     *\n     * Counterpart to Solidity's `int16` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 16 bits\n     */\n    function toInt16(int256 value) internal pure returns (int16 downcasted) {\n        downcasted = int16(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(16, value);\n        }\n    }\n\n    /**\n     * @dev Returns the downcasted int8 from int256, reverting on\n     * overflow (when the input is less than smallest int8 or\n     * greater than largest int8).\n     *\n     * Counterpart to Solidity's `int8` operator.\n     *\n     * Requirements:\n     *\n     * - input must fit into 8 bits\n     */\n    function toInt8(int256 value) internal pure returns (int8 downcasted) {\n        downcasted = int8(value);\n        if (downcasted != value) {\n            revert SafeCastOverflowedIntDowncast(8, value);\n        }\n    }\n\n    /**\n     * @dev Converts an unsigned uint256 into a signed int256.\n     *\n     * Requirements:\n     *\n     * - input must be less than or equal to maxInt256.\n     */\n    function toInt256(uint256 value) internal pure returns (int256) {\n        // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\n        if (value > uint256(type(int256).max)) {\n            revert SafeCastOverflowedUintToInt(value);\n        }\n        return int256(value);\n    }\n\n    /**\n     * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\n     */\n    function toUint(bool b) internal pure returns (uint256 u) {\n        assembly (\"memory-safe\") {\n            u := iszero(iszero(b))\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.20;\n\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n    /**\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n     *\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n     * one branch when needed, making this function more expensive.\n     */\n    function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {\n        unchecked {\n            // branchless ternary works because:\n            // b ^ (a ^ b) == a\n            // b ^ 0 == b\n            return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));\n        }\n    }\n\n    /**\n     * @dev Returns the largest of two signed numbers.\n     */\n    function max(int256 a, int256 b) internal pure returns (int256) {\n        return ternary(a > b, a, b);\n    }\n\n    /**\n     * @dev Returns the smallest of two signed numbers.\n     */\n    function min(int256 a, int256 b) internal pure returns (int256) {\n        return ternary(a < b, a, b);\n    }\n\n    /**\n     * @dev Returns the average of two signed numbers without overflow.\n     * The result is rounded towards zero.\n     */\n    function average(int256 a, int256 b) internal pure returns (int256) {\n        // Formula from the book \"Hacker's Delight\"\n        int256 x = (a & b) + ((a ^ b) >> 1);\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\n    }\n\n    /**\n     * @dev Returns the absolute unsigned value of a signed value.\n     */\n    function abs(int256 n) internal pure returns (uint256) {\n        unchecked {\n            // Formula from the \"Bit Twiddling Hacks\" by Sean Eron Anderson.\n            // Since `n` is a signed integer, the generated bytecode will use the SAR opcode to perform the right shift,\n            // taking advantage of the most significant (or \"sign\" bit) in two's complement representation.\n            // This opcode adds new most significant bits set to the value of the previous most significant bit. As a result,\n            // the mask will either be `bytes32(0)` (if n is positive) or `~bytes32(0)` (if n is negative).\n            int256 mask = n >> 255;\n\n            // A `bytes32(0)` mask leaves the input unchanged, while a `~bytes32(0)` mask complements it.\n            return uint256((n + mask) ^ mask);\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Panic.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Helper library for emitting standardized panic codes.\n *\n * ```solidity\n * contract Example {\n *      using Panic for uint256;\n *\n *      // Use any of the declared internal constants\n *      function foo() { Panic.GENERIC.panic(); }\n *\n *      // Alternatively\n *      function foo() { Panic.panic(Panic.GENERIC); }\n * }\n * ```\n *\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n *\n * _Available since v5.1._\n */\n// slither-disable-next-line unused-state\nlibrary Panic {\n    /// @dev generic / unspecified error\n    uint256 internal constant GENERIC = 0x00;\n    /// @dev used by the assert() builtin\n    uint256 internal constant ASSERT = 0x01;\n    /// @dev arithmetic underflow or overflow\n    uint256 internal constant UNDER_OVERFLOW = 0x11;\n    /// @dev division or modulo by zero\n    uint256 internal constant DIVISION_BY_ZERO = 0x12;\n    /// @dev enum conversion error\n    uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\n    /// @dev invalid encoding in storage\n    uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\n    /// @dev empty array pop\n    uint256 internal constant EMPTY_ARRAY_POP = 0x31;\n    /// @dev array out of bounds access\n    uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\n    /// @dev resource error (too large allocation or too large array)\n    uint256 internal constant RESOURCE_ERROR = 0x41;\n    /// @dev calling invalid internal function\n    uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\n\n    /// @dev Reverts with a panic code. Recommended to use with\n    /// the internal constants with predefined codes.\n    function panic(uint256 code) internal pure {\n        assembly (\"memory-safe\") {\n            mstore(0x00, 0x4e487b71)\n            mstore(0x20, code)\n            revert(0x1c, 0x24)\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/Strings.sol)\n\npragma solidity ^0.8.20;\n\nimport {Math} from \"./math/Math.sol\";\nimport {SafeCast} from \"./math/SafeCast.sol\";\nimport {SignedMath} from \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n    using SafeCast for *;\n\n    bytes16 private constant HEX_DIGITS = \"0123456789abcdef\";\n    uint8 private constant ADDRESS_LENGTH = 20;\n    uint256 private constant SPECIAL_CHARS_LOOKUP =\n        (1 << 0x08) | // backspace\n            (1 << 0x09) | // tab\n            (1 << 0x0a) | // newline\n            (1 << 0x0c) | // form feed\n            (1 << 0x0d) | // carriage return\n            (1 << 0x22) | // double quote\n            (1 << 0x5c); // backslash\n\n    /**\n     * @dev The `value` string doesn't fit in the specified `length`.\n     */\n    error StringsInsufficientHexLength(uint256 value, uint256 length);\n\n    /**\n     * @dev The string being parsed contains characters that are not in scope of the given base.\n     */\n    error StringsInvalidChar();\n\n    /**\n     * @dev The string being parsed is not a properly formatted address.\n     */\n    error StringsInvalidAddressFormat();\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n     */\n    function toString(uint256 value) internal pure returns (string memory) {\n        unchecked {\n            uint256 length = Math.log10(value) + 1;\n            string memory buffer = new string(length);\n            uint256 ptr;\n            assembly (\"memory-safe\") {\n                ptr := add(buffer, add(32, length))\n            }\n            while (true) {\n                ptr--;\n                assembly (\"memory-safe\") {\n                    mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\n                }\n                value /= 10;\n                if (value == 0) break;\n            }\n            return buffer;\n        }\n    }\n\n    /**\n     * @dev Converts a `int256` to its ASCII `string` decimal representation.\n     */\n    function toStringSigned(int256 value) internal pure returns (string memory) {\n        return string.concat(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value)));\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n     */\n    function toHexString(uint256 value) internal pure returns (string memory) {\n        unchecked {\n            return toHexString(value, Math.log256(value) + 1);\n        }\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n     */\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n        uint256 localValue = value;\n        bytes memory buffer = new bytes(2 * length + 2);\n        buffer[0] = \"0\";\n        buffer[1] = \"x\";\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\n            buffer[i] = HEX_DIGITS[localValue & 0xf];\n            localValue >>= 4;\n        }\n        if (localValue != 0) {\n            revert StringsInsufficientHexLength(value, length);\n        }\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n     * representation.\n     */\n    function toHexString(address addr) internal pure returns (string memory) {\n        return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\n    }\n\n    /**\n     * @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\n     * representation, according to EIP-55.\n     */\n    function toChecksumHexString(address addr) internal pure returns (string memory) {\n        bytes memory buffer = bytes(toHexString(addr));\n\n        // hash the hex part of buffer (skip length + 2 bytes, length 40)\n        uint256 hashValue;\n        assembly (\"memory-safe\") {\n            hashValue := shr(96, keccak256(add(buffer, 0x22), 40))\n        }\n\n        for (uint256 i = 41; i > 1; --i) {\n            // possible values for buffer[i] are 48 (0) to 57 (9) and 97 (a) to 102 (f)\n            if (hashValue & 0xf > 7 && uint8(buffer[i]) > 96) {\n                // case shift by xoring with 0x20\n                buffer[i] ^= 0x20;\n            }\n            hashValue >>= 4;\n        }\n        return string(buffer);\n    }\n\n    /**\n     * @dev Returns true if the two strings are equal.\n     */\n    function equal(string memory a, string memory b) internal pure returns (bool) {\n        return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\n    }\n\n    /**\n     * @dev Parse a decimal string and returns the value as a `uint256`.\n     *\n     * Requirements:\n     * - The string must be formatted as `[0-9]*`\n     * - The result must fit into an `uint256` type\n     */\n    function parseUint(string memory input) internal pure returns (uint256) {\n        return parseUint(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `[0-9]*`\n     * - The result must fit into an `uint256` type\n     */\n    function parseUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\n        (bool success, uint256 value) = tryParseUint(input, begin, end);\n        if (!success) revert StringsInvalidChar();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseUint(string memory input) internal pure returns (bool success, uint256 value) {\n        return _tryParseUintUncheckedBounds(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n     * character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseUint(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, uint256 value) {\n        if (end > bytes(input).length || begin > end) return (false, 0);\n        return _tryParseUintUncheckedBounds(input, begin, end);\n    }\n\n    /**\n     * @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\n     */\n    function _tryParseUintUncheckedBounds(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) private pure returns (bool success, uint256 value) {\n        bytes memory buffer = bytes(input);\n\n        uint256 result = 0;\n        for (uint256 i = begin; i < end; ++i) {\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\n            if (chr > 9) return (false, 0);\n            result *= 10;\n            result += chr;\n        }\n        return (true, result);\n    }\n\n    /**\n     * @dev Parse a decimal string and returns the value as a `int256`.\n     *\n     * Requirements:\n     * - The string must be formatted as `[-+]?[0-9]*`\n     * - The result must fit in an `int256` type.\n     */\n    function parseInt(string memory input) internal pure returns (int256) {\n        return parseInt(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `[-+]?[0-9]*`\n     * - The result must fit in an `int256` type.\n     */\n    function parseInt(string memory input, uint256 begin, uint256 end) internal pure returns (int256) {\n        (bool success, int256 value) = tryParseInt(input, begin, end);\n        if (!success) revert StringsInvalidChar();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if\n     * the result does not fit in a `int256`.\n     *\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\n     */\n    function tryParseInt(string memory input) internal pure returns (bool success, int256 value) {\n        return _tryParseIntUncheckedBounds(input, 0, bytes(input).length);\n    }\n\n    uint256 private constant ABS_MIN_INT256 = 2 ** 255;\n\n    /**\n     * @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n     * character or if the result does not fit in a `int256`.\n     *\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\n     */\n    function tryParseInt(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, int256 value) {\n        if (end > bytes(input).length || begin > end) return (false, 0);\n        return _tryParseIntUncheckedBounds(input, begin, end);\n    }\n\n    /**\n     * @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\n     */\n    function _tryParseIntUncheckedBounds(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) private pure returns (bool success, int256 value) {\n        bytes memory buffer = bytes(input);\n\n        // Check presence of a negative sign.\n        bytes1 sign = begin == end ? bytes1(0) : bytes1(_unsafeReadBytesOffset(buffer, begin)); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\n        bool positiveSign = sign == bytes1(\"+\");\n        bool negativeSign = sign == bytes1(\"-\");\n        uint256 offset = (positiveSign || negativeSign).toUint();\n\n        (bool absSuccess, uint256 absValue) = tryParseUint(input, begin + offset, end);\n\n        if (absSuccess && absValue < ABS_MIN_INT256) {\n            return (true, negativeSign ? -int256(absValue) : int256(absValue));\n        } else if (absSuccess && negativeSign && absValue == ABS_MIN_INT256) {\n            return (true, type(int256).min);\n        } else return (false, 0);\n    }\n\n    /**\n     * @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as a `uint256`.\n     *\n     * Requirements:\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]*`\n     * - The result must fit in an `uint256` type.\n     */\n    function parseHexUint(string memory input) internal pure returns (uint256) {\n        return parseHexUint(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]*`\n     * - The result must fit in an `uint256` type.\n     */\n    function parseHexUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\n        (bool success, uint256 value) = tryParseHexUint(input, begin, end);\n        if (!success) revert StringsInvalidChar();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseHexUint(string memory input) internal pure returns (bool success, uint256 value) {\n        return _tryParseHexUintUncheckedBounds(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an\n     * invalid character.\n     *\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\n     */\n    function tryParseHexUint(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, uint256 value) {\n        if (end > bytes(input).length || begin > end) return (false, 0);\n        return _tryParseHexUintUncheckedBounds(input, begin, end);\n    }\n\n    /**\n     * @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\n     */\n    function _tryParseHexUintUncheckedBounds(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) private pure returns (bool success, uint256 value) {\n        bytes memory buffer = bytes(input);\n\n        // skip 0x prefix if present\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(buffer, begin)) == bytes2(\"0x\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\n        uint256 offset = hasPrefix.toUint() * 2;\n\n        uint256 result = 0;\n        for (uint256 i = begin + offset; i < end; ++i) {\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\n            if (chr > 15) return (false, 0);\n            result *= 16;\n            unchecked {\n                // Multiplying by 16 is equivalent to a shift of 4 bits (with additional overflow check).\n                // This guarantees that adding a value < 16 will not cause an overflow, hence the unchecked.\n                result += chr;\n            }\n        }\n        return (true, result);\n    }\n\n    /**\n     * @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as an `address`.\n     *\n     * Requirements:\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]{40}`\n     */\n    function parseAddress(string memory input) internal pure returns (address) {\n        return parseAddress(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and\n     * `end` (excluded).\n     *\n     * Requirements:\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}`\n     */\n    function parseAddress(string memory input, uint256 begin, uint256 end) internal pure returns (address) {\n        (bool success, address value) = tryParseAddress(input, begin, end);\n        if (!success) revert StringsInvalidAddressFormat();\n        return value;\n    }\n\n    /**\n     * @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly\n     * formatted address. See {parseAddress-string} requirements.\n     */\n    function tryParseAddress(string memory input) internal pure returns (bool success, address value) {\n        return tryParseAddress(input, 0, bytes(input).length);\n    }\n\n    /**\n     * @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly\n     * formatted address. See {parseAddress-string-uint256-uint256} requirements.\n     */\n    function tryParseAddress(\n        string memory input,\n        uint256 begin,\n        uint256 end\n    ) internal pure returns (bool success, address value) {\n        if (end > bytes(input).length || begin > end) return (false, address(0));\n\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(bytes(input), begin)) == bytes2(\"0x\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\n        uint256 expectedLength = 40 + hasPrefix.toUint() * 2;\n\n        // check that input is the correct length\n        if (end - begin == expectedLength) {\n            // length guarantees that this does not overflow, and value is at most type(uint160).max\n            (bool s, uint256 v) = _tryParseHexUintUncheckedBounds(input, begin, end);\n            return (s, address(uint160(v)));\n        } else {\n            return (false, address(0));\n        }\n    }\n\n    function _tryParseChr(bytes1 chr) private pure returns (uint8) {\n        uint8 value = uint8(chr);\n\n        // Try to parse `chr`:\n        // - Case 1: [0-9]\n        // - Case 2: [a-f]\n        // - Case 3: [A-F]\n        // - otherwise not supported\n        unchecked {\n            if (value > 47 && value < 58) value -= 48;\n            else if (value > 96 && value < 103) value -= 87;\n            else if (value > 64 && value < 71) value -= 55;\n            else return type(uint8).max;\n        }\n\n        return value;\n    }\n\n    /**\n     * @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata.\n     *\n     * WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped.\n     *\n     * NOTE: This function escapes all unicode characters, and not just the ones in ranges defined in section 2.5 of\n     * RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). ECMAScript's `JSON.parse` does recover escaped unicode\n     * characters that are not in this range, but other tooling may provide different results.\n     */\n    function escapeJSON(string memory input) internal pure returns (string memory) {\n        bytes memory buffer = bytes(input);\n        bytes memory output = new bytes(2 * buffer.length); // worst case scenario\n        uint256 outputLength = 0;\n\n        for (uint256 i; i < buffer.length; ++i) {\n            bytes1 char = bytes1(_unsafeReadBytesOffset(buffer, i));\n            if (((SPECIAL_CHARS_LOOKUP & (1 << uint8(char))) != 0)) {\n                output[outputLength++] = \"\\\\\";\n                if (char == 0x08) output[outputLength++] = \"b\";\n                else if (char == 0x09) output[outputLength++] = \"t\";\n                else if (char == 0x0a) output[outputLength++] = \"n\";\n                else if (char == 0x0c) output[outputLength++] = \"f\";\n                else if (char == 0x0d) output[outputLength++] = \"r\";\n                else if (char == 0x5c) output[outputLength++] = \"\\\\\";\n                else if (char == 0x22) {\n                    // solhint-disable-next-line quotes\n                    output[outputLength++] = '\"';\n                }\n            } else {\n                output[outputLength++] = char;\n            }\n        }\n        // write the actual length and deallocate unused memory\n        assembly (\"memory-safe\") {\n            mstore(output, outputLength)\n            mstore(0x40, add(output, shl(5, shr(5, add(outputLength, 63)))))\n        }\n\n        return string(output);\n    }\n\n    /**\n     * @dev Reads a bytes32 from a bytes array without bounds checking.\n     *\n     * NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n     * assembly block as such would prevent some optimizations.\n     */\n    function _unsafeReadBytesOffset(bytes memory buffer, uint256 offset) private pure returns (bytes32 value) {\n        // This is not memory safe in the general case, but all calls to this private function are within bounds.\n        assembly (\"memory-safe\") {\n            value := mload(add(buffer, add(0x20, offset)))\n        }\n    }\n}\n"},"contracts/ERC6551Account.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/interfaces/IERC1271.sol\";\nimport \"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\";\nimport \"./interfaces/IERC6551Account.sol\";\nimport \"./interfaces/IERC6551Executable.sol\";\n\n/**\n * @title A simple implementation of ERC6551Account\n * @author ERC6551 Team\n */\ncontract ERC6551Account is\n    IERC165,\n    IERC1271,\n    IERC6551Account,\n    IERC6551Executable\n{\n    /**\n     * @dev Account state nonce, incremented on each transaction\n     */\n    uint256 public state;\n\n    /**\n     * @dev Storage slot for token data\n     * This is written during initialization by the registry\n     * Structure: chainId (uint256), tokenContract (address), tokenId (uint256)\n     */\n    bytes32 private constant TOKEN_DATA_SLOT =\n        keccak256(\"erc6551.account.token\");\n\n    /**\n     * @dev Allows the account to receive ETH\n     */\n    receive() external payable {}\n\n    /**\n     * @dev Executes a transaction from the token owner\n     */\n    function execute(\n        address to,\n        uint256 value,\n        bytes calldata data,\n        uint8 operation\n    ) external payable returns (bytes memory result) {\n        require(_isValidSigner(msg.sender), \"Invalid signer\");\n\n        ++state;\n\n        if (operation == 0) {\n            // Call\n            (bool success, bytes memory ret) = to.call{value: value}(data);\n            require(success, \"Call failed\");\n            return ret;\n        } else if (operation == 1) {\n            // Delegatecall\n            (bool success, bytes memory ret) = to.delegatecall(data);\n            require(success, \"Delegatecall failed\");\n            return ret;\n        } else {\n            revert(\"Unsupported operation\");\n        }\n    }\n\n    /**\n     * @dev Returns the token bound to this account\n     */\n    function token()\n        external\n        view\n        returns (uint256 chainId, address tokenContract, uint256 tokenId)\n    {\n        // Read the token data from storage\n        bytes32 slot = TOKEN_DATA_SLOT;\n        assembly {\n            chainId := sload(slot)\n            tokenContract := sload(add(slot, 1))\n            tokenId := sload(add(slot, 2))\n        }\n    }\n\n    /**\n     * @dev Initialization function that stores token data\n     * This is called by the registry during account creation\n     */\n    function initialize(\n        uint256 chainId,\n        address tokenContract,\n        uint256 tokenId\n    ) external {\n        // Ensure this can only be called once during creation\n        bytes32 slot = TOKEN_DATA_SLOT;\n        uint256 storedChainId;\n        assembly {\n            storedChainId := sload(slot)\n        }\n        require(storedChainId == 0, \"Already initialized\");\n\n        // Store token data in storage\n        assembly {\n            sstore(slot, chainId)\n            sstore(add(slot, 1), tokenContract)\n            sstore(add(slot, 2), tokenId)\n        }\n    }\n\n    /**\n     * @dev Validates if a signer is authorized to perform actions\n     */\n    function isValidSigner(\n        address signer,\n        bytes calldata\n    ) external view returns (bytes4) {\n        if (_isValidSigner(signer)) {\n            return IERC6551Account.isValidSigner.selector;\n        }\n\n        return bytes4(0);\n    }\n\n    /**\n     * @dev Validates signatures according to ERC-1271\n     */\n    function isValidSignature(\n        bytes32 hash,\n        bytes memory signature\n    ) external view returns (bytes4 magicValue) {\n        (uint256 chainId, address tokenContract, uint256 tokenId) = this\n            .token();\n\n        if (chainId != block.chainid) return bytes4(0);\n\n        address owner = IERC721(tokenContract).ownerOf(tokenId);\n\n        if (SignatureChecker.isValidSignatureNow(owner, hash, signature)) {\n            return IERC1271.isValidSignature.selector;\n        }\n\n        return bytes4(0);\n    }\n\n    /**\n     * @dev Implements interface detection\n     */\n    function supportsInterface(\n        bytes4 interfaceId\n    ) external pure returns (bool) {\n        return (interfaceId == type(IERC165).interfaceId ||\n            interfaceId == type(IERC6551Account).interfaceId ||\n            interfaceId == type(IERC6551Executable).interfaceId);\n    }\n\n    /**\n     * @dev Internal helper to check if a signer is valid\n     */\n    function _isValidSigner(address signer) internal view returns (bool) {\n        (uint256 chainId, address tokenContract, uint256 tokenId) = this\n            .token();\n\n        if (chainId != block.chainid) return false;\n\n        return signer == IERC721(tokenContract).ownerOf(tokenId);\n    }\n}\n"},"contracts/ERC6551Registry.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\ninterface IERC6551Registry {\n    /**\n     * @dev The registry MUST emit the ERC6551AccountCreated event upon successful account creation.\n     */\n    event ERC6551AccountCreated(\n        address account,\n        address indexed implementation,\n        bytes32 salt,\n        uint256 chainId,\n        address indexed tokenContract,\n        uint256 indexed tokenId\n    );\n\n    /**\n     * @dev The registry MUST revert with AccountCreationFailed error if the create2 operation fails.\n     */\n    error AccountCreationFailed();\n\n    /**\n     * @dev Creates a token bound account for a non-fungible token.\n     *\n     * If account has already been created, returns the account address without calling create2.\n     *\n     * Emits ERC6551AccountCreated event.\n     *\n     * @return account The address of the token bound account\n     */\n    function createAccount(\n        address implementation,\n        bytes32 salt,\n        uint256 chainId,\n        address tokenContract,\n        uint256 tokenId\n    ) external returns (address account);\n\n    /**\n     * @dev Returns the computed token bound account address for a non-fungible token.\n     *\n     * @return account The address of the token bound account\n     */\n    function account(\n        address implementation,\n        bytes32 salt,\n        uint256 chainId,\n        address tokenContract,\n        uint256 tokenId\n    ) external view returns (address account);\n}\n\n// Interface to call the initialize method on the account contract\ninterface IERC6551AccountInitializable {\n    function initialize(\n        uint256 chainId,\n        address tokenContract,\n        uint256 tokenId\n    ) external;\n}\n\ncontract ERC6551Registry is IERC6551Registry {\n    /**\n     * @dev Creates an ERC6551 account\n     */\n    function createAccount(\n        address implementation,\n        bytes32 salt,\n        uint256 chainId,\n        address tokenContract,\n        uint256 tokenId\n    ) external returns (address) {\n        // Compute the account address\n        bytes32 combinedSalt = _getCombinedSalt(\n            salt,\n            chainId,\n            tokenContract,\n            tokenId\n        );\n        address predictedAddress = _computeAccountAddress(\n            implementation,\n            combinedSalt\n        );\n\n        // Check if the account already exists\n        uint256 codeSize;\n        assembly {\n            codeSize := extcodesize(predictedAddress)\n        }\n\n        // If account exists, return its address\n        if (codeSize > 0) {\n            return predictedAddress;\n        }\n\n        // Create the ERC-1167 proxy to implementation\n        bytes memory bytecode = _getCreationBytecode(implementation);\n        address deployedAddress;\n\n        assembly {\n            deployedAddress := create2(\n                0, // No ETH sent\n                add(bytecode, 32), // Skip the length field\n                mload(bytecode), // Length of the bytecode\n                combinedSalt\n            )\n        }\n\n        // Check if deployment was successful\n        if (deployedAddress == address(0)) {\n            revert AccountCreationFailed();\n        }\n\n        // Initialize the account with NFT data\n        IERC6551AccountInitializable(deployedAddress).initialize(\n            chainId,\n            tokenContract,\n            tokenId\n        );\n\n        // Emit account created event\n        emit ERC6551AccountCreated(\n            deployedAddress,\n            implementation,\n            salt,\n            chainId,\n            tokenContract,\n            tokenId\n        );\n\n        return deployedAddress;\n    }\n\n    /**\n     * @dev Returns the deterministic address for a TBA\n     */\n    function account(\n        address implementation,\n        bytes32 salt,\n        uint256 chainId,\n        address tokenContract,\n        uint256 tokenId\n    ) public view returns (address) {\n        bytes32 combinedSalt = _getCombinedSalt(\n            salt,\n            chainId,\n            tokenContract,\n            tokenId\n        );\n        return _computeAccountAddress(implementation, combinedSalt);\n    }\n\n    /**\n     * @dev Combines all parameters into a single salt\n     */\n    function _getCombinedSalt(\n        bytes32 salt,\n        uint256 chainId,\n        address tokenContract,\n        uint256 tokenId\n    ) internal pure returns (bytes32) {\n        return keccak256(abi.encode(salt, chainId, tokenContract, tokenId));\n    }\n\n    /**\n     * @dev Returns the creation bytecode for a minimal proxy\n     */\n    function _getCreationBytecode(\n        address implementation\n    ) internal pure returns (bytes memory) {\n        return\n            abi.encodePacked(\n                // ERC-1167 minimal proxy bytecode\n                hex\"3d602d80600a3d3981f3363d3d373d3d3d363d73\",\n                implementation,\n                hex\"5af43d82803e903d91602b57fd5bf3\"\n            );\n    }\n\n    /**\n     * @dev Computes the account address using CREATE2\n     */\n    function _computeAccountAddress(\n        address implementation,\n        bytes32 combinedSalt\n    ) internal view returns (address) {\n        bytes memory bytecode = _getCreationBytecode(implementation);\n\n        bytes32 bytecodeHash = keccak256(bytecode);\n\n        return\n            address(\n                uint160(\n                    uint256(\n                        keccak256(\n                            abi.encodePacked(\n                                bytes1(0xff),\n                                address(this),\n                                combinedSalt,\n                                bytecodeHash\n                            )\n                        )\n                    )\n                )\n            );\n    }\n}\n"},"contracts/interfaces/IERC6551Account.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @dev the ERC-165 identifier for this interface is `0x6faff5f1`\ninterface IERC6551Account {\n    /**\n     * @dev Allows the account to receive Ether.\n     *\n     * Accounts MUST implement a `receive` function.\n     *\n     * Accounts MAY perform arbitrary logic to restrict conditions\n     * under which Ether can be received.\n     */\n    receive() external payable;\n\n    /**\n     * @dev Returns the identifier of the non-fungible token which owns the account.\n     *\n     * The return value of this function MUST be constant - it MUST NOT change over time.\n     *\n     * @return chainId       The EIP-155 ID of the chain the token exists on\n     * @return tokenContract The contract address of the token\n     * @return tokenId       The ID of the token\n     */\n    function token()\n        external\n        view\n        returns (uint256 chainId, address tokenContract, uint256 tokenId);\n\n    /**\n     * @dev Returns a value that SHOULD be modified each time the account changes state.\n     *\n     * @return The current account state\n     */\n    function state() external view returns (uint256);\n\n    /**\n     * @dev Returns a magic value indicating whether a given signer is authorized to act on behalf\n     * of the account.\n     *\n     * MUST return the bytes4 magic value 0x523e3260 if the given signer is valid.\n     *\n     * By default, the holder of the non-fungible token the account is bound to MUST be considered\n     * a valid signer.\n     *\n     * Accounts MAY implement additional authorization logic which invalidates the holder as a\n     * signer or grants signing permissions to other non-holder accounts.\n     *\n     * @param  signer     The address to check signing authorization for\n     * @param  context    Additional data used to determine whether the signer is valid\n     * @return magicValue Magic value indicating whether the signer is valid\n     */\n    function isValidSigner(address signer, bytes calldata context)\n        external\n        view\n        returns (bytes4 magicValue);\n}\n"},"contracts/interfaces/IERC6551Executable.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @dev the ERC-165 identifier for this interface is `0x51945447`\ninterface IERC6551Executable {\n    /**\n     * @dev Executes a low-level operation if the caller is a valid signer on the account.\n     *\n     * Reverts and bubbles up error if operation fails.\n     *\n     * Accounts implementing this interface MUST accept the following operation parameter values:\n     * - 0 = CALL\n     * - 1 = DELEGATECALL\n     * - 2 = CREATE\n     * - 3 = CREATE2\n     *\n     * Accounts implementing this interface MAY support additional operations or restrict a signer's\n     * ability to execute certain operations.\n     *\n     * @param to        The target address of the operation\n     * @param value     The Ether value to be sent to the target\n     * @param data      The encoded operation calldata\n     * @param operation A value indicating the type of operation to perform\n     * @return The result of the operation\n     */\n    function execute(address to, uint256 value, bytes calldata data, uint8 operation)\n        external\n        payable\n        returns (bytes memory);\n}\n"},"contracts/interfaces/IERC6551Registry.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.28;\n\n/// @dev ERC-165 identifier for this interface is 0x35e5c0ab\ninterface IERC6551Registry {\n    /**\n     * @dev Creates an ERC-6551 account\n     * @param implementation The address of the account implementation to use\n     * @param chainId The EIP-155 ID of the chain where the token exists\n     * @param tokenContract The address of the token contract\n     * @param tokenId The ID of the token\n     * @param salt A random value that allows for the creation of multiple accounts for the same NFT\n     * @param initData The initialization data for the account\n     */\n    function createAccount(\n        address implementation,\n        uint256 chainId,\n        address tokenContract,\n        uint256 tokenId,\n        uint256 salt,\n        bytes calldata initData\n    ) external returns (address);\n\n    /**\n     * @dev Returns the account address associated with a specific token\n     * @param implementation The address of the account implementation to use\n     * @param chainId The EIP-155 ID of the chain where the token exists\n     * @param tokenContract The address of the token contract\n     * @param tokenId The ID of the token\n     * @param salt A random value that allows for the creation of multiple accounts for the same NFT\n     */\n    function account(\n        address implementation,\n        uint256 chainId,\n        address tokenContract,\n        uint256 tokenId,\n        uint256 salt\n    ) external view returns (address);\n\n    /**\n     * @dev Emitted when a new account is created\n     */\n    event AccountCreated(\n        address account,\n        address implementation,\n        uint256 chainId,\n        address tokenContract,\n        uint256 tokenId,\n        uint256 salt\n    );\n}\n"},"contracts/IPNFT.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.28;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\n/**\n * @title IPNFT\n * @dev This contract is used to create and manage intellectual property NFTs\n */\ncontract IPNFT is ERC721URIStorage, Ownable {\n    // Token ID counter\n    uint256 private _nextTokenId;\n\n    // Intellectual property types\n    enum IPType {\n        Patent,\n        Trademark,\n        Copyright,\n        Other\n    }\n\n    // Intellectual property NFT information\n    struct IPInfo {\n        string title; // IP title\n        string description; // IP description\n        IPType ipType; // IP type\n        uint256 createdAt; // Creation timestamp\n    }\n\n    // Mapping from token ID to IP info\n    mapping(uint256 => IPInfo) private _ipInfo;\n\n    // Events\n    event IPNFTMinted(\n        uint256 indexed tokenId,\n        address indexed owner,\n        IPType ipType,\n        string title\n    );\n\n    constructor(\n        address initialOwner\n    ) ERC721(\"Intellectual Property NFT\", \"IPNFT\") Ownable(initialOwner) {}\n\n    /**\n     * @dev Mints a new intellectual property NFT\n     * @param to The receiver address of the token\n     * @param uri The token metadata URI\n     * @param title The IP title\n     * @param description The IP description\n     * @param ipType The IP type\n     * @return The newly minted token ID\n     */\n    function mint(\n        address to,\n        string memory uri,\n        string memory title,\n        string memory description,\n        IPType ipType\n    ) public onlyOwner returns (uint256) {\n        uint256 tokenId = _nextTokenId;\n        _nextTokenId++;\n\n        _safeMint(to, tokenId);\n        _setTokenURI(tokenId, uri);\n\n        // Set IP information\n        _ipInfo[tokenId] = IPInfo({\n            title: title,\n            description: description,\n            ipType: ipType,\n            createdAt: block.timestamp\n        });\n\n        emit IPNFTMinted(tokenId, to, ipType, title);\n\n        return tokenId;\n    }\n\n    /**\n     * @dev Gets the intellectual property information\n     * @param tokenId Token ID\n     */\n    function getIPInfo(uint256 tokenId) public view returns (IPInfo memory) {\n        require(_exists(tokenId), \"IPNFT: token does not exist\");\n        return _ipInfo[tokenId];\n    }\n\n    /**\n     * @dev Gets the total number of minted NFTs\n     */\n    function totalSupply() public view returns (uint256) {\n        return _nextTokenId;\n    }\n\n    /**\n     * @dev Gets all tokens owned by a specific address\n     * @param owner The owner address\n     */\n    function tokensOfOwner(\n        address owner\n    ) public view returns (uint256[] memory) {\n        uint256 tokenCount = balanceOf(owner);\n        uint256[] memory tokenIds = new uint256[](tokenCount);\n\n        for (uint256 i = 0; i < tokenCount; i++) {\n            tokenIds[i] = tokenOfOwnerByIndex(owner, i);\n        }\n\n        return tokenIds;\n    }\n\n    /**\n     * @dev Returns the token ID at a given index of an owner's token list\n     * @param owner The owner address\n     * @param index The index in the owner's token list\n     */\n    function tokenOfOwnerByIndex(\n        address owner,\n        uint256 index\n    ) public view returns (uint256) {\n        require(index < balanceOf(owner), \"IPNFT: index out of bounds\");\n\n        uint256 count = 0;\n        for (uint256 i = 0; i < _nextTokenId; i++) {\n            if (_exists(i) && ownerOf(i) == owner) {\n                if (count == index) {\n                    return i;\n                }\n                count++;\n            }\n        }\n\n        revert(\"IPNFT: index out of bounds\");\n    }\n\n    /**\n     * @dev Checks if a token exists\n     */\n    function _exists(uint256 tokenId) internal view returns (bool) {\n        return _ownerOf(tokenId) != address(0);\n    }\n\n    // Override _update to add custom logic when transferring NFTs\n    function _update(\n        address to,\n        uint256 tokenId,\n        address auth\n    ) internal override returns (address) {\n        address from = super._update(to, tokenId, auth);\n\n        // Add any custom transfer logic here if needed\n\n        return from;\n    }\n}\n"},"contracts/Lock.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.28;\n\n// Uncomment this line to use console.log\n// import \"hardhat/console.sol\";\n\ncontract Lock {\n    uint public unlockTime;\n    address payable public owner;\n\n    event Withdrawal(uint amount, uint when);\n\n    constructor(uint _unlockTime) payable {\n        require(\n            block.timestamp < _unlockTime,\n            \"Unlock time should be in the future\"\n        );\n\n        unlockTime = _unlockTime;\n        owner = payable(msg.sender);\n    }\n\n    function withdraw() public {\n        // Uncomment this line, and the import of \"hardhat/console.sol\", to print a log in your terminal\n        // console.log(\"Unlock time is %o and block timestamp is %o\", unlockTime, block.timestamp);\n\n        require(block.timestamp >= unlockTime, \"You can't withdraw yet\");\n        require(msg.sender == owner, \"You aren't the owner\");\n\n        emit Withdrawal(address(this).balance, block.timestamp);\n\n        owner.transfer(address(this).balance);\n    }\n}\n"},"contracts/SS.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport {OFT} from \"@layerzerolabs/oft-evm/contracts/OFT.sol\";\n\ncontract SS is OFT {\n    constructor(\n        string memory _name,\n        string memory _symbol,\n        address _lzEndpoint,\n        address _delegate\n    ) OFT(_name, _symbol, _lzEndpoint, _delegate) Ownable(_delegate) {}\n\n    /**\n     * @dev Mints new tokens to the specified address\n     * @param _to The address to mint tokens to\n     * @param _amount The amount of tokens to mint\n     */\n    function mint(address _to, uint256 _amount) external onlyOwner {\n        _mint(_to, _amount);\n    }\n}\n"},"contracts/SSG.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport {OFT} from \"@layerzerolabs/oft-evm/contracts/OFT.sol\";\n\ncontract SSG is OFT {\n    uint256 public constant MAX_SUPPLY = 20_000_000 * 10 ** 18;\n\n    error MaxSupplyExceeded();\n\n    constructor(\n        string memory _name,\n        string memory _symbol,\n        address _lzEndpoint,\n        address _delegate\n    ) OFT(_name, _symbol, _lzEndpoint, _delegate) Ownable(_delegate) {}\n\n    /**\n     * @dev Mints new tokens to the specified address\n     * @param _to The address to mint tokens to\n     * @param _amount The amount of tokens to mint\n     */\n    function mint(address _to, uint256 _amount) external onlyOwner {\n        if (totalSupply() + _amount > MAX_SUPPLY) {\n            revert MaxSupplyExceeded();\n        }\n        _mint(_to, _amount);\n    }\n\n    /**\n     * @dev Override _credit method to enforce max supply limit during cross-chain transfers\n     */\n    function _credit(\n        address _to,\n        uint256 _amountLD,\n        uint32 _srcEid\n    ) internal virtual override returns (uint256 amountReceivedLD) {\n        // Check if minting would exceed max supply\n        if (totalSupply() + _amountLD > MAX_SUPPLY) {\n            revert MaxSupplyExceeded();\n        }\n        return super._credit(_to, _amountLD, _srcEid);\n    }\n\n    /**\n     * @dev Override _update to enforce max supply limit for all minting operations\n     * This is used by both _mint and cross-chain transfers\n     */\n    function _update(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual override {\n        if (from == address(0) && totalSupply() + amount > MAX_SUPPLY) {\n            revert MaxSupplyExceeded();\n        }\n        super._update(from, to, amount);\n    }\n}\n"},"contracts/UniqueNFT.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.28;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract UniqueNFT is ERC721URIStorage, Ownable {\n    // 限定NFT的总数量为1\n    uint256 private constant MAX_SUPPLY = 1;\n\n    // 追踪已铸造的NFT数量\n    uint256 private _tokenIdCounter;\n\n    // 记录NFT是否已经被铸造\n    bool private _isMinted;\n\n    constructor(\n        address initialOwner\n    ) ERC721(\"UniqueNFT\", \"UNFT\") Ownable(initialOwner) {\n        _tokenIdCounter = 0;\n        _isMinted = false;\n    }\n\n    /**\n     * @dev 铸造唯一的NFT\n     * @param recipient NFT接收者地址\n     * @param tokenURI NFT的元数据URI\n     */\n    function mint(\n        address recipient,\n        string memory tokenURI\n    ) public onlyOwner returns (uint256) {\n        require(!_isMinted, \"UniqueNFT: The only NFT has already been minted\");\n        require(\n            _tokenIdCounter < MAX_SUPPLY,\n            \"UniqueNFT: Maximum supply reached\"\n        );\n\n        uint256 tokenId = _tokenIdCounter;\n        _safeMint(recipient, tokenId);\n        _setTokenURI(tokenId, tokenURI);\n\n        _tokenIdCounter += 1;\n        _isMinted = true;\n\n        return tokenId;\n    }\n\n    /**\n     * @dev 返回当前铸造的NFT总数\n     */\n    function totalSupply() public view returns (uint256) {\n        return _tokenIdCounter;\n    }\n\n    /**\n     * @dev 检查NFT是否已经被铸造\n     */\n    function isMinted() public view returns (bool) {\n        return _isMinted;\n    }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","exportedSymbols":{"ILayerZeroEndpointV2":[202],"IMessageLibManager":[538],"IMessagingChannel":[674],"IMessagingComposer":[760],"IMessagingContext":[775],"MessagingFee":[33],"MessagingParams":[20],"MessagingReceipt":[28],"Origin":[40]},"id":203,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:0"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol","file":"./IMessageLibManager.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":203,"sourceUnit":539,"src":"59:62:0","symbolAliases":[{"foreign":{"id":2,"name":"IMessageLibManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":538,"src":"68:18:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol","file":"./IMessagingComposer.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":203,"sourceUnit":761,"src":"122:62:0","symbolAliases":[{"foreign":{"id":4,"name":"IMessagingComposer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"131:18:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol","file":"./IMessagingChannel.sol","id":7,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":203,"sourceUnit":675,"src":"185:60:0","symbolAliases":[{"foreign":{"id":6,"name":"IMessagingChannel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"194:17:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol","file":"./IMessagingContext.sol","id":9,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":203,"sourceUnit":776,"src":"246:60:0","symbolAliases":[{"foreign":{"id":8,"name":"IMessagingContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"255:17:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"MessagingParams","id":20,"members":[{"constant":false,"id":11,"mutability":"mutable","name":"dstEid","nameLocation":"344:6:0","nodeType":"VariableDeclaration","scope":20,"src":"337:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":10,"name":"uint32","nodeType":"ElementaryTypeName","src":"337:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13,"mutability":"mutable","name":"receiver","nameLocation":"364:8:0","nodeType":"VariableDeclaration","scope":20,"src":"356:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12,"name":"bytes32","nodeType":"ElementaryTypeName","src":"356:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15,"mutability":"mutable","name":"message","nameLocation":"384:7:0","nodeType":"VariableDeclaration","scope":20,"src":"378:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":14,"name":"bytes","nodeType":"ElementaryTypeName","src":"378:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":17,"mutability":"mutable","name":"options","nameLocation":"403:7:0","nodeType":"VariableDeclaration","scope":20,"src":"397:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":16,"name":"bytes","nodeType":"ElementaryTypeName","src":"397:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":19,"mutability":"mutable","name":"payInLzToken","nameLocation":"421:12:0","nodeType":"VariableDeclaration","scope":20,"src":"416:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18,"name":"bool","nodeType":"ElementaryTypeName","src":"416:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"MessagingParams","nameLocation":"315:15:0","nodeType":"StructDefinition","scope":203,"src":"308:128:0","visibility":"public"},{"canonicalName":"MessagingReceipt","id":28,"members":[{"constant":false,"id":22,"mutability":"mutable","name":"guid","nameLocation":"476:4:0","nodeType":"VariableDeclaration","scope":28,"src":"468:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21,"name":"bytes32","nodeType":"ElementaryTypeName","src":"468:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":24,"mutability":"mutable","name":"nonce","nameLocation":"493:5:0","nodeType":"VariableDeclaration","scope":28,"src":"486:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":23,"name":"uint64","nodeType":"ElementaryTypeName","src":"486:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":27,"mutability":"mutable","name":"fee","nameLocation":"517:3:0","nodeType":"VariableDeclaration","scope":28,"src":"504:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"},"typeName":{"id":26,"nodeType":"UserDefinedTypeName","pathNode":{"id":25,"name":"MessagingFee","nameLocations":["504:12:0"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"504:12:0"},"referencedDeclaration":33,"src":"504:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"}],"name":"MessagingReceipt","nameLocation":"445:16:0","nodeType":"StructDefinition","scope":203,"src":"438:85:0","visibility":"public"},{"canonicalName":"MessagingFee","id":33,"members":[{"constant":false,"id":30,"mutability":"mutable","name":"nativeFee","nameLocation":"559:9:0","nodeType":"VariableDeclaration","scope":33,"src":"551:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29,"name":"uint256","nodeType":"ElementaryTypeName","src":"551:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":32,"mutability":"mutable","name":"lzTokenFee","nameLocation":"582:10:0","nodeType":"VariableDeclaration","scope":33,"src":"574:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31,"name":"uint256","nodeType":"ElementaryTypeName","src":"574:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"MessagingFee","nameLocation":"532:12:0","nodeType":"StructDefinition","scope":203,"src":"525:70:0","visibility":"public"},{"canonicalName":"Origin","id":40,"members":[{"constant":false,"id":35,"mutability":"mutable","name":"srcEid","nameLocation":"624:6:0","nodeType":"VariableDeclaration","scope":40,"src":"617:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":34,"name":"uint32","nodeType":"ElementaryTypeName","src":"617:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":37,"mutability":"mutable","name":"sender","nameLocation":"644:6:0","nodeType":"VariableDeclaration","scope":40,"src":"636:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":36,"name":"bytes32","nodeType":"ElementaryTypeName","src":"636:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":39,"mutability":"mutable","name":"nonce","nameLocation":"663:5:0","nodeType":"VariableDeclaration","scope":40,"src":"656:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":38,"name":"uint64","nodeType":"ElementaryTypeName","src":"656:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"name":"Origin","nameLocation":"604:6:0","nodeType":"StructDefinition","scope":203,"src":"597:74:0","visibility":"public"},{"abstract":false,"baseContracts":[{"baseName":{"id":41,"name":"IMessageLibManager","nameLocations":["707:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":538,"src":"707:18:0"},"id":42,"nodeType":"InheritanceSpecifier","src":"707:18:0"},{"baseName":{"id":43,"name":"IMessagingComposer","nameLocations":["727:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":760,"src":"727:18:0"},"id":44,"nodeType":"InheritanceSpecifier","src":"727:18:0"},{"baseName":{"id":45,"name":"IMessagingChannel","nameLocations":["747:17:0"],"nodeType":"IdentifierPath","referencedDeclaration":674,"src":"747:17:0"},"id":46,"nodeType":"InheritanceSpecifier","src":"747:17:0"},{"baseName":{"id":47,"name":"IMessagingContext","nameLocations":["766:17:0"],"nodeType":"IdentifierPath","referencedDeclaration":775,"src":"766:17:0"},"id":48,"nodeType":"InheritanceSpecifier","src":"766:17:0"}],"canonicalName":"ILayerZeroEndpointV2","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":202,"linearizedBaseContracts":[202,775,674,760,538],"name":"ILayerZeroEndpointV2","nameLocation":"683:20:0","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"1ab700d4ced0c005b164c0f789fd09fcbb0156d4c2041b8a3bfbcd961cd1567f","id":56,"name":"PacketSent","nameLocation":"796:10:0","nodeType":"EventDefinition","parameters":{"id":55,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"indexed":false,"mutability":"mutable","name":"encodedPayload","nameLocation":"813:14:0","nodeType":"VariableDeclaration","scope":56,"src":"807:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":49,"name":"bytes","nodeType":"ElementaryTypeName","src":"807:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":52,"indexed":false,"mutability":"mutable","name":"options","nameLocation":"835:7:0","nodeType":"VariableDeclaration","scope":56,"src":"829:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":51,"name":"bytes","nodeType":"ElementaryTypeName","src":"829:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54,"indexed":false,"mutability":"mutable","name":"sendLibrary","nameLocation":"852:11:0","nodeType":"VariableDeclaration","scope":56,"src":"844:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53,"name":"address","nodeType":"ElementaryTypeName","src":"844:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"806:58:0"},"src":"790:75:0"},{"anonymous":false,"eventSelector":"0d87345f3d1c929caba93e1c3821b54ff3512e12b66aa3cfe54b6bcbc17e59b4","id":65,"name":"PacketVerified","nameLocation":"877:14:0","nodeType":"EventDefinition","parameters":{"id":64,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59,"indexed":false,"mutability":"mutable","name":"origin","nameLocation":"899:6:0","nodeType":"VariableDeclaration","scope":65,"src":"892:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_memory_ptr","typeString":"struct Origin"},"typeName":{"id":58,"nodeType":"UserDefinedTypeName","pathNode":{"id":57,"name":"Origin","nameLocations":["892:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"892:6:0"},"referencedDeclaration":40,"src":"892:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":61,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"915:8:0","nodeType":"VariableDeclaration","scope":65,"src":"907:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60,"name":"address","nodeType":"ElementaryTypeName","src":"907:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":63,"indexed":false,"mutability":"mutable","name":"payloadHash","nameLocation":"933:11:0","nodeType":"VariableDeclaration","scope":65,"src":"925:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":62,"name":"bytes32","nodeType":"ElementaryTypeName","src":"925:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"891:54:0"},"src":"871:75:0"},{"anonymous":false,"eventSelector":"3cd5e48f9730b129dc7550f0fcea9c767b7be37837cd10e55eb35f734f4bca04","id":72,"name":"PacketDelivered","nameLocation":"958:15:0","nodeType":"EventDefinition","parameters":{"id":71,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68,"indexed":false,"mutability":"mutable","name":"origin","nameLocation":"981:6:0","nodeType":"VariableDeclaration","scope":72,"src":"974:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_memory_ptr","typeString":"struct Origin"},"typeName":{"id":67,"nodeType":"UserDefinedTypeName","pathNode":{"id":66,"name":"Origin","nameLocations":["974:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"974:6:0"},"referencedDeclaration":40,"src":"974:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":70,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"997:8:0","nodeType":"VariableDeclaration","scope":72,"src":"989:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69,"name":"address","nodeType":"ElementaryTypeName","src":"989:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"973:33:0"},"src":"952:55:0"},{"anonymous":false,"eventSelector":"7edfa10fe10193301ad8a8bea7e968c7bcabcc64981f368e3aeada40ce26ae2c","id":93,"name":"LzReceiveAlert","nameLocation":"1019:14:0","nodeType":"EventDefinition","parameters":{"id":92,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"1059:8:0","nodeType":"VariableDeclaration","scope":93,"src":"1043:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"indexed":true,"mutability":"mutable","name":"executor","nameLocation":"1093:8:0","nodeType":"VariableDeclaration","scope":93,"src":"1077:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75,"name":"address","nodeType":"ElementaryTypeName","src":"1077:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79,"indexed":false,"mutability":"mutable","name":"origin","nameLocation":"1118:6:0","nodeType":"VariableDeclaration","scope":93,"src":"1111:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_memory_ptr","typeString":"struct Origin"},"typeName":{"id":78,"nodeType":"UserDefinedTypeName","pathNode":{"id":77,"name":"Origin","nameLocations":["1111:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"1111:6:0"},"referencedDeclaration":40,"src":"1111:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":81,"indexed":false,"mutability":"mutable","name":"guid","nameLocation":"1142:4:0","nodeType":"VariableDeclaration","scope":93,"src":"1134:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1134:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83,"indexed":false,"mutability":"mutable","name":"gas","nameLocation":"1164:3:0","nodeType":"VariableDeclaration","scope":93,"src":"1156:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82,"name":"uint256","nodeType":"ElementaryTypeName","src":"1156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":85,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1185:5:0","nodeType":"VariableDeclaration","scope":93,"src":"1177:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84,"name":"uint256","nodeType":"ElementaryTypeName","src":"1177:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87,"indexed":false,"mutability":"mutable","name":"message","nameLocation":"1206:7:0","nodeType":"VariableDeclaration","scope":93,"src":"1200:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":86,"name":"bytes","nodeType":"ElementaryTypeName","src":"1200:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":89,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"1229:9:0","nodeType":"VariableDeclaration","scope":93,"src":"1223:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":88,"name":"bytes","nodeType":"ElementaryTypeName","src":"1223:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":91,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"1254:6:0","nodeType":"VariableDeclaration","scope":93,"src":"1248:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":90,"name":"bytes","nodeType":"ElementaryTypeName","src":"1248:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1033:233:0"},"src":"1013:254:0"},{"anonymous":false,"eventSelector":"d476ec5ec1ac11cec3714d41e7ea49419471aceb9bd0dff1becfc3e363a62396","id":97,"name":"LzTokenSet","nameLocation":"1279:10:0","nodeType":"EventDefinition","parameters":{"id":96,"nodeType":"ParameterList","parameters":[{"constant":false,"id":95,"indexed":false,"mutability":"mutable","name":"token","nameLocation":"1298:5:0","nodeType":"VariableDeclaration","scope":97,"src":"1290:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":94,"name":"address","nodeType":"ElementaryTypeName","src":"1290:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1289:15:0"},"src":"1273:32:0"},{"anonymous":false,"eventSelector":"6ee10e9ed4d6ce9742703a498707862f4b00f1396a87195eb93267b3d7983981","id":103,"name":"DelegateSet","nameLocation":"1317:11:0","nodeType":"EventDefinition","parameters":{"id":102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":99,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"1337:6:0","nodeType":"VariableDeclaration","scope":103,"src":"1329:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":98,"name":"address","nodeType":"ElementaryTypeName","src":"1329:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":101,"indexed":false,"mutability":"mutable","name":"delegate","nameLocation":"1353:8:0","nodeType":"VariableDeclaration","scope":103,"src":"1345:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":100,"name":"address","nodeType":"ElementaryTypeName","src":"1345:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1328:34:0"},"src":"1311:52:0"},{"functionSelector":"ddc28c58","id":114,"implemented":false,"kind":"function","modifiers":[],"name":"quote","nameLocation":"1378:5:0","nodeType":"FunctionDefinition","parameters":{"id":109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":106,"mutability":"mutable","name":"_params","nameLocation":"1409:7:0","nodeType":"VariableDeclaration","scope":114,"src":"1384:32:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_calldata_ptr","typeString":"struct MessagingParams"},"typeName":{"id":105,"nodeType":"UserDefinedTypeName","pathNode":{"id":104,"name":"MessagingParams","nameLocations":["1384:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":20,"src":"1384:15:0"},"referencedDeclaration":20,"src":"1384:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_storage_ptr","typeString":"struct MessagingParams"}},"visibility":"internal"},{"constant":false,"id":108,"mutability":"mutable","name":"_sender","nameLocation":"1426:7:0","nodeType":"VariableDeclaration","scope":114,"src":"1418:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":107,"name":"address","nodeType":"ElementaryTypeName","src":"1418:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1383:51:0"},"returnParameters":{"id":113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":112,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":114,"src":"1458:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":111,"nodeType":"UserDefinedTypeName","pathNode":{"id":110,"name":"MessagingFee","nameLocations":["1458:12:0"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"1458:12:0"},"referencedDeclaration":33,"src":"1458:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"}],"src":"1457:21:0"},"scope":202,"src":"1369:110:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2637a450","id":125,"implemented":false,"kind":"function","modifiers":[],"name":"send","nameLocation":"1494:4:0","nodeType":"FunctionDefinition","parameters":{"id":120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117,"mutability":"mutable","name":"_params","nameLocation":"1533:7:0","nodeType":"VariableDeclaration","scope":125,"src":"1508:32:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_calldata_ptr","typeString":"struct MessagingParams"},"typeName":{"id":116,"nodeType":"UserDefinedTypeName","pathNode":{"id":115,"name":"MessagingParams","nameLocations":["1508:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":20,"src":"1508:15:0"},"referencedDeclaration":20,"src":"1508:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_storage_ptr","typeString":"struct MessagingParams"}},"visibility":"internal"},{"constant":false,"id":119,"mutability":"mutable","name":"_refundAddress","nameLocation":"1558:14:0","nodeType":"VariableDeclaration","scope":125,"src":"1550:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":118,"name":"address","nodeType":"ElementaryTypeName","src":"1550:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1498:80:0"},"returnParameters":{"id":124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":123,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":125,"src":"1605:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt"},"typeName":{"id":122,"nodeType":"UserDefinedTypeName","pathNode":{"id":121,"name":"MessagingReceipt","nameLocations":["1605:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":28,"src":"1605:16:0"},"referencedDeclaration":28,"src":"1605:16:0","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_storage_ptr","typeString":"struct MessagingReceipt"}},"visibility":"internal"}],"src":"1604:25:0"},"scope":202,"src":"1485:145:0","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"a825d747","id":135,"implemented":false,"kind":"function","modifiers":[],"name":"verify","nameLocation":"1645:6:0","nodeType":"FunctionDefinition","parameters":{"id":133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":128,"mutability":"mutable","name":"_origin","nameLocation":"1668:7:0","nodeType":"VariableDeclaration","scope":135,"src":"1652:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":127,"nodeType":"UserDefinedTypeName","pathNode":{"id":126,"name":"Origin","nameLocations":["1652:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"1652:6:0"},"referencedDeclaration":40,"src":"1652:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":130,"mutability":"mutable","name":"_receiver","nameLocation":"1685:9:0","nodeType":"VariableDeclaration","scope":135,"src":"1677:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":129,"name":"address","nodeType":"ElementaryTypeName","src":"1677:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":132,"mutability":"mutable","name":"_payloadHash","nameLocation":"1704:12:0","nodeType":"VariableDeclaration","scope":135,"src":"1696:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":131,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1696:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1651:66:0"},"returnParameters":{"id":134,"nodeType":"ParameterList","parameters":[],"src":"1726:0:0"},"scope":202,"src":"1636:91:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c9a54a99","id":145,"implemented":false,"kind":"function","modifiers":[],"name":"verifiable","nameLocation":"1742:10:0","nodeType":"FunctionDefinition","parameters":{"id":141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":138,"mutability":"mutable","name":"_origin","nameLocation":"1769:7:0","nodeType":"VariableDeclaration","scope":145,"src":"1753:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":137,"nodeType":"UserDefinedTypeName","pathNode":{"id":136,"name":"Origin","nameLocations":["1753:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"1753:6:0"},"referencedDeclaration":40,"src":"1753:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":140,"mutability":"mutable","name":"_receiver","nameLocation":"1786:9:0","nodeType":"VariableDeclaration","scope":145,"src":"1778:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":139,"name":"address","nodeType":"ElementaryTypeName","src":"1778:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1752:44:0"},"returnParameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":143,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":145,"src":"1820:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":142,"name":"bool","nodeType":"ElementaryTypeName","src":"1820:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1819:6:0"},"scope":202,"src":"1733:93:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"861e1ca5","id":155,"implemented":false,"kind":"function","modifiers":[],"name":"initializable","nameLocation":"1841:13:0","nodeType":"FunctionDefinition","parameters":{"id":151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"_origin","nameLocation":"1871:7:0","nodeType":"VariableDeclaration","scope":155,"src":"1855:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":147,"nodeType":"UserDefinedTypeName","pathNode":{"id":146,"name":"Origin","nameLocations":["1855:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"1855:6:0"},"referencedDeclaration":40,"src":"1855:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":150,"mutability":"mutable","name":"_receiver","nameLocation":"1888:9:0","nodeType":"VariableDeclaration","scope":155,"src":"1880:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":149,"name":"address","nodeType":"ElementaryTypeName","src":"1880:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1854:44:0"},"returnParameters":{"id":154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":155,"src":"1922:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":152,"name":"bool","nodeType":"ElementaryTypeName","src":"1922:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1921:6:0"},"scope":202,"src":"1832:96:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0c0c389e","id":169,"implemented":false,"kind":"function","modifiers":[],"name":"lzReceive","nameLocation":"1943:9:0","nodeType":"FunctionDefinition","parameters":{"id":167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":158,"mutability":"mutable","name":"_origin","nameLocation":"1978:7:0","nodeType":"VariableDeclaration","scope":169,"src":"1962:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":157,"nodeType":"UserDefinedTypeName","pathNode":{"id":156,"name":"Origin","nameLocations":["1962:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"1962:6:0"},"referencedDeclaration":40,"src":"1962:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":160,"mutability":"mutable","name":"_receiver","nameLocation":"2003:9:0","nodeType":"VariableDeclaration","scope":169,"src":"1995:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":159,"name":"address","nodeType":"ElementaryTypeName","src":"1995:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":162,"mutability":"mutable","name":"_guid","nameLocation":"2030:5:0","nodeType":"VariableDeclaration","scope":169,"src":"2022:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":161,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2022:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":164,"mutability":"mutable","name":"_message","nameLocation":"2060:8:0","nodeType":"VariableDeclaration","scope":169,"src":"2045:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":163,"name":"bytes","nodeType":"ElementaryTypeName","src":"2045:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":166,"mutability":"mutable","name":"_extraData","nameLocation":"2093:10:0","nodeType":"VariableDeclaration","scope":169,"src":"2078:25:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":165,"name":"bytes","nodeType":"ElementaryTypeName","src":"2078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1952:157:0"},"returnParameters":{"id":168,"nodeType":"ParameterList","parameters":[],"src":"2126:0:0"},"scope":202,"src":"1934:193:0","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"2a56c1b0","id":181,"implemented":false,"kind":"function","modifiers":[],"name":"clear","nameLocation":"2269:5:0","nodeType":"FunctionDefinition","parameters":{"id":179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"_oapp","nameLocation":"2283:5:0","nodeType":"VariableDeclaration","scope":181,"src":"2275:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":170,"name":"address","nodeType":"ElementaryTypeName","src":"2275:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":174,"mutability":"mutable","name":"_origin","nameLocation":"2306:7:0","nodeType":"VariableDeclaration","scope":181,"src":"2290:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":173,"nodeType":"UserDefinedTypeName","pathNode":{"id":172,"name":"Origin","nameLocations":["2290:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"2290:6:0"},"referencedDeclaration":40,"src":"2290:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":176,"mutability":"mutable","name":"_guid","nameLocation":"2323:5:0","nodeType":"VariableDeclaration","scope":181,"src":"2315:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":175,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2315:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":178,"mutability":"mutable","name":"_message","nameLocation":"2345:8:0","nodeType":"VariableDeclaration","scope":181,"src":"2330:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":177,"name":"bytes","nodeType":"ElementaryTypeName","src":"2330:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2274:80:0"},"returnParameters":{"id":180,"nodeType":"ParameterList","parameters":[],"src":"2363:0:0"},"scope":202,"src":"2260:104:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c28e0eed","id":186,"implemented":false,"kind":"function","modifiers":[],"name":"setLzToken","nameLocation":"2379:10:0","nodeType":"FunctionDefinition","parameters":{"id":184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":183,"mutability":"mutable","name":"_lzToken","nameLocation":"2398:8:0","nodeType":"VariableDeclaration","scope":186,"src":"2390:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":182,"name":"address","nodeType":"ElementaryTypeName","src":"2390:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2389:18:0"},"returnParameters":{"id":185,"nodeType":"ParameterList","parameters":[],"src":"2416:0:0"},"scope":202,"src":"2370:47:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e4fe1d94","id":191,"implemented":false,"kind":"function","modifiers":[],"name":"lzToken","nameLocation":"2432:7:0","nodeType":"FunctionDefinition","parameters":{"id":187,"nodeType":"ParameterList","parameters":[],"src":"2439:2:0"},"returnParameters":{"id":190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":189,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":191,"src":"2465:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":188,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:9:0"},"scope":202,"src":"2423:51:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e1758bd8","id":196,"implemented":false,"kind":"function","modifiers":[],"name":"nativeToken","nameLocation":"2489:11:0","nodeType":"FunctionDefinition","parameters":{"id":192,"nodeType":"ParameterList","parameters":[],"src":"2500:2:0"},"returnParameters":{"id":195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":194,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":196,"src":"2526:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":193,"name":"address","nodeType":"ElementaryTypeName","src":"2526:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2525:9:0"},"scope":202,"src":"2480:55:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ca5eb5e1","id":201,"implemented":false,"kind":"function","modifiers":[],"name":"setDelegate","nameLocation":"2550:11:0","nodeType":"FunctionDefinition","parameters":{"id":199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":198,"mutability":"mutable","name":"_delegate","nameLocation":"2570:9:0","nodeType":"VariableDeclaration","scope":201,"src":"2562:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":197,"name":"address","nodeType":"ElementaryTypeName","src":"2562:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2561:19:0"},"returnParameters":{"id":200,"nodeType":"ParameterList","parameters":[],"src":"2589:0:0"},"scope":202,"src":"2541:49:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":203,"src":"673:1919:0","usedErrors":[],"usedEvents":[56,65,72,93,97,103,311,317,323,331,339,347,357,550,562,574,688,698,720]}],"src":"33:2560:0"},"id":0},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol","exportedSymbols":{"ILayerZeroReceiver":[238],"Origin":[40]},"id":239,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":204,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:1"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","file":"./ILayerZeroEndpointV2.sol","id":206,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":239,"sourceUnit":203,"src":"59:52:1","symbolAliases":[{"foreign":{"id":205,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"68:6:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ILayerZeroReceiver","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":238,"linearizedBaseContracts":[238],"name":"ILayerZeroReceiver","nameLocation":"123:18:1","nodeType":"ContractDefinition","nodes":[{"functionSelector":"ff7bd03d","id":214,"implemented":false,"kind":"function","modifiers":[],"name":"allowInitializePath","nameLocation":"157:19:1","nodeType":"FunctionDefinition","parameters":{"id":210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":209,"mutability":"mutable","name":"_origin","nameLocation":"193:7:1","nodeType":"VariableDeclaration","scope":214,"src":"177:23:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":208,"nodeType":"UserDefinedTypeName","pathNode":{"id":207,"name":"Origin","nameLocations":["177:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"177:6:1"},"referencedDeclaration":40,"src":"177:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"}],"src":"176:25:1"},"returnParameters":{"id":213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":212,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":214,"src":"225:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":211,"name":"bool","nodeType":"ElementaryTypeName","src":"225:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"224:6:1"},"scope":238,"src":"148:83:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7d25a05e","id":223,"implemented":false,"kind":"function","modifiers":[],"name":"nextNonce","nameLocation":"246:9:1","nodeType":"FunctionDefinition","parameters":{"id":219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":216,"mutability":"mutable","name":"_eid","nameLocation":"263:4:1","nodeType":"VariableDeclaration","scope":223,"src":"256:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":215,"name":"uint32","nodeType":"ElementaryTypeName","src":"256:6:1","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":218,"mutability":"mutable","name":"_sender","nameLocation":"277:7:1","nodeType":"VariableDeclaration","scope":223,"src":"269:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":217,"name":"bytes32","nodeType":"ElementaryTypeName","src":"269:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"255:30:1"},"returnParameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":223,"src":"309:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":220,"name":"uint64","nodeType":"ElementaryTypeName","src":"309:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"308:8:1"},"scope":238,"src":"237:80:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"13137d65","id":237,"implemented":false,"kind":"function","modifiers":[],"name":"lzReceive","nameLocation":"332:9:1","nodeType":"FunctionDefinition","parameters":{"id":235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":226,"mutability":"mutable","name":"_origin","nameLocation":"367:7:1","nodeType":"VariableDeclaration","scope":237,"src":"351:23:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":225,"nodeType":"UserDefinedTypeName","pathNode":{"id":224,"name":"Origin","nameLocations":["351:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"351:6:1"},"referencedDeclaration":40,"src":"351:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":228,"mutability":"mutable","name":"_guid","nameLocation":"392:5:1","nodeType":"VariableDeclaration","scope":237,"src":"384:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":227,"name":"bytes32","nodeType":"ElementaryTypeName","src":"384:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":230,"mutability":"mutable","name":"_message","nameLocation":"422:8:1","nodeType":"VariableDeclaration","scope":237,"src":"407:23:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":229,"name":"bytes","nodeType":"ElementaryTypeName","src":"407:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":232,"mutability":"mutable","name":"_executor","nameLocation":"448:9:1","nodeType":"VariableDeclaration","scope":237,"src":"440:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":231,"name":"address","nodeType":"ElementaryTypeName","src":"440:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":234,"mutability":"mutable","name":"_extraData","nameLocation":"482:10:1","nodeType":"VariableDeclaration","scope":237,"src":"467:25:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":233,"name":"bytes","nodeType":"ElementaryTypeName","src":"467:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"341:157:1"},"returnParameters":{"id":236,"nodeType":"ParameterList","parameters":[],"src":"515:0:1"},"scope":238,"src":"323:193:1","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":239,"src":"113:405:1","usedErrors":[],"usedEvents":[]}],"src":"33:486:1"},"id":1},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol","exportedSymbols":{"IERC165":[8631],"IMessageLib":[293],"MessageLibType":[248],"SetConfigParam":[302]},"id":294,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":240,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:2"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":242,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":294,"sourceUnit":8632,"src":"59:82:2","symbolAliases":[{"foreign":{"id":241,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8631,"src":"68:7:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol","file":"./IMessageLibManager.sol","id":244,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":294,"sourceUnit":539,"src":"143:58:2","symbolAliases":[{"foreign":{"id":243,"name":"SetConfigParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"152:14:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"MessageLibType","id":248,"members":[{"id":245,"name":"Send","nameLocation":"229:4:2","nodeType":"EnumValue","src":"229:4:2"},{"id":246,"name":"Receive","nameLocation":"239:7:2","nodeType":"EnumValue","src":"239:7:2"},{"id":247,"name":"SendAndReceive","nameLocation":"252:14:2","nodeType":"EnumValue","src":"252:14:2"}],"name":"MessageLibType","nameLocation":"208:14:2","nodeType":"EnumDefinition","src":"203:65:2"},{"abstract":false,"baseContracts":[{"baseName":{"id":249,"name":"IERC165","nameLocations":["295:7:2"],"nodeType":"IdentifierPath","referencedDeclaration":8631,"src":"295:7:2"},"id":250,"nodeType":"InheritanceSpecifier","src":"295:7:2"}],"canonicalName":"IMessageLib","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":293,"linearizedBaseContracts":[293,8631],"name":"IMessageLib","nameLocation":"280:11:2","nodeType":"ContractDefinition","nodes":[{"functionSelector":"20efd722","id":259,"implemented":false,"kind":"function","modifiers":[],"name":"setConfig","nameLocation":"318:9:2","nodeType":"FunctionDefinition","parameters":{"id":257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":252,"mutability":"mutable","name":"_oapp","nameLocation":"336:5:2","nodeType":"VariableDeclaration","scope":259,"src":"328:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":251,"name":"address","nodeType":"ElementaryTypeName","src":"328:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":256,"mutability":"mutable","name":"_config","nameLocation":"369:7:2","nodeType":"VariableDeclaration","scope":259,"src":"343:33:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetConfigParam_$302_calldata_ptr_$dyn_calldata_ptr","typeString":"struct SetConfigParam[]"},"typeName":{"baseType":{"id":254,"nodeType":"UserDefinedTypeName","pathNode":{"id":253,"name":"SetConfigParam","nameLocations":["343:14:2"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"343:14:2"},"referencedDeclaration":302,"src":"343:14:2","typeDescriptions":{"typeIdentifier":"t_struct$_SetConfigParam_$302_storage_ptr","typeString":"struct SetConfigParam"}},"id":255,"nodeType":"ArrayTypeName","src":"343:16:2","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetConfigParam_$302_storage_$dyn_storage_ptr","typeString":"struct SetConfigParam[]"}},"visibility":"internal"}],"src":"327:50:2"},"returnParameters":{"id":258,"nodeType":"ParameterList","parameters":[],"src":"386:0:2"},"scope":293,"src":"309:78:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9c33abf7","id":270,"implemented":false,"kind":"function","modifiers":[],"name":"getConfig","nameLocation":"402:9:2","nodeType":"FunctionDefinition","parameters":{"id":266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":261,"mutability":"mutable","name":"_eid","nameLocation":"419:4:2","nodeType":"VariableDeclaration","scope":270,"src":"412:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":260,"name":"uint32","nodeType":"ElementaryTypeName","src":"412:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":263,"mutability":"mutable","name":"_oapp","nameLocation":"433:5:2","nodeType":"VariableDeclaration","scope":270,"src":"425:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":262,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":265,"mutability":"mutable","name":"_configType","nameLocation":"447:11:2","nodeType":"VariableDeclaration","scope":270,"src":"440:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":264,"name":"uint32","nodeType":"ElementaryTypeName","src":"440:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"411:48:2"},"returnParameters":{"id":269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":268,"mutability":"mutable","name":"config","nameLocation":"496:6:2","nodeType":"VariableDeclaration","scope":270,"src":"483:19:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":267,"name":"bytes","nodeType":"ElementaryTypeName","src":"483:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"482:21:2"},"scope":293,"src":"393:111:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6750cd4c","id":277,"implemented":false,"kind":"function","modifiers":[],"name":"isSupportedEid","nameLocation":"519:14:2","nodeType":"FunctionDefinition","parameters":{"id":273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":272,"mutability":"mutable","name":"_eid","nameLocation":"541:4:2","nodeType":"VariableDeclaration","scope":277,"src":"534:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":271,"name":"uint32","nodeType":"ElementaryTypeName","src":"534:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"533:13:2"},"returnParameters":{"id":276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":275,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":277,"src":"570:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":274,"name":"bool","nodeType":"ElementaryTypeName","src":"570:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"569:6:2"},"scope":293,"src":"510:66:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"54fd4d50","id":286,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"648:7:2","nodeType":"FunctionDefinition","parameters":{"id":278,"nodeType":"ParameterList","parameters":[],"src":"655:2:2"},"returnParameters":{"id":285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":280,"mutability":"mutable","name":"major","nameLocation":"688:5:2","nodeType":"VariableDeclaration","scope":286,"src":"681:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":279,"name":"uint64","nodeType":"ElementaryTypeName","src":"681:6:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":282,"mutability":"mutable","name":"minor","nameLocation":"701:5:2","nodeType":"VariableDeclaration","scope":286,"src":"695:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":281,"name":"uint8","nodeType":"ElementaryTypeName","src":"695:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":284,"mutability":"mutable","name":"endpointVersion","nameLocation":"714:15:2","nodeType":"VariableDeclaration","scope":286,"src":"708:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":283,"name":"uint8","nodeType":"ElementaryTypeName","src":"708:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"680:50:2"},"scope":293,"src":"639:92:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1881d94d","id":292,"implemented":false,"kind":"function","modifiers":[],"name":"messageLibType","nameLocation":"746:14:2","nodeType":"FunctionDefinition","parameters":{"id":287,"nodeType":"ParameterList","parameters":[],"src":"760:2:2"},"returnParameters":{"id":291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":292,"src":"786:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_MessageLibType_$248","typeString":"enum MessageLibType"},"typeName":{"id":289,"nodeType":"UserDefinedTypeName","pathNode":{"id":288,"name":"MessageLibType","nameLocations":["786:14:2"],"nodeType":"IdentifierPath","referencedDeclaration":248,"src":"786:14:2"},"referencedDeclaration":248,"src":"786:14:2","typeDescriptions":{"typeIdentifier":"t_enum$_MessageLibType_$248","typeString":"enum MessageLibType"}},"visibility":"internal"}],"src":"785:16:2"},"scope":293,"src":"737:65:2","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":294,"src":"270:534:2","usedErrors":[],"usedEvents":[]}],"src":"33:772:2"},"id":2},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol","exportedSymbols":{"IMessageLibManager":[538],"SetConfigParam":[302]},"id":539,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":295,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:3"},{"canonicalName":"SetConfigParam","id":302,"members":[{"constant":false,"id":297,"mutability":"mutable","name":"eid","nameLocation":"94:3:3","nodeType":"VariableDeclaration","scope":302,"src":"87:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":296,"name":"uint32","nodeType":"ElementaryTypeName","src":"87:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":299,"mutability":"mutable","name":"configType","nameLocation":"110:10:3","nodeType":"VariableDeclaration","scope":302,"src":"103:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":298,"name":"uint32","nodeType":"ElementaryTypeName","src":"103:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":301,"mutability":"mutable","name":"config","nameLocation":"132:6:3","nodeType":"VariableDeclaration","scope":302,"src":"126:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":300,"name":"bytes","nodeType":"ElementaryTypeName","src":"126:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SetConfigParam","nameLocation":"66:14:3","nodeType":"StructDefinition","scope":539,"src":"59:82:3","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"IMessageLibManager","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":538,"linearizedBaseContracts":[538],"name":"IMessageLibManager","nameLocation":"153:18:3","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IMessageLibManager.Timeout","id":307,"members":[{"constant":false,"id":304,"mutability":"mutable","name":"lib","nameLocation":"211:3:3","nodeType":"VariableDeclaration","scope":307,"src":"203:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":303,"name":"address","nodeType":"ElementaryTypeName","src":"203:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":306,"mutability":"mutable","name":"expiry","nameLocation":"232:6:3","nodeType":"VariableDeclaration","scope":307,"src":"224:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":305,"name":"uint256","nodeType":"ElementaryTypeName","src":"224:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Timeout","nameLocation":"185:7:3","nodeType":"StructDefinition","scope":538,"src":"178:67:3","visibility":"public"},{"anonymous":false,"eventSelector":"6b374d56679ca9463f27c85c6311e2bb7fde69bf201d3da39d53f10bd9d78af5","id":311,"name":"LibraryRegistered","nameLocation":"257:17:3","nodeType":"EventDefinition","parameters":{"id":310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":309,"indexed":false,"mutability":"mutable","name":"newLib","nameLocation":"283:6:3","nodeType":"VariableDeclaration","scope":311,"src":"275:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":308,"name":"address","nodeType":"ElementaryTypeName","src":"275:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"274:16:3"},"src":"251:40:3"},{"anonymous":false,"eventSelector":"16aa0f528038ab41019e95bae5b418a50ba8532c5800e3b7ea2f517d3fa625f5","id":317,"name":"DefaultSendLibrarySet","nameLocation":"302:21:3","nodeType":"EventDefinition","parameters":{"id":316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":313,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"331:3:3","nodeType":"VariableDeclaration","scope":317,"src":"324:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":312,"name":"uint32","nodeType":"ElementaryTypeName","src":"324:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":315,"indexed":false,"mutability":"mutable","name":"newLib","nameLocation":"344:6:3","nodeType":"VariableDeclaration","scope":317,"src":"336:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":314,"name":"address","nodeType":"ElementaryTypeName","src":"336:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"323:28:3"},"src":"296:56:3"},{"anonymous":false,"eventSelector":"c16891855cffb4a5ac51ac11864a3f3c96ba816cc45fe686c987ae36277de5ec","id":323,"name":"DefaultReceiveLibrarySet","nameLocation":"363:24:3","nodeType":"EventDefinition","parameters":{"id":322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":319,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"395:3:3","nodeType":"VariableDeclaration","scope":323,"src":"388:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":318,"name":"uint32","nodeType":"ElementaryTypeName","src":"388:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":321,"indexed":false,"mutability":"mutable","name":"newLib","nameLocation":"408:6:3","nodeType":"VariableDeclaration","scope":323,"src":"400:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":320,"name":"address","nodeType":"ElementaryTypeName","src":"400:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"387:28:3"},"src":"357:59:3"},{"anonymous":false,"eventSelector":"55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f8","id":331,"name":"DefaultReceiveLibraryTimeoutSet","nameLocation":"427:31:3","nodeType":"EventDefinition","parameters":{"id":330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":325,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"466:3:3","nodeType":"VariableDeclaration","scope":331,"src":"459:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":324,"name":"uint32","nodeType":"ElementaryTypeName","src":"459:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":327,"indexed":false,"mutability":"mutable","name":"oldLib","nameLocation":"479:6:3","nodeType":"VariableDeclaration","scope":331,"src":"471:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":326,"name":"address","nodeType":"ElementaryTypeName","src":"471:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":329,"indexed":false,"mutability":"mutable","name":"expiry","nameLocation":"495:6:3","nodeType":"VariableDeclaration","scope":331,"src":"487:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":328,"name":"uint256","nodeType":"ElementaryTypeName","src":"487:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"458:44:3"},"src":"421:82:3"},{"anonymous":false,"eventSelector":"4cff966ebee29a156dcb34cf72c1d06231fb1777f6bdf6e8089819232f002b1c","id":339,"name":"SendLibrarySet","nameLocation":"514:14:3","nodeType":"EventDefinition","parameters":{"id":338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":333,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"537:6:3","nodeType":"VariableDeclaration","scope":339,"src":"529:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":332,"name":"address","nodeType":"ElementaryTypeName","src":"529:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":335,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"552:3:3","nodeType":"VariableDeclaration","scope":339,"src":"545:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":334,"name":"uint32","nodeType":"ElementaryTypeName","src":"545:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":337,"indexed":false,"mutability":"mutable","name":"newLib","nameLocation":"565:6:3","nodeType":"VariableDeclaration","scope":339,"src":"557:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":336,"name":"address","nodeType":"ElementaryTypeName","src":"557:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"528:44:3"},"src":"508:65:3"},{"anonymous":false,"eventSelector":"cd6f92f5ac6185a5acfa02c92090746cec64d777269cbcd0ed031e396657a1c2","id":347,"name":"ReceiveLibrarySet","nameLocation":"584:17:3","nodeType":"EventDefinition","parameters":{"id":346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":341,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"610:8:3","nodeType":"VariableDeclaration","scope":347,"src":"602:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":340,"name":"address","nodeType":"ElementaryTypeName","src":"602:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":343,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"627:3:3","nodeType":"VariableDeclaration","scope":347,"src":"620:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":342,"name":"uint32","nodeType":"ElementaryTypeName","src":"620:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":345,"indexed":false,"mutability":"mutable","name":"newLib","nameLocation":"640:6:3","nodeType":"VariableDeclaration","scope":347,"src":"632:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":344,"name":"address","nodeType":"ElementaryTypeName","src":"632:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"601:46:3"},"src":"578:70:3"},{"anonymous":false,"eventSelector":"4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb20928","id":357,"name":"ReceiveLibraryTimeoutSet","nameLocation":"659:24:3","nodeType":"EventDefinition","parameters":{"id":356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":349,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"692:8:3","nodeType":"VariableDeclaration","scope":357,"src":"684:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":348,"name":"address","nodeType":"ElementaryTypeName","src":"684:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":351,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"709:3:3","nodeType":"VariableDeclaration","scope":357,"src":"702:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":350,"name":"uint32","nodeType":"ElementaryTypeName","src":"702:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":353,"indexed":false,"mutability":"mutable","name":"oldLib","nameLocation":"722:6:3","nodeType":"VariableDeclaration","scope":357,"src":"714:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":352,"name":"address","nodeType":"ElementaryTypeName","src":"714:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":355,"indexed":false,"mutability":"mutable","name":"timeout","nameLocation":"738:7:3","nodeType":"VariableDeclaration","scope":357,"src":"730:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":354,"name":"uint256","nodeType":"ElementaryTypeName","src":"730:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"683:63:3"},"src":"653:94:3"},{"functionSelector":"e8964e81","id":362,"implemented":false,"kind":"function","modifiers":[],"name":"registerLibrary","nameLocation":"762:15:3","nodeType":"FunctionDefinition","parameters":{"id":360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":359,"mutability":"mutable","name":"_lib","nameLocation":"786:4:3","nodeType":"VariableDeclaration","scope":362,"src":"778:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":358,"name":"address","nodeType":"ElementaryTypeName","src":"778:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"777:14:3"},"returnParameters":{"id":361,"nodeType":"ParameterList","parameters":[],"src":"800:0:3"},"scope":538,"src":"753:48:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"dc706a62","id":369,"implemented":false,"kind":"function","modifiers":[],"name":"isRegisteredLibrary","nameLocation":"816:19:3","nodeType":"FunctionDefinition","parameters":{"id":365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":364,"mutability":"mutable","name":"_lib","nameLocation":"844:4:3","nodeType":"VariableDeclaration","scope":369,"src":"836:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":363,"name":"address","nodeType":"ElementaryTypeName","src":"836:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"835:14:3"},"returnParameters":{"id":368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":367,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":369,"src":"873:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":366,"name":"bool","nodeType":"ElementaryTypeName","src":"873:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"872:6:3"},"scope":538,"src":"807:72:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9132e5c3","id":375,"implemented":false,"kind":"function","modifiers":[],"name":"getRegisteredLibraries","nameLocation":"894:22:3","nodeType":"FunctionDefinition","parameters":{"id":370,"nodeType":"ParameterList","parameters":[],"src":"916:2:3"},"returnParameters":{"id":374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":373,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":375,"src":"942:16:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":371,"name":"address","nodeType":"ElementaryTypeName","src":"942:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":372,"nodeType":"ArrayTypeName","src":"942:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"941:18:3"},"scope":538,"src":"885:75:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"aafea312","id":382,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultSendLibrary","nameLocation":"975:21:3","nodeType":"FunctionDefinition","parameters":{"id":380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":377,"mutability":"mutable","name":"_eid","nameLocation":"1004:4:3","nodeType":"VariableDeclaration","scope":382,"src":"997:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":376,"name":"uint32","nodeType":"ElementaryTypeName","src":"997:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":379,"mutability":"mutable","name":"_newLib","nameLocation":"1018:7:3","nodeType":"VariableDeclaration","scope":382,"src":"1010:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":378,"name":"address","nodeType":"ElementaryTypeName","src":"1010:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"996:30:3"},"returnParameters":{"id":381,"nodeType":"ParameterList","parameters":[],"src":"1035:0:3"},"scope":538,"src":"966:70:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f64be4c7","id":389,"implemented":false,"kind":"function","modifiers":[],"name":"defaultSendLibrary","nameLocation":"1051:18:3","nodeType":"FunctionDefinition","parameters":{"id":385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":384,"mutability":"mutable","name":"_eid","nameLocation":"1077:4:3","nodeType":"VariableDeclaration","scope":389,"src":"1070:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":383,"name":"uint32","nodeType":"ElementaryTypeName","src":"1070:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1069:13:3"},"returnParameters":{"id":388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":387,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":389,"src":"1106:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":386,"name":"address","nodeType":"ElementaryTypeName","src":"1106:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1105:9:3"},"scope":538,"src":"1042:73:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a718531b","id":398,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultReceiveLibrary","nameLocation":"1130:24:3","nodeType":"FunctionDefinition","parameters":{"id":396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":391,"mutability":"mutable","name":"_eid","nameLocation":"1162:4:3","nodeType":"VariableDeclaration","scope":398,"src":"1155:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":390,"name":"uint32","nodeType":"ElementaryTypeName","src":"1155:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":393,"mutability":"mutable","name":"_newLib","nameLocation":"1176:7:3","nodeType":"VariableDeclaration","scope":398,"src":"1168:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":392,"name":"address","nodeType":"ElementaryTypeName","src":"1168:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":395,"mutability":"mutable","name":"_gracePeriod","nameLocation":"1193:12:3","nodeType":"VariableDeclaration","scope":398,"src":"1185:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":394,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1154:52:3"},"returnParameters":{"id":397,"nodeType":"ParameterList","parameters":[],"src":"1215:0:3"},"scope":538,"src":"1121:95:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6f50a803","id":405,"implemented":false,"kind":"function","modifiers":[],"name":"defaultReceiveLibrary","nameLocation":"1231:21:3","nodeType":"FunctionDefinition","parameters":{"id":401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":400,"mutability":"mutable","name":"_eid","nameLocation":"1260:4:3","nodeType":"VariableDeclaration","scope":405,"src":"1253:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":399,"name":"uint32","nodeType":"ElementaryTypeName","src":"1253:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1252:13:3"},"returnParameters":{"id":404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":403,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":405,"src":"1289:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":402,"name":"address","nodeType":"ElementaryTypeName","src":"1289:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1288:9:3"},"scope":538,"src":"1222:76:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d4b4ec8f","id":414,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultReceiveLibraryTimeout","nameLocation":"1313:31:3","nodeType":"FunctionDefinition","parameters":{"id":412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":407,"mutability":"mutable","name":"_eid","nameLocation":"1352:4:3","nodeType":"VariableDeclaration","scope":414,"src":"1345:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":406,"name":"uint32","nodeType":"ElementaryTypeName","src":"1345:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":409,"mutability":"mutable","name":"_lib","nameLocation":"1366:4:3","nodeType":"VariableDeclaration","scope":414,"src":"1358:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":408,"name":"address","nodeType":"ElementaryTypeName","src":"1358:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":411,"mutability":"mutable","name":"_expiry","nameLocation":"1380:7:3","nodeType":"VariableDeclaration","scope":414,"src":"1372:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":410,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1344:44:3"},"returnParameters":{"id":413,"nodeType":"ParameterList","parameters":[],"src":"1397:0:3"},"scope":538,"src":"1304:94:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6e83f5bb","id":423,"implemented":false,"kind":"function","modifiers":[],"name":"defaultReceiveLibraryTimeout","nameLocation":"1413:28:3","nodeType":"FunctionDefinition","parameters":{"id":417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"_eid","nameLocation":"1449:4:3","nodeType":"VariableDeclaration","scope":423,"src":"1442:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":415,"name":"uint32","nodeType":"ElementaryTypeName","src":"1442:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1441:13:3"},"returnParameters":{"id":422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":419,"mutability":"mutable","name":"lib","nameLocation":"1486:3:3","nodeType":"VariableDeclaration","scope":423,"src":"1478:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":418,"name":"address","nodeType":"ElementaryTypeName","src":"1478:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":421,"mutability":"mutable","name":"expiry","nameLocation":"1499:6:3","nodeType":"VariableDeclaration","scope":423,"src":"1491:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":420,"name":"uint256","nodeType":"ElementaryTypeName","src":"1491:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1477:29:3"},"scope":538,"src":"1404:103:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6750cd4c","id":430,"implemented":false,"kind":"function","modifiers":[],"name":"isSupportedEid","nameLocation":"1522:14:3","nodeType":"FunctionDefinition","parameters":{"id":426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":425,"mutability":"mutable","name":"_eid","nameLocation":"1544:4:3","nodeType":"VariableDeclaration","scope":430,"src":"1537:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":424,"name":"uint32","nodeType":"ElementaryTypeName","src":"1537:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1536:13:3"},"returnParameters":{"id":429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":428,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":430,"src":"1573:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":427,"name":"bool","nodeType":"ElementaryTypeName","src":"1573:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1572:6:3"},"scope":538,"src":"1513:66:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9d7f9775","id":441,"implemented":false,"kind":"function","modifiers":[],"name":"isValidReceiveLibrary","nameLocation":"1594:21:3","nodeType":"FunctionDefinition","parameters":{"id":437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":432,"mutability":"mutable","name":"_receiver","nameLocation":"1624:9:3","nodeType":"VariableDeclaration","scope":441,"src":"1616:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":431,"name":"address","nodeType":"ElementaryTypeName","src":"1616:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":434,"mutability":"mutable","name":"_eid","nameLocation":"1642:4:3","nodeType":"VariableDeclaration","scope":441,"src":"1635:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":433,"name":"uint32","nodeType":"ElementaryTypeName","src":"1635:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":436,"mutability":"mutable","name":"_lib","nameLocation":"1656:4:3","nodeType":"VariableDeclaration","scope":441,"src":"1648:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":435,"name":"address","nodeType":"ElementaryTypeName","src":"1648:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1615:46:3"},"returnParameters":{"id":440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":439,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":441,"src":"1685:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":438,"name":"bool","nodeType":"ElementaryTypeName","src":"1685:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1684:6:3"},"scope":538,"src":"1585:106:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":442,"nodeType":"StructuredDocumentation","src":"1697:59:3","text":"------------------- OApp interfaces -------------------"},"functionSelector":"9535ff30","id":451,"implemented":false,"kind":"function","modifiers":[],"name":"setSendLibrary","nameLocation":"1770:14:3","nodeType":"FunctionDefinition","parameters":{"id":449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":444,"mutability":"mutable","name":"_oapp","nameLocation":"1793:5:3","nodeType":"VariableDeclaration","scope":451,"src":"1785:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":443,"name":"address","nodeType":"ElementaryTypeName","src":"1785:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":446,"mutability":"mutable","name":"_eid","nameLocation":"1807:4:3","nodeType":"VariableDeclaration","scope":451,"src":"1800:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":445,"name":"uint32","nodeType":"ElementaryTypeName","src":"1800:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":448,"mutability":"mutable","name":"_newLib","nameLocation":"1821:7:3","nodeType":"VariableDeclaration","scope":451,"src":"1813:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":447,"name":"address","nodeType":"ElementaryTypeName","src":"1813:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1784:45:3"},"returnParameters":{"id":450,"nodeType":"ParameterList","parameters":[],"src":"1838:0:3"},"scope":538,"src":"1761:78:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b96a277f","id":460,"implemented":false,"kind":"function","modifiers":[],"name":"getSendLibrary","nameLocation":"1854:14:3","nodeType":"FunctionDefinition","parameters":{"id":456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":453,"mutability":"mutable","name":"_sender","nameLocation":"1877:7:3","nodeType":"VariableDeclaration","scope":460,"src":"1869:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":452,"name":"address","nodeType":"ElementaryTypeName","src":"1869:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":455,"mutability":"mutable","name":"_eid","nameLocation":"1893:4:3","nodeType":"VariableDeclaration","scope":460,"src":"1886:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":454,"name":"uint32","nodeType":"ElementaryTypeName","src":"1886:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1868:30:3"},"returnParameters":{"id":459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":458,"mutability":"mutable","name":"lib","nameLocation":"1930:3:3","nodeType":"VariableDeclaration","scope":460,"src":"1922:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":457,"name":"address","nodeType":"ElementaryTypeName","src":"1922:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1921:13:3"},"scope":538,"src":"1845:90:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"dc93c8a2","id":469,"implemented":false,"kind":"function","modifiers":[],"name":"isDefaultSendLibrary","nameLocation":"1950:20:3","nodeType":"FunctionDefinition","parameters":{"id":465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":462,"mutability":"mutable","name":"_sender","nameLocation":"1979:7:3","nodeType":"VariableDeclaration","scope":469,"src":"1971:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":461,"name":"address","nodeType":"ElementaryTypeName","src":"1971:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":464,"mutability":"mutable","name":"_eid","nameLocation":"1995:4:3","nodeType":"VariableDeclaration","scope":469,"src":"1988:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":463,"name":"uint32","nodeType":"ElementaryTypeName","src":"1988:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1970:30:3"},"returnParameters":{"id":468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":467,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":469,"src":"2024:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":466,"name":"bool","nodeType":"ElementaryTypeName","src":"2024:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2023:6:3"},"scope":538,"src":"1941:89:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6a14d715","id":480,"implemented":false,"kind":"function","modifiers":[],"name":"setReceiveLibrary","nameLocation":"2045:17:3","nodeType":"FunctionDefinition","parameters":{"id":478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":471,"mutability":"mutable","name":"_oapp","nameLocation":"2071:5:3","nodeType":"VariableDeclaration","scope":480,"src":"2063:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":470,"name":"address","nodeType":"ElementaryTypeName","src":"2063:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":473,"mutability":"mutable","name":"_eid","nameLocation":"2085:4:3","nodeType":"VariableDeclaration","scope":480,"src":"2078:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":472,"name":"uint32","nodeType":"ElementaryTypeName","src":"2078:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":475,"mutability":"mutable","name":"_newLib","nameLocation":"2099:7:3","nodeType":"VariableDeclaration","scope":480,"src":"2091:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":474,"name":"address","nodeType":"ElementaryTypeName","src":"2091:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":477,"mutability":"mutable","name":"_gracePeriod","nameLocation":"2116:12:3","nodeType":"VariableDeclaration","scope":480,"src":"2108:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":476,"name":"uint256","nodeType":"ElementaryTypeName","src":"2108:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2062:67:3"},"returnParameters":{"id":479,"nodeType":"ParameterList","parameters":[],"src":"2138:0:3"},"scope":538,"src":"2036:103:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"402f8468","id":491,"implemented":false,"kind":"function","modifiers":[],"name":"getReceiveLibrary","nameLocation":"2154:17:3","nodeType":"FunctionDefinition","parameters":{"id":485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":482,"mutability":"mutable","name":"_receiver","nameLocation":"2180:9:3","nodeType":"VariableDeclaration","scope":491,"src":"2172:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":481,"name":"address","nodeType":"ElementaryTypeName","src":"2172:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":484,"mutability":"mutable","name":"_eid","nameLocation":"2198:4:3","nodeType":"VariableDeclaration","scope":491,"src":"2191:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":483,"name":"uint32","nodeType":"ElementaryTypeName","src":"2191:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2171:32:3"},"returnParameters":{"id":490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":487,"mutability":"mutable","name":"lib","nameLocation":"2235:3:3","nodeType":"VariableDeclaration","scope":491,"src":"2227:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":486,"name":"address","nodeType":"ElementaryTypeName","src":"2227:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":489,"mutability":"mutable","name":"isDefault","nameLocation":"2245:9:3","nodeType":"VariableDeclaration","scope":491,"src":"2240:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":488,"name":"bool","nodeType":"ElementaryTypeName","src":"2240:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2226:29:3"},"scope":538,"src":"2145:111:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"183c834f","id":502,"implemented":false,"kind":"function","modifiers":[],"name":"setReceiveLibraryTimeout","nameLocation":"2271:24:3","nodeType":"FunctionDefinition","parameters":{"id":500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":493,"mutability":"mutable","name":"_oapp","nameLocation":"2304:5:3","nodeType":"VariableDeclaration","scope":502,"src":"2296:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":492,"name":"address","nodeType":"ElementaryTypeName","src":"2296:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":495,"mutability":"mutable","name":"_eid","nameLocation":"2318:4:3","nodeType":"VariableDeclaration","scope":502,"src":"2311:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":494,"name":"uint32","nodeType":"ElementaryTypeName","src":"2311:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":497,"mutability":"mutable","name":"_lib","nameLocation":"2332:4:3","nodeType":"VariableDeclaration","scope":502,"src":"2324:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":496,"name":"address","nodeType":"ElementaryTypeName","src":"2324:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":499,"mutability":"mutable","name":"_expiry","nameLocation":"2346:7:3","nodeType":"VariableDeclaration","scope":502,"src":"2338:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":498,"name":"uint256","nodeType":"ElementaryTypeName","src":"2338:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2295:59:3"},"returnParameters":{"id":501,"nodeType":"ParameterList","parameters":[],"src":"2363:0:3"},"scope":538,"src":"2262:102:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ef667aa1","id":513,"implemented":false,"kind":"function","modifiers":[],"name":"receiveLibraryTimeout","nameLocation":"2379:21:3","nodeType":"FunctionDefinition","parameters":{"id":507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"_receiver","nameLocation":"2409:9:3","nodeType":"VariableDeclaration","scope":513,"src":"2401:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":503,"name":"address","nodeType":"ElementaryTypeName","src":"2401:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":506,"mutability":"mutable","name":"_eid","nameLocation":"2427:4:3","nodeType":"VariableDeclaration","scope":513,"src":"2420:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":505,"name":"uint32","nodeType":"ElementaryTypeName","src":"2420:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2400:32:3"},"returnParameters":{"id":512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":509,"mutability":"mutable","name":"lib","nameLocation":"2464:3:3","nodeType":"VariableDeclaration","scope":513,"src":"2456:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":508,"name":"address","nodeType":"ElementaryTypeName","src":"2456:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":511,"mutability":"mutable","name":"expiry","nameLocation":"2477:6:3","nodeType":"VariableDeclaration","scope":513,"src":"2469:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":510,"name":"uint256","nodeType":"ElementaryTypeName","src":"2469:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2455:29:3"},"scope":538,"src":"2370:115:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6dbd9f90","id":524,"implemented":false,"kind":"function","modifiers":[],"name":"setConfig","nameLocation":"2500:9:3","nodeType":"FunctionDefinition","parameters":{"id":522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":515,"mutability":"mutable","name":"_oapp","nameLocation":"2518:5:3","nodeType":"VariableDeclaration","scope":524,"src":"2510:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":514,"name":"address","nodeType":"ElementaryTypeName","src":"2510:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":517,"mutability":"mutable","name":"_lib","nameLocation":"2533:4:3","nodeType":"VariableDeclaration","scope":524,"src":"2525:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":516,"name":"address","nodeType":"ElementaryTypeName","src":"2525:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":521,"mutability":"mutable","name":"_params","nameLocation":"2565:7:3","nodeType":"VariableDeclaration","scope":524,"src":"2539:33:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetConfigParam_$302_calldata_ptr_$dyn_calldata_ptr","typeString":"struct SetConfigParam[]"},"typeName":{"baseType":{"id":519,"nodeType":"UserDefinedTypeName","pathNode":{"id":518,"name":"SetConfigParam","nameLocations":["2539:14:3"],"nodeType":"IdentifierPath","referencedDeclaration":302,"src":"2539:14:3"},"referencedDeclaration":302,"src":"2539:14:3","typeDescriptions":{"typeIdentifier":"t_struct$_SetConfigParam_$302_storage_ptr","typeString":"struct SetConfigParam"}},"id":520,"nodeType":"ArrayTypeName","src":"2539:16:3","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetConfigParam_$302_storage_$dyn_storage_ptr","typeString":"struct SetConfigParam[]"}},"visibility":"internal"}],"src":"2509:64:3"},"returnParameters":{"id":523,"nodeType":"ParameterList","parameters":[],"src":"2582:0:3"},"scope":538,"src":"2491:92:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2b3197b9","id":537,"implemented":false,"kind":"function","modifiers":[],"name":"getConfig","nameLocation":"2598:9:3","nodeType":"FunctionDefinition","parameters":{"id":533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":526,"mutability":"mutable","name":"_oapp","nameLocation":"2625:5:3","nodeType":"VariableDeclaration","scope":537,"src":"2617:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":525,"name":"address","nodeType":"ElementaryTypeName","src":"2617:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":528,"mutability":"mutable","name":"_lib","nameLocation":"2648:4:3","nodeType":"VariableDeclaration","scope":537,"src":"2640:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":527,"name":"address","nodeType":"ElementaryTypeName","src":"2640:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":530,"mutability":"mutable","name":"_eid","nameLocation":"2669:4:3","nodeType":"VariableDeclaration","scope":537,"src":"2662:11:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":529,"name":"uint32","nodeType":"ElementaryTypeName","src":"2662:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":532,"mutability":"mutable","name":"_configType","nameLocation":"2690:11:3","nodeType":"VariableDeclaration","scope":537,"src":"2683:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":531,"name":"uint32","nodeType":"ElementaryTypeName","src":"2683:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2607:100:3"},"returnParameters":{"id":536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":535,"mutability":"mutable","name":"config","nameLocation":"2744:6:3","nodeType":"VariableDeclaration","scope":537,"src":"2731:19:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":534,"name":"bytes","nodeType":"ElementaryTypeName","src":"2731:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2730:21:3"},"scope":538,"src":"2589:163:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":539,"src":"143:2611:3","usedErrors":[],"usedEvents":[311,317,323,331,339,347,357]}],"src":"33:2722:3"},"id":3},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol","exportedSymbols":{"IMessagingChannel":[674]},"id":675,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":540,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:4"},{"abstract":false,"baseContracts":[],"canonicalName":"IMessagingChannel","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":674,"linearizedBaseContracts":[674],"name":"IMessagingChannel","nameLocation":"69:17:4","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"28f40053783033ef755556a0c3315379141f51a33aed8334174ffbadd90bde48","id":550,"name":"InboundNonceSkipped","nameLocation":"99:19:4","nodeType":"EventDefinition","parameters":{"id":549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":542,"indexed":false,"mutability":"mutable","name":"srcEid","nameLocation":"126:6:4","nodeType":"VariableDeclaration","scope":550,"src":"119:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":541,"name":"uint32","nodeType":"ElementaryTypeName","src":"119:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":544,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"142:6:4","nodeType":"VariableDeclaration","scope":550,"src":"134:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":543,"name":"bytes32","nodeType":"ElementaryTypeName","src":"134:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":546,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"158:8:4","nodeType":"VariableDeclaration","scope":550,"src":"150:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":545,"name":"address","nodeType":"ElementaryTypeName","src":"150:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":548,"indexed":false,"mutability":"mutable","name":"nonce","nameLocation":"175:5:4","nodeType":"VariableDeclaration","scope":550,"src":"168:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":547,"name":"uint64","nodeType":"ElementaryTypeName","src":"168:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"118:63:4"},"src":"93:89:4"},{"anonymous":false,"eventSelector":"af0450c392c4f702515a457a362328c8aa21916048ca6d0419e248b30cb55292","id":562,"name":"PacketNilified","nameLocation":"193:14:4","nodeType":"EventDefinition","parameters":{"id":561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":552,"indexed":false,"mutability":"mutable","name":"srcEid","nameLocation":"215:6:4","nodeType":"VariableDeclaration","scope":562,"src":"208:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":551,"name":"uint32","nodeType":"ElementaryTypeName","src":"208:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":554,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"231:6:4","nodeType":"VariableDeclaration","scope":562,"src":"223:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":553,"name":"bytes32","nodeType":"ElementaryTypeName","src":"223:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":556,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"247:8:4","nodeType":"VariableDeclaration","scope":562,"src":"239:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":555,"name":"address","nodeType":"ElementaryTypeName","src":"239:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":558,"indexed":false,"mutability":"mutable","name":"nonce","nameLocation":"264:5:4","nodeType":"VariableDeclaration","scope":562,"src":"257:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":557,"name":"uint64","nodeType":"ElementaryTypeName","src":"257:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":560,"indexed":false,"mutability":"mutable","name":"payloadHash","nameLocation":"279:11:4","nodeType":"VariableDeclaration","scope":562,"src":"271:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":559,"name":"bytes32","nodeType":"ElementaryTypeName","src":"271:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"207:84:4"},"src":"187:105:4"},{"anonymous":false,"eventSelector":"7f68a37a6e69a0de35024a234558f9efe4b33b58657753d21eaaa82d51c3510e","id":574,"name":"PacketBurnt","nameLocation":"303:11:4","nodeType":"EventDefinition","parameters":{"id":573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":564,"indexed":false,"mutability":"mutable","name":"srcEid","nameLocation":"322:6:4","nodeType":"VariableDeclaration","scope":574,"src":"315:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":563,"name":"uint32","nodeType":"ElementaryTypeName","src":"315:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":566,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"338:6:4","nodeType":"VariableDeclaration","scope":574,"src":"330:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":565,"name":"bytes32","nodeType":"ElementaryTypeName","src":"330:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":568,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"354:8:4","nodeType":"VariableDeclaration","scope":574,"src":"346:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":567,"name":"address","nodeType":"ElementaryTypeName","src":"346:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":570,"indexed":false,"mutability":"mutable","name":"nonce","nameLocation":"371:5:4","nodeType":"VariableDeclaration","scope":574,"src":"364:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":569,"name":"uint64","nodeType":"ElementaryTypeName","src":"364:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":572,"indexed":false,"mutability":"mutable","name":"payloadHash","nameLocation":"386:11:4","nodeType":"VariableDeclaration","scope":574,"src":"378:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":571,"name":"bytes32","nodeType":"ElementaryTypeName","src":"378:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"314:84:4"},"src":"297:102:4"},{"functionSelector":"416ecebf","id":579,"implemented":false,"kind":"function","modifiers":[],"name":"eid","nameLocation":"414:3:4","nodeType":"FunctionDefinition","parameters":{"id":575,"nodeType":"ParameterList","parameters":[],"src":"417:2:4"},"returnParameters":{"id":578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":577,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":579,"src":"443:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":576,"name":"uint32","nodeType":"ElementaryTypeName","src":"443:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"442:8:4"},"scope":674,"src":"405:46:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d70b8902","id":590,"implemented":false,"kind":"function","modifiers":[],"name":"skip","nameLocation":"614:4:4","nodeType":"FunctionDefinition","parameters":{"id":588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":581,"mutability":"mutable","name":"_oapp","nameLocation":"627:5:4","nodeType":"VariableDeclaration","scope":590,"src":"619:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":580,"name":"address","nodeType":"ElementaryTypeName","src":"619:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":583,"mutability":"mutable","name":"_srcEid","nameLocation":"641:7:4","nodeType":"VariableDeclaration","scope":590,"src":"634:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":582,"name":"uint32","nodeType":"ElementaryTypeName","src":"634:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":585,"mutability":"mutable","name":"_sender","nameLocation":"658:7:4","nodeType":"VariableDeclaration","scope":590,"src":"650:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":584,"name":"bytes32","nodeType":"ElementaryTypeName","src":"650:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":587,"mutability":"mutable","name":"_nonce","nameLocation":"674:6:4","nodeType":"VariableDeclaration","scope":590,"src":"667:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":586,"name":"uint64","nodeType":"ElementaryTypeName","src":"667:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"618:63:4"},"returnParameters":{"id":589,"nodeType":"ParameterList","parameters":[],"src":"690:0:4"},"scope":674,"src":"605:86:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2e80fbf3","id":603,"implemented":false,"kind":"function","modifiers":[],"name":"nilify","nameLocation":"706:6:4","nodeType":"FunctionDefinition","parameters":{"id":601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":592,"mutability":"mutable","name":"_oapp","nameLocation":"721:5:4","nodeType":"VariableDeclaration","scope":603,"src":"713:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":591,"name":"address","nodeType":"ElementaryTypeName","src":"713:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":594,"mutability":"mutable","name":"_srcEid","nameLocation":"735:7:4","nodeType":"VariableDeclaration","scope":603,"src":"728:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":593,"name":"uint32","nodeType":"ElementaryTypeName","src":"728:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":596,"mutability":"mutable","name":"_sender","nameLocation":"752:7:4","nodeType":"VariableDeclaration","scope":603,"src":"744:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":595,"name":"bytes32","nodeType":"ElementaryTypeName","src":"744:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":598,"mutability":"mutable","name":"_nonce","nameLocation":"768:6:4","nodeType":"VariableDeclaration","scope":603,"src":"761:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":597,"name":"uint64","nodeType":"ElementaryTypeName","src":"761:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":600,"mutability":"mutable","name":"_payloadHash","nameLocation":"784:12:4","nodeType":"VariableDeclaration","scope":603,"src":"776:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":599,"name":"bytes32","nodeType":"ElementaryTypeName","src":"776:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"712:85:4"},"returnParameters":{"id":602,"nodeType":"ParameterList","parameters":[],"src":"806:0:4"},"scope":674,"src":"697:110:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"40f80683","id":616,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"822:4:4","nodeType":"FunctionDefinition","parameters":{"id":614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":605,"mutability":"mutable","name":"_oapp","nameLocation":"835:5:4","nodeType":"VariableDeclaration","scope":616,"src":"827:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":604,"name":"address","nodeType":"ElementaryTypeName","src":"827:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":607,"mutability":"mutable","name":"_srcEid","nameLocation":"849:7:4","nodeType":"VariableDeclaration","scope":616,"src":"842:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":606,"name":"uint32","nodeType":"ElementaryTypeName","src":"842:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":609,"mutability":"mutable","name":"_sender","nameLocation":"866:7:4","nodeType":"VariableDeclaration","scope":616,"src":"858:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":608,"name":"bytes32","nodeType":"ElementaryTypeName","src":"858:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":611,"mutability":"mutable","name":"_nonce","nameLocation":"882:6:4","nodeType":"VariableDeclaration","scope":616,"src":"875:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":610,"name":"uint64","nodeType":"ElementaryTypeName","src":"875:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":613,"mutability":"mutable","name":"_payloadHash","nameLocation":"898:12:4","nodeType":"VariableDeclaration","scope":616,"src":"890:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":612,"name":"bytes32","nodeType":"ElementaryTypeName","src":"890:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"826:85:4"},"returnParameters":{"id":615,"nodeType":"ParameterList","parameters":[],"src":"920:0:4"},"scope":674,"src":"813:108:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"aafe5e07","id":627,"implemented":false,"kind":"function","modifiers":[],"name":"nextGuid","nameLocation":"936:8:4","nodeType":"FunctionDefinition","parameters":{"id":623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":618,"mutability":"mutable","name":"_sender","nameLocation":"953:7:4","nodeType":"VariableDeclaration","scope":627,"src":"945:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":617,"name":"address","nodeType":"ElementaryTypeName","src":"945:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":620,"mutability":"mutable","name":"_dstEid","nameLocation":"969:7:4","nodeType":"VariableDeclaration","scope":627,"src":"962:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":619,"name":"uint32","nodeType":"ElementaryTypeName","src":"962:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":622,"mutability":"mutable","name":"_receiver","nameLocation":"986:9:4","nodeType":"VariableDeclaration","scope":627,"src":"978:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":621,"name":"bytes32","nodeType":"ElementaryTypeName","src":"978:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"944:52:4"},"returnParameters":{"id":626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":625,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":627,"src":"1020:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":624,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1020:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1019:9:4"},"scope":674,"src":"927:102:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a0dd43fc","id":638,"implemented":false,"kind":"function","modifiers":[],"name":"inboundNonce","nameLocation":"1044:12:4","nodeType":"FunctionDefinition","parameters":{"id":634,"nodeType":"ParameterList","parameters":[{"constant":false,"id":629,"mutability":"mutable","name":"_receiver","nameLocation":"1065:9:4","nodeType":"VariableDeclaration","scope":638,"src":"1057:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":628,"name":"address","nodeType":"ElementaryTypeName","src":"1057:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":631,"mutability":"mutable","name":"_srcEid","nameLocation":"1083:7:4","nodeType":"VariableDeclaration","scope":638,"src":"1076:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":630,"name":"uint32","nodeType":"ElementaryTypeName","src":"1076:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":633,"mutability":"mutable","name":"_sender","nameLocation":"1100:7:4","nodeType":"VariableDeclaration","scope":638,"src":"1092:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":632,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1092:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1056:52:4"},"returnParameters":{"id":637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":636,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":638,"src":"1132:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":635,"name":"uint64","nodeType":"ElementaryTypeName","src":"1132:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1131:8:4"},"scope":674,"src":"1035:105:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9c6d7340","id":649,"implemented":false,"kind":"function","modifiers":[],"name":"outboundNonce","nameLocation":"1155:13:4","nodeType":"FunctionDefinition","parameters":{"id":645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"mutability":"mutable","name":"_sender","nameLocation":"1177:7:4","nodeType":"VariableDeclaration","scope":649,"src":"1169:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":639,"name":"address","nodeType":"ElementaryTypeName","src":"1169:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":642,"mutability":"mutable","name":"_dstEid","nameLocation":"1193:7:4","nodeType":"VariableDeclaration","scope":649,"src":"1186:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":641,"name":"uint32","nodeType":"ElementaryTypeName","src":"1186:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":644,"mutability":"mutable","name":"_receiver","nameLocation":"1210:9:4","nodeType":"VariableDeclaration","scope":649,"src":"1202:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":643,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1202:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1168:52:4"},"returnParameters":{"id":648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":647,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":649,"src":"1244:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":646,"name":"uint64","nodeType":"ElementaryTypeName","src":"1244:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1243:8:4"},"scope":674,"src":"1146:106:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c9fc7bcd","id":662,"implemented":false,"kind":"function","modifiers":[],"name":"inboundPayloadHash","nameLocation":"1267:18:4","nodeType":"FunctionDefinition","parameters":{"id":658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":651,"mutability":"mutable","name":"_receiver","nameLocation":"1303:9:4","nodeType":"VariableDeclaration","scope":662,"src":"1295:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":650,"name":"address","nodeType":"ElementaryTypeName","src":"1295:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":653,"mutability":"mutable","name":"_srcEid","nameLocation":"1329:7:4","nodeType":"VariableDeclaration","scope":662,"src":"1322:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":652,"name":"uint32","nodeType":"ElementaryTypeName","src":"1322:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":655,"mutability":"mutable","name":"_sender","nameLocation":"1354:7:4","nodeType":"VariableDeclaration","scope":662,"src":"1346:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":654,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1346:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":657,"mutability":"mutable","name":"_nonce","nameLocation":"1378:6:4","nodeType":"VariableDeclaration","scope":662,"src":"1371:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":656,"name":"uint64","nodeType":"ElementaryTypeName","src":"1371:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1285:105:4"},"returnParameters":{"id":661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":660,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":662,"src":"1414:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":659,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1414:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1413:9:4"},"scope":674,"src":"1258:165:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"5b17bb70","id":673,"implemented":false,"kind":"function","modifiers":[],"name":"lazyInboundNonce","nameLocation":"1438:16:4","nodeType":"FunctionDefinition","parameters":{"id":669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":664,"mutability":"mutable","name":"_receiver","nameLocation":"1463:9:4","nodeType":"VariableDeclaration","scope":673,"src":"1455:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":663,"name":"address","nodeType":"ElementaryTypeName","src":"1455:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":666,"mutability":"mutable","name":"_srcEid","nameLocation":"1481:7:4","nodeType":"VariableDeclaration","scope":673,"src":"1474:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":665,"name":"uint32","nodeType":"ElementaryTypeName","src":"1474:6:4","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":668,"mutability":"mutable","name":"_sender","nameLocation":"1498:7:4","nodeType":"VariableDeclaration","scope":673,"src":"1490:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":667,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1490:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1454:52:4"},"returnParameters":{"id":672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":673,"src":"1530:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":670,"name":"uint64","nodeType":"ElementaryTypeName","src":"1530:6:4","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1529:8:4"},"scope":674,"src":"1429:109:4","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":675,"src":"59:1481:4","usedErrors":[],"usedEvents":[550,562,574]}],"src":"33:1508:4"},"id":4},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol","exportedSymbols":{"IMessagingComposer":[760]},"id":761,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":676,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IMessagingComposer","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":760,"linearizedBaseContracts":[760],"name":"IMessagingComposer","nameLocation":"69:18:5","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"3d52ff888d033fd3dd1d8057da59e850c91d91a72c41dfa445b247dfedeb6dc1","id":688,"name":"ComposeSent","nameLocation":"100:11:5","nodeType":"EventDefinition","parameters":{"id":687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":678,"indexed":false,"mutability":"mutable","name":"from","nameLocation":"120:4:5","nodeType":"VariableDeclaration","scope":688,"src":"112:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":677,"name":"address","nodeType":"ElementaryTypeName","src":"112:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":680,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"134:2:5","nodeType":"VariableDeclaration","scope":688,"src":"126:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":679,"name":"address","nodeType":"ElementaryTypeName","src":"126:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":682,"indexed":false,"mutability":"mutable","name":"guid","nameLocation":"146:4:5","nodeType":"VariableDeclaration","scope":688,"src":"138:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":681,"name":"bytes32","nodeType":"ElementaryTypeName","src":"138:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":684,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"159:5:5","nodeType":"VariableDeclaration","scope":688,"src":"152:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":683,"name":"uint16","nodeType":"ElementaryTypeName","src":"152:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":686,"indexed":false,"mutability":"mutable","name":"message","nameLocation":"172:7:5","nodeType":"VariableDeclaration","scope":688,"src":"166:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":685,"name":"bytes","nodeType":"ElementaryTypeName","src":"166:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"111:69:5"},"src":"94:87:5"},{"anonymous":false,"eventSelector":"0036c98efcf9e6641dfbc9051f66f405253e8e0c2ab4a24dccda15595b7378c8","id":698,"name":"ComposeDelivered","nameLocation":"192:16:5","nodeType":"EventDefinition","parameters":{"id":697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":690,"indexed":false,"mutability":"mutable","name":"from","nameLocation":"217:4:5","nodeType":"VariableDeclaration","scope":698,"src":"209:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":689,"name":"address","nodeType":"ElementaryTypeName","src":"209:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":692,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"231:2:5","nodeType":"VariableDeclaration","scope":698,"src":"223:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":691,"name":"address","nodeType":"ElementaryTypeName","src":"223:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":694,"indexed":false,"mutability":"mutable","name":"guid","nameLocation":"243:4:5","nodeType":"VariableDeclaration","scope":698,"src":"235:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":693,"name":"bytes32","nodeType":"ElementaryTypeName","src":"235:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":696,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"256:5:5","nodeType":"VariableDeclaration","scope":698,"src":"249:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":695,"name":"uint16","nodeType":"ElementaryTypeName","src":"249:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"208:54:5"},"src":"186:77:5"},{"anonymous":false,"eventSelector":"8a0b1dce321c5c5fb42349bce46d18087c04140de520917661fb923e44a904b9","id":720,"name":"LzComposeAlert","nameLocation":"274:14:5","nodeType":"EventDefinition","parameters":{"id":719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":700,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"314:4:5","nodeType":"VariableDeclaration","scope":720,"src":"298:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":699,"name":"address","nodeType":"ElementaryTypeName","src":"298:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":702,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"344:2:5","nodeType":"VariableDeclaration","scope":720,"src":"328:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":701,"name":"address","nodeType":"ElementaryTypeName","src":"328:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":704,"indexed":true,"mutability":"mutable","name":"executor","nameLocation":"372:8:5","nodeType":"VariableDeclaration","scope":720,"src":"356:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":703,"name":"address","nodeType":"ElementaryTypeName","src":"356:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":706,"indexed":false,"mutability":"mutable","name":"guid","nameLocation":"398:4:5","nodeType":"VariableDeclaration","scope":720,"src":"390:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":705,"name":"bytes32","nodeType":"ElementaryTypeName","src":"390:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":708,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"419:5:5","nodeType":"VariableDeclaration","scope":720,"src":"412:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":707,"name":"uint16","nodeType":"ElementaryTypeName","src":"412:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":710,"indexed":false,"mutability":"mutable","name":"gas","nameLocation":"442:3:5","nodeType":"VariableDeclaration","scope":720,"src":"434:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":709,"name":"uint256","nodeType":"ElementaryTypeName","src":"434:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":712,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"463:5:5","nodeType":"VariableDeclaration","scope":720,"src":"455:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":711,"name":"uint256","nodeType":"ElementaryTypeName","src":"455:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":714,"indexed":false,"mutability":"mutable","name":"message","nameLocation":"484:7:5","nodeType":"VariableDeclaration","scope":720,"src":"478:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":713,"name":"bytes","nodeType":"ElementaryTypeName","src":"478:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":716,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"507:9:5","nodeType":"VariableDeclaration","scope":720,"src":"501:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":715,"name":"bytes","nodeType":"ElementaryTypeName","src":"501:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":718,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"532:6:5","nodeType":"VariableDeclaration","scope":720,"src":"526:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":717,"name":"bytes","nodeType":"ElementaryTypeName","src":"526:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"288:256:5"},"src":"268:277:5"},{"functionSelector":"35d330b0","id":733,"implemented":false,"kind":"function","modifiers":[],"name":"composeQueue","nameLocation":"560:12:5","nodeType":"FunctionDefinition","parameters":{"id":729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":722,"mutability":"mutable","name":"_from","nameLocation":"590:5:5","nodeType":"VariableDeclaration","scope":733,"src":"582:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":721,"name":"address","nodeType":"ElementaryTypeName","src":"582:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":724,"mutability":"mutable","name":"_to","nameLocation":"613:3:5","nodeType":"VariableDeclaration","scope":733,"src":"605:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":723,"name":"address","nodeType":"ElementaryTypeName","src":"605:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":726,"mutability":"mutable","name":"_guid","nameLocation":"634:5:5","nodeType":"VariableDeclaration","scope":733,"src":"626:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":725,"name":"bytes32","nodeType":"ElementaryTypeName","src":"626:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":728,"mutability":"mutable","name":"_index","nameLocation":"656:6:5","nodeType":"VariableDeclaration","scope":733,"src":"649:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":727,"name":"uint16","nodeType":"ElementaryTypeName","src":"649:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"572:96:5"},"returnParameters":{"id":732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":731,"mutability":"mutable","name":"messageHash","nameLocation":"700:11:5","nodeType":"VariableDeclaration","scope":733,"src":"692:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":730,"name":"bytes32","nodeType":"ElementaryTypeName","src":"692:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"691:21:5"},"scope":760,"src":"551:162:5","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7cb59012","id":744,"implemented":false,"kind":"function","modifiers":[],"name":"sendCompose","nameLocation":"728:11:5","nodeType":"FunctionDefinition","parameters":{"id":742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":735,"mutability":"mutable","name":"_to","nameLocation":"748:3:5","nodeType":"VariableDeclaration","scope":744,"src":"740:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":734,"name":"address","nodeType":"ElementaryTypeName","src":"740:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":737,"mutability":"mutable","name":"_guid","nameLocation":"761:5:5","nodeType":"VariableDeclaration","scope":744,"src":"753:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":736,"name":"bytes32","nodeType":"ElementaryTypeName","src":"753:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":739,"mutability":"mutable","name":"_index","nameLocation":"775:6:5","nodeType":"VariableDeclaration","scope":744,"src":"768:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":738,"name":"uint16","nodeType":"ElementaryTypeName","src":"768:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":741,"mutability":"mutable","name":"_message","nameLocation":"798:8:5","nodeType":"VariableDeclaration","scope":744,"src":"783:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":740,"name":"bytes","nodeType":"ElementaryTypeName","src":"783:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"739:68:5"},"returnParameters":{"id":743,"nodeType":"ParameterList","parameters":[],"src":"816:0:5"},"scope":760,"src":"719:98:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"91d20fa1","id":759,"implemented":false,"kind":"function","modifiers":[],"name":"lzCompose","nameLocation":"832:9:5","nodeType":"FunctionDefinition","parameters":{"id":757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":746,"mutability":"mutable","name":"_from","nameLocation":"859:5:5","nodeType":"VariableDeclaration","scope":759,"src":"851:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":745,"name":"address","nodeType":"ElementaryTypeName","src":"851:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":748,"mutability":"mutable","name":"_to","nameLocation":"882:3:5","nodeType":"VariableDeclaration","scope":759,"src":"874:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":747,"name":"address","nodeType":"ElementaryTypeName","src":"874:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":750,"mutability":"mutable","name":"_guid","nameLocation":"903:5:5","nodeType":"VariableDeclaration","scope":759,"src":"895:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":749,"name":"bytes32","nodeType":"ElementaryTypeName","src":"895:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":752,"mutability":"mutable","name":"_index","nameLocation":"925:6:5","nodeType":"VariableDeclaration","scope":759,"src":"918:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":751,"name":"uint16","nodeType":"ElementaryTypeName","src":"918:6:5","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":754,"mutability":"mutable","name":"_message","nameLocation":"956:8:5","nodeType":"VariableDeclaration","scope":759,"src":"941:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":753,"name":"bytes","nodeType":"ElementaryTypeName","src":"941:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":756,"mutability":"mutable","name":"_extraData","nameLocation":"989:10:5","nodeType":"VariableDeclaration","scope":759,"src":"974:25:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":755,"name":"bytes","nodeType":"ElementaryTypeName","src":"974:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"841:164:5"},"returnParameters":{"id":758,"nodeType":"ParameterList","parameters":[],"src":"1022:0:5"},"scope":760,"src":"823:200:5","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":761,"src":"59:966:5","usedErrors":[],"usedEvents":[688,698,720]}],"src":"33:993:5"},"id":5},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol","exportedSymbols":{"IMessagingContext":[775]},"id":776,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":762,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:6"},{"abstract":false,"baseContracts":[],"canonicalName":"IMessagingContext","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":775,"linearizedBaseContracts":[775],"name":"IMessagingContext","nameLocation":"69:17:6","nodeType":"ContractDefinition","nodes":[{"functionSelector":"79624ca9","id":767,"implemented":false,"kind":"function","modifiers":[],"name":"isSendingMessage","nameLocation":"102:16:6","nodeType":"FunctionDefinition","parameters":{"id":763,"nodeType":"ParameterList","parameters":[],"src":"118:2:6"},"returnParameters":{"id":766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":765,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":767,"src":"144:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":764,"name":"bool","nodeType":"ElementaryTypeName","src":"144:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"143:6:6"},"scope":775,"src":"93:57:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"14f651a9","id":774,"implemented":false,"kind":"function","modifiers":[],"name":"getSendContext","nameLocation":"165:14:6","nodeType":"FunctionDefinition","parameters":{"id":768,"nodeType":"ParameterList","parameters":[],"src":"179:2:6"},"returnParameters":{"id":773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":770,"mutability":"mutable","name":"dstEid","nameLocation":"212:6:6","nodeType":"VariableDeclaration","scope":774,"src":"205:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":769,"name":"uint32","nodeType":"ElementaryTypeName","src":"205:6:6","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":772,"mutability":"mutable","name":"sender","nameLocation":"228:6:6","nodeType":"VariableDeclaration","scope":774,"src":"220:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":771,"name":"address","nodeType":"ElementaryTypeName","src":"220:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"204:31:6"},"scope":775,"src":"156:80:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":776,"src":"59:179:6","usedErrors":[],"usedEvents":[]}],"src":"33:206:6"},"id":6},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol","exportedSymbols":{"IMessageLib":[293],"ISendLib":[848],"MessagingFee":[33],"Packet":[796]},"id":849,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":777,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:7"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","file":"./ILayerZeroEndpointV2.sol","id":779,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":849,"sourceUnit":203,"src":"59:58:7","symbolAliases":[{"foreign":{"id":778,"name":"MessagingFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"68:12:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol","file":"./IMessageLib.sol","id":781,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":849,"sourceUnit":294,"src":"118:48:7","symbolAliases":[{"foreign":{"id":780,"name":"IMessageLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":293,"src":"127:11:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"Packet","id":796,"members":[{"constant":false,"id":783,"mutability":"mutable","name":"nonce","nameLocation":"195:5:7","nodeType":"VariableDeclaration","scope":796,"src":"188:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":782,"name":"uint64","nodeType":"ElementaryTypeName","src":"188:6:7","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":785,"mutability":"mutable","name":"srcEid","nameLocation":"213:6:7","nodeType":"VariableDeclaration","scope":796,"src":"206:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":784,"name":"uint32","nodeType":"ElementaryTypeName","src":"206:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":787,"mutability":"mutable","name":"sender","nameLocation":"233:6:7","nodeType":"VariableDeclaration","scope":796,"src":"225:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":786,"name":"address","nodeType":"ElementaryTypeName","src":"225:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":789,"mutability":"mutable","name":"dstEid","nameLocation":"252:6:7","nodeType":"VariableDeclaration","scope":796,"src":"245:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":788,"name":"uint32","nodeType":"ElementaryTypeName","src":"245:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":791,"mutability":"mutable","name":"receiver","nameLocation":"272:8:7","nodeType":"VariableDeclaration","scope":796,"src":"264:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":790,"name":"bytes32","nodeType":"ElementaryTypeName","src":"264:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":793,"mutability":"mutable","name":"guid","nameLocation":"294:4:7","nodeType":"VariableDeclaration","scope":796,"src":"286:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":792,"name":"bytes32","nodeType":"ElementaryTypeName","src":"286:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":795,"mutability":"mutable","name":"message","nameLocation":"310:7:7","nodeType":"VariableDeclaration","scope":796,"src":"304:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":794,"name":"bytes","nodeType":"ElementaryTypeName","src":"304:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"Packet","nameLocation":"175:6:7","nodeType":"StructDefinition","scope":849,"src":"168:152:7","visibility":"public"},{"abstract":false,"baseContracts":[{"baseName":{"id":797,"name":"IMessageLib","nameLocations":["344:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":293,"src":"344:11:7"},"id":798,"nodeType":"InheritanceSpecifier","src":"344:11:7"}],"canonicalName":"ISendLib","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":848,"linearizedBaseContracts":[848,293,8631],"name":"ISendLib","nameLocation":"332:8:7","nodeType":"ContractDefinition","nodes":[{"functionSelector":"4389e58f","id":813,"implemented":false,"kind":"function","modifiers":[],"name":"send","nameLocation":"371:4:7","nodeType":"FunctionDefinition","parameters":{"id":806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":801,"mutability":"mutable","name":"_packet","nameLocation":"401:7:7","nodeType":"VariableDeclaration","scope":813,"src":"385:23:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_calldata_ptr","typeString":"struct Packet"},"typeName":{"id":800,"nodeType":"UserDefinedTypeName","pathNode":{"id":799,"name":"Packet","nameLocations":["385:6:7"],"nodeType":"IdentifierPath","referencedDeclaration":796,"src":"385:6:7"},"referencedDeclaration":796,"src":"385:6:7","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_storage_ptr","typeString":"struct Packet"}},"visibility":"internal"},{"constant":false,"id":803,"mutability":"mutable","name":"_options","nameLocation":"433:8:7","nodeType":"VariableDeclaration","scope":813,"src":"418:23:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":802,"name":"bytes","nodeType":"ElementaryTypeName","src":"418:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":805,"mutability":"mutable","name":"_payInLzToken","nameLocation":"456:13:7","nodeType":"VariableDeclaration","scope":813,"src":"451:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":804,"name":"bool","nodeType":"ElementaryTypeName","src":"451:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"375:100:7"},"returnParameters":{"id":812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":809,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":813,"src":"494:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":808,"nodeType":"UserDefinedTypeName","pathNode":{"id":807,"name":"MessagingFee","nameLocations":["494:12:7"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"494:12:7"},"referencedDeclaration":33,"src":"494:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"},{"constant":false,"id":811,"mutability":"mutable","name":"encodedPacket","nameLocation":"528:13:7","nodeType":"VariableDeclaration","scope":813,"src":"515:26:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":810,"name":"bytes","nodeType":"ElementaryTypeName","src":"515:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"493:49:7"},"scope":848,"src":"362:181:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d80e9bd9","id":826,"implemented":false,"kind":"function","modifiers":[],"name":"quote","nameLocation":"558:5:7","nodeType":"FunctionDefinition","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":816,"mutability":"mutable","name":"_packet","nameLocation":"589:7:7","nodeType":"VariableDeclaration","scope":826,"src":"573:23:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_calldata_ptr","typeString":"struct Packet"},"typeName":{"id":815,"nodeType":"UserDefinedTypeName","pathNode":{"id":814,"name":"Packet","nameLocations":["573:6:7"],"nodeType":"IdentifierPath","referencedDeclaration":796,"src":"573:6:7"},"referencedDeclaration":796,"src":"573:6:7","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_storage_ptr","typeString":"struct Packet"}},"visibility":"internal"},{"constant":false,"id":818,"mutability":"mutable","name":"_options","nameLocation":"621:8:7","nodeType":"VariableDeclaration","scope":826,"src":"606:23:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":817,"name":"bytes","nodeType":"ElementaryTypeName","src":"606:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":820,"mutability":"mutable","name":"_payInLzToken","nameLocation":"644:13:7","nodeType":"VariableDeclaration","scope":826,"src":"639:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":819,"name":"bool","nodeType":"ElementaryTypeName","src":"639:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"563:100:7"},"returnParameters":{"id":825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":826,"src":"687:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":823,"nodeType":"UserDefinedTypeName","pathNode":{"id":822,"name":"MessagingFee","nameLocations":["687:12:7"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"687:12:7"},"referencedDeclaration":33,"src":"687:12:7","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"}],"src":"686:21:7"},"scope":848,"src":"549:159:7","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"f0f44260","id":831,"implemented":false,"kind":"function","modifiers":[],"name":"setTreasury","nameLocation":"723:11:7","nodeType":"FunctionDefinition","parameters":{"id":829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":828,"mutability":"mutable","name":"_treasury","nameLocation":"743:9:7","nodeType":"VariableDeclaration","scope":831,"src":"735:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":827,"name":"address","nodeType":"ElementaryTypeName","src":"735:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"734:19:7"},"returnParameters":{"id":830,"nodeType":"ParameterList","parameters":[],"src":"762:0:7"},"scope":848,"src":"714:49:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"fd9be522","id":838,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawFee","nameLocation":"778:11:7","nodeType":"FunctionDefinition","parameters":{"id":836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":833,"mutability":"mutable","name":"_to","nameLocation":"798:3:7","nodeType":"VariableDeclaration","scope":838,"src":"790:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":832,"name":"address","nodeType":"ElementaryTypeName","src":"790:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":835,"mutability":"mutable","name":"_amount","nameLocation":"811:7:7","nodeType":"VariableDeclaration","scope":838,"src":"803:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":834,"name":"uint256","nodeType":"ElementaryTypeName","src":"803:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"789:30:7"},"returnParameters":{"id":837,"nodeType":"ParameterList","parameters":[],"src":"828:0:7"},"scope":848,"src":"769:60:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"200175f7","id":847,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawLzTokenFee","nameLocation":"844:18:7","nodeType":"FunctionDefinition","parameters":{"id":845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":840,"mutability":"mutable","name":"_lzToken","nameLocation":"871:8:7","nodeType":"VariableDeclaration","scope":847,"src":"863:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":839,"name":"address","nodeType":"ElementaryTypeName","src":"863:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":842,"mutability":"mutable","name":"_to","nameLocation":"889:3:7","nodeType":"VariableDeclaration","scope":847,"src":"881:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":841,"name":"address","nodeType":"ElementaryTypeName","src":"881:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":844,"mutability":"mutable","name":"_amount","nameLocation":"902:7:7","nodeType":"VariableDeclaration","scope":847,"src":"894:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":843,"name":"uint256","nodeType":"ElementaryTypeName","src":"894:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"862:48:7"},"returnParameters":{"id":846,"nodeType":"ParameterList","parameters":[],"src":"919:0:7"},"scope":848,"src":"835:85:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":849,"src":"322:600:7","usedErrors":[],"usedEvents":[]}],"src":"33:890:7"},"id":7},"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol","exportedSymbols":{"AddressCast":[1001]},"id":1002,"license":"LZBL-1.2","nodeType":"SourceUnit","nodes":[{"id":850,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"38:24:8"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressCast","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1001,"linearizedBaseContracts":[1001],"name":"AddressCast","nameLocation":"72:11:8","nodeType":"ContractDefinition","nodes":[{"errorSelector":"18456c9b","id":852,"name":"AddressCast_InvalidSizeForAddress","nameLocation":"96:33:8","nodeType":"ErrorDefinition","parameters":{"id":851,"nodeType":"ParameterList","parameters":[],"src":"129:2:8"},"src":"90:42:8"},{"errorSelector":"6281faa2","id":854,"name":"AddressCast_InvalidAddress","nameLocation":"143:26:8","nodeType":"ErrorDefinition","parameters":{"id":853,"nodeType":"ParameterList","parameters":[],"src":"169:2:8"},"src":"137:35:8"},{"body":{"id":893,"nodeType":"Block","src":"266:255:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":861,"name":"_addressBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"280:13:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"294:6:8","memberName":"length","nodeType":"MemberAccess","src":"280:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3332","id":863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"303:2:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"280:25:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":868,"nodeType":"IfStatement","src":"276:66:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":865,"name":"AddressCast_InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"314:26:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"314:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":867,"nodeType":"RevertStatement","src":"307:35:8"}},{"expression":{"id":874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":869,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":859,"src":"352:6:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":872,"name":"_addressBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"369:13:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"361:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":870,"name":"bytes32","nodeType":"ElementaryTypeName","src":"361:7:8","typeDescriptions":{}}},"id":873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"361:22:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"352:31:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":875,"nodeType":"ExpressionStatement","src":"352:31:8"},{"id":892,"nodeType":"UncheckedBlock","src":"393:122:8","statements":[{"assignments":[877],"declarations":[{"constant":false,"id":877,"mutability":"mutable","name":"offset","nameLocation":"425:6:8","nodeType":"VariableDeclaration","scope":892,"src":"417:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":876,"name":"uint256","nodeType":"ElementaryTypeName","src":"417:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":882,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"434:2:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":879,"name":"_addressBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":856,"src":"439:13:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"453:6:8","memberName":"length","nodeType":"MemberAccess","src":"439:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"434:25:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"417:42:8"},{"expression":{"id":890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":883,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":859,"src":"473:6:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":884,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":859,"src":"482:6:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":885,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":877,"src":"493:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"502:1:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"493:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":888,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"492:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"482:22:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"473:31:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":891,"nodeType":"ExpressionStatement","src":"473:31:8"}]}]},"id":894,"implemented":true,"kind":"function","modifiers":[],"name":"toBytes32","nameLocation":"187:9:8","nodeType":"FunctionDefinition","parameters":{"id":857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":856,"mutability":"mutable","name":"_addressBytes","nameLocation":"212:13:8","nodeType":"VariableDeclaration","scope":894,"src":"197:28:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":855,"name":"bytes","nodeType":"ElementaryTypeName","src":"197:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"196:30:8"},"returnParameters":{"id":860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":859,"mutability":"mutable","name":"result","nameLocation":"258:6:8","nodeType":"VariableDeclaration","scope":894,"src":"250:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":858,"name":"bytes32","nodeType":"ElementaryTypeName","src":"250:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"249:16:8"},"scope":1001,"src":"178:343:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":914,"nodeType":"Block","src":"603:61:8","statements":[{"expression":{"id":912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":901,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":899,"src":"613:6:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":908,"name":"_address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":896,"src":"646:8:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"638:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":906,"name":"uint160","nodeType":"ElementaryTypeName","src":"638:7:8","typeDescriptions":{}}},"id":909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"638:17:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"630:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":904,"name":"uint256","nodeType":"ElementaryTypeName","src":"630:7:8","typeDescriptions":{}}},"id":910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"630:26:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"622:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":902,"name":"bytes32","nodeType":"ElementaryTypeName","src":"622:7:8","typeDescriptions":{}}},"id":911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"622:35:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"613:44:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":913,"nodeType":"ExpressionStatement","src":"613:44:8"}]},"id":915,"implemented":true,"kind":"function","modifiers":[],"name":"toBytes32","nameLocation":"536:9:8","nodeType":"FunctionDefinition","parameters":{"id":897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":896,"mutability":"mutable","name":"_address","nameLocation":"554:8:8","nodeType":"VariableDeclaration","scope":915,"src":"546:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":895,"name":"address","nodeType":"ElementaryTypeName","src":"546:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"545:18:8"},"returnParameters":{"id":900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":899,"mutability":"mutable","name":"result","nameLocation":"595:6:8","nodeType":"VariableDeclaration","scope":915,"src":"587:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":898,"name":"bytes32","nodeType":"ElementaryTypeName","src":"587:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"586:16:8"},"scope":1001,"src":"527:137:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":952,"nodeType":"Block","src":"771:307:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":924,"name":"_size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"785:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"794:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"785:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":927,"name":"_size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"799:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3332","id":928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"807:2:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"799:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"785:24:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":934,"nodeType":"IfStatement","src":"781:72:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":931,"name":"AddressCast_InvalidSizeForAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"818:33:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"818:35:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":933,"nodeType":"RevertStatement","src":"811:42:8"}},{"expression":{"id":940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":935,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"863:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":938,"name":"_size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"882:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"872:9:8","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":936,"name":"bytes","nodeType":"ElementaryTypeName","src":"876:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"872:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"863:25:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":941,"nodeType":"ExpressionStatement","src":"863:25:8"},{"id":951,"nodeType":"UncheckedBlock","src":"898:174:8","statements":[{"assignments":[943],"declarations":[{"constant":false,"id":943,"mutability":"mutable","name":"offset","nameLocation":"930:6:8","nodeType":"VariableDeclaration","scope":951,"src":"922:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":942,"name":"uint256","nodeType":"ElementaryTypeName","src":"922:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":949,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"939:3:8","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":945,"name":"_size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"945:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"953:1:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"945:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"939:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"922:32:8"},{"AST":{"nativeSrc":"977:85:8","nodeType":"YulBlock","src":"977:85:8","statements":[{"expression":{"arguments":[{"arguments":[{"name":"result","nativeSrc":"1006:6:8","nodeType":"YulIdentifier","src":"1006:6:8"},{"kind":"number","nativeSrc":"1014:2:8","nodeType":"YulLiteral","src":"1014:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1002:3:8","nodeType":"YulIdentifier","src":"1002:3:8"},"nativeSrc":"1002:15:8","nodeType":"YulFunctionCall","src":"1002:15:8"},{"arguments":[{"name":"offset","nativeSrc":"1023:6:8","nodeType":"YulIdentifier","src":"1023:6:8"},{"name":"_addressBytes32","nativeSrc":"1031:15:8","nodeType":"YulIdentifier","src":"1031:15:8"}],"functionName":{"name":"shl","nativeSrc":"1019:3:8","nodeType":"YulIdentifier","src":"1019:3:8"},"nativeSrc":"1019:28:8","nodeType":"YulFunctionCall","src":"1019:28:8"}],"functionName":{"name":"mstore","nativeSrc":"995:6:8","nodeType":"YulIdentifier","src":"995:6:8"},"nativeSrc":"995:53:8","nodeType":"YulFunctionCall","src":"995:53:8"},"nativeSrc":"995:53:8","nodeType":"YulExpressionStatement","src":"995:53:8"}]},"evmVersion":"paris","externalReferences":[{"declaration":917,"isOffset":false,"isSlot":false,"src":"1031:15:8","valueSize":1},{"declaration":943,"isOffset":false,"isSlot":false,"src":"1023:6:8","valueSize":1},{"declaration":922,"isOffset":false,"isSlot":false,"src":"1006:6:8","valueSize":1}],"id":950,"nodeType":"InlineAssembly","src":"968:94:8"}]}]},"id":953,"implemented":true,"kind":"function","modifiers":[],"name":"toBytes","nameLocation":"679:7:8","nodeType":"FunctionDefinition","parameters":{"id":920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":917,"mutability":"mutable","name":"_addressBytes32","nameLocation":"695:15:8","nodeType":"VariableDeclaration","scope":953,"src":"687:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":916,"name":"bytes32","nodeType":"ElementaryTypeName","src":"687:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":919,"mutability":"mutable","name":"_size","nameLocation":"720:5:8","nodeType":"VariableDeclaration","scope":953,"src":"712:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":918,"name":"uint256","nodeType":"ElementaryTypeName","src":"712:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"686:40:8"},"returnParameters":{"id":923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":922,"mutability":"mutable","name":"result","nameLocation":"763:6:8","nodeType":"VariableDeclaration","scope":953,"src":"750:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":921,"name":"bytes","nodeType":"ElementaryTypeName","src":"750:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"749:21:8"},"scope":1001,"src":"670:408:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":973,"nodeType":"Block","src":"1167:68:8","statements":[{"expression":{"id":971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":960,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":958,"src":"1177:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":967,"name":"_addressBytes32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"1210:15:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":966,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1202:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":965,"name":"uint256","nodeType":"ElementaryTypeName","src":"1202:7:8","typeDescriptions":{}}},"id":968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1202:24:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1194:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":963,"name":"uint160","nodeType":"ElementaryTypeName","src":"1194:7:8","typeDescriptions":{}}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1194:33:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":962,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1186:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":961,"name":"address","nodeType":"ElementaryTypeName","src":"1186:7:8","typeDescriptions":{}}},"id":970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1186:42:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1177:51:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":972,"nodeType":"ExpressionStatement","src":"1177:51:8"}]},"id":974,"implemented":true,"kind":"function","modifiers":[],"name":"toAddress","nameLocation":"1093:9:8","nodeType":"FunctionDefinition","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":955,"mutability":"mutable","name":"_addressBytes32","nameLocation":"1111:15:8","nodeType":"VariableDeclaration","scope":974,"src":"1103:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":954,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1103:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1102:25:8"},"returnParameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"result","nameLocation":"1159:6:8","nodeType":"VariableDeclaration","scope":974,"src":"1151:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":957,"name":"address","nodeType":"ElementaryTypeName","src":"1151:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1150:16:8"},"scope":1001,"src":"1084:151:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":999,"nodeType":"Block","src":"1329:134:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":981,"name":"_addressBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"1343:13:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1357:6:8","memberName":"length","nodeType":"MemberAccess","src":"1343:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"3230","id":983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1367:2:8","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"1343:26:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":988,"nodeType":"IfStatement","src":"1339:67:8","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":985,"name":"AddressCast_InvalidAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"1378:26:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1378:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":987,"nodeType":"RevertStatement","src":"1371:35:8"}},{"expression":{"id":997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":989,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"1416:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":994,"name":"_addressBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"1441:13:8","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1433:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes20_$","typeString":"type(bytes20)"},"typeName":{"id":992,"name":"bytes20","nodeType":"ElementaryTypeName","src":"1433:7:8","typeDescriptions":{}}},"id":995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1433:22:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes20","typeString":"bytes20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"id":991,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1425:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":990,"name":"address","nodeType":"ElementaryTypeName","src":"1425:7:8","typeDescriptions":{}}},"id":996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1425:31:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1416:40:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":998,"nodeType":"ExpressionStatement","src":"1416:40:8"}]},"id":1000,"implemented":true,"kind":"function","modifiers":[],"name":"toAddress","nameLocation":"1250:9:8","nodeType":"FunctionDefinition","parameters":{"id":977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":976,"mutability":"mutable","name":"_addressBytes","nameLocation":"1275:13:8","nodeType":"VariableDeclaration","scope":1000,"src":"1260:28:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":975,"name":"bytes","nodeType":"ElementaryTypeName","src":"1260:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1259:30:8"},"returnParameters":{"id":980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":979,"mutability":"mutable","name":"result","nameLocation":"1321:6:8","nodeType":"VariableDeclaration","scope":1000,"src":"1313:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":978,"name":"address","nodeType":"ElementaryTypeName","src":"1313:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1312:16:8"},"scope":1001,"src":"1241:222:8","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1002,"src":"64:1401:8","usedErrors":[852,854],"usedEvents":[]}],"src":"38:1428:8"},"id":8},"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol","exportedSymbols":{"AddressCast":[1001],"Packet":[796],"PacketV1Codec":[1325]},"id":1326,"license":"LZBL-1.2","nodeType":"SourceUnit","nodes":[{"id":1003,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"38:24:9"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol","file":"../../interfaces/ISendLib.sol","id":1005,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1326,"sourceUnit":849,"src":"64:55:9","symbolAliases":[{"foreign":{"id":1004,"name":"Packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":796,"src":"73:6:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol","file":"../../libs/AddressCast.sol","id":1007,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1326,"sourceUnit":1002,"src":"120:57:9","symbolAliases":[{"foreign":{"id":1006,"name":"AddressCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1001,"src":"129:11:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"PacketV1Codec","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1325,"linearizedBaseContracts":[1325],"name":"PacketV1Codec","nameLocation":"187:13:9","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1010,"libraryName":{"id":1008,"name":"AddressCast","nameLocations":["213:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1001,"src":"213:11:9"},"nodeType":"UsingForDirective","src":"207:30:9","typeName":{"id":1009,"name":"address","nodeType":"ElementaryTypeName","src":"229:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":1013,"libraryName":{"id":1011,"name":"AddressCast","nameLocations":["248:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":1001,"src":"248:11:9"},"nodeType":"UsingForDirective","src":"242:30:9","typeName":{"id":1012,"name":"bytes32","nodeType":"ElementaryTypeName","src":"264:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"constant":true,"id":1016,"mutability":"constant","name":"PACKET_VERSION","nameLocation":"302:14:9","nodeType":"VariableDeclaration","scope":1325,"src":"278:42:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1014,"name":"uint8","nodeType":"ElementaryTypeName","src":"278:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"31","id":1015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"319:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":1019,"mutability":"constant","name":"PACKET_VERSION_OFFSET","nameLocation":"406:21:9","nodeType":"VariableDeclaration","scope":1325,"src":"381:50:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1017,"name":"uint256","nodeType":"ElementaryTypeName","src":"381:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":1018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"430:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"private"},{"constant":true,"id":1022,"mutability":"constant","name":"NONCE_OFFSET","nameLocation":"478:12:9","nodeType":"VariableDeclaration","scope":1325,"src":"453:41:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1020,"name":"uint256","nodeType":"ElementaryTypeName","src":"453:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":1021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"493:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":1025,"mutability":"constant","name":"SRC_EID_OFFSET","nameLocation":"540:14:9","nodeType":"VariableDeclaration","scope":1325,"src":"515:43:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1023,"name":"uint256","nodeType":"ElementaryTypeName","src":"515:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"39","id":1024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"557:1:9","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"visibility":"private"},{"constant":true,"id":1028,"mutability":"constant","name":"SENDER_OFFSET","nameLocation":"589:13:9","nodeType":"VariableDeclaration","scope":1325,"src":"564:43:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1026,"name":"uint256","nodeType":"ElementaryTypeName","src":"564:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3133","id":1027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"605:2:9","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"13"},"visibility":"private"},{"constant":true,"id":1031,"mutability":"constant","name":"DST_EID_OFFSET","nameLocation":"638:14:9","nodeType":"VariableDeclaration","scope":1325,"src":"613:44:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1029,"name":"uint256","nodeType":"ElementaryTypeName","src":"613:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3435","id":1030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"655:2:9","typeDescriptions":{"typeIdentifier":"t_rational_45_by_1","typeString":"int_const 45"},"value":"45"},"visibility":"private"},{"constant":true,"id":1034,"mutability":"constant","name":"RECEIVER_OFFSET","nameLocation":"688:15:9","nodeType":"VariableDeclaration","scope":1325,"src":"663:45:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1032,"name":"uint256","nodeType":"ElementaryTypeName","src":"663:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3439","id":1033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"706:2:9","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"49"},"visibility":"private"},{"constant":true,"id":1037,"mutability":"constant","name":"GUID_OFFSET","nameLocation":"771:11:9","nodeType":"VariableDeclaration","scope":1325,"src":"746:41:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1035,"name":"uint256","nodeType":"ElementaryTypeName","src":"746:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3831","id":1036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"785:2:9","typeDescriptions":{"typeIdentifier":"t_rational_81_by_1","typeString":"int_const 81"},"value":"81"},"visibility":"private"},{"constant":true,"id":1040,"mutability":"constant","name":"MESSAGE_OFFSET","nameLocation":"845:14:9","nodeType":"VariableDeclaration","scope":1325,"src":"820:45:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1038,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313133","id":1039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"862:3:9","typeDescriptions":{"typeIdentifier":"t_rational_113_by_1","typeString":"int_const 113"},"value":"113"},"visibility":"private"},{"body":{"id":1071,"nodeType":"Block","src":"962:295:9","statements":[{"expression":{"id":1069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1048,"name":"encodedPacket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1046,"src":"972:13:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1051,"name":"PACKET_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1016,"src":"1018:14:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"expression":{"id":1052,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1046:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1053,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1054:5:9","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":783,"src":"1046:13:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"expression":{"id":1054,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1073:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1055,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1081:6:9","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":785,"src":"1073:14:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":1056,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1101:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1057,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1109:6:9","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":787,"src":"1101:14:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1116:9:9","memberName":"toBytes32","nodeType":"MemberAccess","referencedDeclaration":915,"src":"1101:24:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes32_$attached_to$_t_address_$","typeString":"function (address) pure returns (bytes32)"}},"id":1059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1101:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1060,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1141:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1149:6:9","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":789,"src":"1141:14:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1062,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1169:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1063,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1177:8:9","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":791,"src":"1169:16:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1064,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1199:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1065,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1207:4:9","memberName":"guid","nodeType":"MemberAccess","referencedDeclaration":793,"src":"1199:12:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1066,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1225:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1233:7:9","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":795,"src":"1225:15:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1049,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"988:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1050,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"992:12:9","memberName":"encodePacked","nodeType":"MemberAccess","src":"988:16:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"988:262:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"972:278:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1070,"nodeType":"ExpressionStatement","src":"972:278:9"}]},"id":1072,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nameLocation":"881:6:9","nodeType":"FunctionDefinition","parameters":{"id":1044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1043,"mutability":"mutable","name":"_packet","nameLocation":"902:7:9","nodeType":"VariableDeclaration","scope":1072,"src":"888:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet"},"typeName":{"id":1042,"nodeType":"UserDefinedTypeName","pathNode":{"id":1041,"name":"Packet","nameLocations":["888:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":796,"src":"888:6:9"},"referencedDeclaration":796,"src":"888:6:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_storage_ptr","typeString":"struct Packet"}},"visibility":"internal"}],"src":"887:23:9"},"returnParameters":{"id":1047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1046,"mutability":"mutable","name":"encodedPacket","nameLocation":"947:13:9","nodeType":"VariableDeclaration","scope":1072,"src":"934:26:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1045,"name":"bytes","nodeType":"ElementaryTypeName","src":"934:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"933:28:9"},"scope":1325,"src":"872:385:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1097,"nodeType":"Block","src":"1351:271:9","statements":[{"expression":{"arguments":[{"id":1082,"name":"PACKET_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1016,"src":"1414:14:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"expression":{"id":1083,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"1446:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1084,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1454:5:9","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":783,"src":"1446:13:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"expression":{"id":1085,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"1477:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1086,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1485:6:9","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":785,"src":"1477:14:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":1087,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"1509:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1517:6:9","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":787,"src":"1509:14:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1524:9:9","memberName":"toBytes32","nodeType":"MemberAccess","referencedDeclaration":915,"src":"1509:24:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes32_$attached_to$_t_address_$","typeString":"function (address) pure returns (bytes32)"}},"id":1090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1509:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1091,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"1553:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1561:6:9","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":789,"src":"1553:14:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1093,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1075,"src":"1585:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1593:8:9","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":791,"src":"1585:16:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1080,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1380:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1384:12:9","memberName":"encodePacked","nodeType":"MemberAccess","src":"1380:16:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1380:235:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1079,"id":1096,"nodeType":"Return","src":"1361:254:9"}]},"id":1098,"implemented":true,"kind":"function","modifiers":[],"name":"encodePacketHeader","nameLocation":"1272:18:9","nodeType":"FunctionDefinition","parameters":{"id":1076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1075,"mutability":"mutable","name":"_packet","nameLocation":"1305:7:9","nodeType":"VariableDeclaration","scope":1098,"src":"1291:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet"},"typeName":{"id":1074,"nodeType":"UserDefinedTypeName","pathNode":{"id":1073,"name":"Packet","nameLocations":["1291:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":796,"src":"1291:6:9"},"referencedDeclaration":796,"src":"1291:6:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_storage_ptr","typeString":"struct Packet"}},"visibility":"internal"}],"src":"1290:23:9"},"returnParameters":{"id":1079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1078,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1098,"src":"1337:12:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1077,"name":"bytes","nodeType":"ElementaryTypeName","src":"1337:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1336:14:9"},"scope":1325,"src":"1263:359:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1114,"nodeType":"Block","src":"1711:71:9","statements":[{"expression":{"arguments":[{"expression":{"id":1108,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"1745:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1109,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1753:4:9","memberName":"guid","nodeType":"MemberAccess","referencedDeclaration":793,"src":"1745:12:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1110,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"1759:7:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet memory"}},"id":1111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1767:7:9","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":795,"src":"1759:15:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1106,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1728:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1107,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1732:12:9","memberName":"encodePacked","nodeType":"MemberAccess","src":"1728:16:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1728:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1105,"id":1113,"nodeType":"Return","src":"1721:54:9"}]},"id":1115,"implemented":true,"kind":"function","modifiers":[],"name":"encodePayload","nameLocation":"1637:13:9","nodeType":"FunctionDefinition","parameters":{"id":1102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1101,"mutability":"mutable","name":"_packet","nameLocation":"1665:7:9","nodeType":"VariableDeclaration","scope":1115,"src":"1651:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_memory_ptr","typeString":"struct Packet"},"typeName":{"id":1100,"nodeType":"UserDefinedTypeName","pathNode":{"id":1099,"name":"Packet","nameLocations":["1651:6:9"],"nodeType":"IdentifierPath","referencedDeclaration":796,"src":"1651:6:9"},"referencedDeclaration":796,"src":"1651:6:9","typeDescriptions":{"typeIdentifier":"t_struct$_Packet_$796_storage_ptr","typeString":"struct Packet"}},"visibility":"internal"}],"src":"1650:23:9"},"returnParameters":{"id":1105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1115,"src":"1697:12:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1103,"name":"bytes","nodeType":"ElementaryTypeName","src":"1697:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1696:14:9"},"scope":1325,"src":"1628:154:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1127,"nodeType":"Block","src":"1867:46:9","statements":[{"expression":{"baseExpression":{"id":1122,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"1884:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1124,"name":"GUID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"1894:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1884:22:9","startExpression":{"hexValue":"30","id":1123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1892:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"functionReturnParameters":1121,"id":1126,"nodeType":"Return","src":"1877:29:9"}]},"id":1128,"implemented":true,"kind":"function","modifiers":[],"name":"header","nameLocation":"1797:6:9","nodeType":"FunctionDefinition","parameters":{"id":1118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1117,"mutability":"mutable","name":"_packet","nameLocation":"1819:7:9","nodeType":"VariableDeclaration","scope":1128,"src":"1804:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1116,"name":"bytes","nodeType":"ElementaryTypeName","src":"1804:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1803:24:9"},"returnParameters":{"id":1121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1120,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1128,"src":"1851:14:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1119,"name":"bytes","nodeType":"ElementaryTypeName","src":"1851:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1850:16:9"},"scope":1325,"src":"1788:125:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1146,"nodeType":"Block","src":"1990:82:9","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":1139,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1130,"src":"2020:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1141,"name":"NONCE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"2050:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2020:43:9","startExpression":{"id":1140,"name":"PACKET_VERSION_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"2028:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2013:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1137,"name":"bytes1","nodeType":"ElementaryTypeName","src":"2013:6:9","typeDescriptions":{}}},"id":1143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2013:51:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1136,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2007:5:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1135,"name":"uint8","nodeType":"ElementaryTypeName","src":"2007:5:9","typeDescriptions":{}}},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2007:58:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":1134,"id":1145,"nodeType":"Return","src":"2000:65:9"}]},"id":1147,"implemented":true,"kind":"function","modifiers":[],"name":"version","nameLocation":"1928:7:9","nodeType":"FunctionDefinition","parameters":{"id":1131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1130,"mutability":"mutable","name":"_packet","nameLocation":"1951:7:9","nodeType":"VariableDeclaration","scope":1147,"src":"1936:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1129,"name":"bytes","nodeType":"ElementaryTypeName","src":"1936:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1935:24:9"},"returnParameters":{"id":1134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1133,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1147,"src":"1983:5:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1132,"name":"uint8","nodeType":"ElementaryTypeName","src":"1983:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1982:7:9"},"scope":1325,"src":"1919:153:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1165,"nodeType":"Block","src":"2148:76:9","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":1158,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1149,"src":"2179:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1160,"name":"SRC_EID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"2200:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2179:36:9","startExpression":{"id":1159,"name":"NONCE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1022,"src":"2187:12:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2172:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes8_$","typeString":"type(bytes8)"},"typeName":{"id":1156,"name":"bytes8","nodeType":"ElementaryTypeName","src":"2172:6:9","typeDescriptions":{}}},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2172:44:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes8","typeString":"bytes8"}],"id":1155,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2165:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":1154,"name":"uint64","nodeType":"ElementaryTypeName","src":"2165:6:9","typeDescriptions":{}}},"id":1163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2165:52:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":1153,"id":1164,"nodeType":"Return","src":"2158:59:9"}]},"id":1166,"implemented":true,"kind":"function","modifiers":[],"name":"nonce","nameLocation":"2087:5:9","nodeType":"FunctionDefinition","parameters":{"id":1150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1149,"mutability":"mutable","name":"_packet","nameLocation":"2108:7:9","nodeType":"VariableDeclaration","scope":1166,"src":"2093:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1148,"name":"bytes","nodeType":"ElementaryTypeName","src":"2093:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2092:24:9"},"returnParameters":{"id":1153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1152,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1166,"src":"2140:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1151,"name":"uint64","nodeType":"ElementaryTypeName","src":"2140:6:9","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2139:8:9"},"scope":1325,"src":"2078:146:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1184,"nodeType":"Block","src":"2301:77:9","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":1177,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1168,"src":"2332:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1179,"name":"SENDER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1028,"src":"2355:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2332:37:9","startExpression":{"id":1178,"name":"SRC_EID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"2340:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2325:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":1175,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2325:6:9","typeDescriptions":{}}},"id":1181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2325:45:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":1174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2318:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":1173,"name":"uint32","nodeType":"ElementaryTypeName","src":"2318:6:9","typeDescriptions":{}}},"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2318:53:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":1172,"id":1183,"nodeType":"Return","src":"2311:60:9"}]},"id":1185,"implemented":true,"kind":"function","modifiers":[],"name":"srcEid","nameLocation":"2239:6:9","nodeType":"FunctionDefinition","parameters":{"id":1169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1168,"mutability":"mutable","name":"_packet","nameLocation":"2261:7:9","nodeType":"VariableDeclaration","scope":1185,"src":"2246:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1167,"name":"bytes","nodeType":"ElementaryTypeName","src":"2246:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2245:24:9"},"returnParameters":{"id":1172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1171,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1185,"src":"2293:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1170,"name":"uint32","nodeType":"ElementaryTypeName","src":"2293:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2292:8:9"},"scope":1325,"src":"2230:148:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1200,"nodeType":"Block","src":"2456:70:9","statements":[{"expression":{"arguments":[{"baseExpression":{"id":1194,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"2481:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1196,"name":"DST_EID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1031,"src":"2503:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2481:37:9","startExpression":{"id":1195,"name":"SENDER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1028,"src":"2489:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2473:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1192,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2473:7:9","typeDescriptions":{}}},"id":1198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2473:46:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1191,"id":1199,"nodeType":"Return","src":"2466:53:9"}]},"id":1201,"implemented":true,"kind":"function","modifiers":[],"name":"sender","nameLocation":"2393:6:9","nodeType":"FunctionDefinition","parameters":{"id":1188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1187,"mutability":"mutable","name":"_packet","nameLocation":"2415:7:9","nodeType":"VariableDeclaration","scope":1201,"src":"2400:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1186,"name":"bytes","nodeType":"ElementaryTypeName","src":"2400:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2399:24:9"},"returnParameters":{"id":1191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1190,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1201,"src":"2447:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1189,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2447:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2446:9:9"},"scope":1325,"src":"2384:142:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1214,"nodeType":"Block","src":"2614:51:9","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1209,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"2638:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1208,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1201,"src":"2631:6:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (bytes calldata) pure returns (bytes32)"}},"id":1210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2631:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2647:9:9","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":974,"src":"2631:25:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_address_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (address)"}},"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2631:27:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1207,"id":1213,"nodeType":"Return","src":"2624:34:9"}]},"id":1215,"implemented":true,"kind":"function","modifiers":[],"name":"senderAddressB20","nameLocation":"2541:16:9","nodeType":"FunctionDefinition","parameters":{"id":1204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1203,"mutability":"mutable","name":"_packet","nameLocation":"2573:7:9","nodeType":"VariableDeclaration","scope":1215,"src":"2558:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1202,"name":"bytes","nodeType":"ElementaryTypeName","src":"2558:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2557:24:9"},"returnParameters":{"id":1207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1215,"src":"2605:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1205,"name":"address","nodeType":"ElementaryTypeName","src":"2605:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2604:9:9"},"scope":1325,"src":"2532:133:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1233,"nodeType":"Block","src":"2742:79:9","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":1226,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1217,"src":"2773:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1228,"name":"RECEIVER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1034,"src":"2796:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2773:39:9","startExpression":{"id":1227,"name":"DST_EID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1031,"src":"2781:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1225,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2766:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":1224,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2766:6:9","typeDescriptions":{}}},"id":1230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2766:47:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":1223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2759:6:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":1222,"name":"uint32","nodeType":"ElementaryTypeName","src":"2759:6:9","typeDescriptions":{}}},"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2759:55:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":1221,"id":1232,"nodeType":"Return","src":"2752:62:9"}]},"id":1234,"implemented":true,"kind":"function","modifiers":[],"name":"dstEid","nameLocation":"2680:6:9","nodeType":"FunctionDefinition","parameters":{"id":1218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1217,"mutability":"mutable","name":"_packet","nameLocation":"2702:7:9","nodeType":"VariableDeclaration","scope":1234,"src":"2687:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1216,"name":"bytes","nodeType":"ElementaryTypeName","src":"2687:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2686:24:9"},"returnParameters":{"id":1221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1220,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1234,"src":"2734:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1219,"name":"uint32","nodeType":"ElementaryTypeName","src":"2734:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2733:8:9"},"scope":1325,"src":"2671:150:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1249,"nodeType":"Block","src":"2901:69:9","statements":[{"expression":{"arguments":[{"baseExpression":{"id":1243,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"2926:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1245,"name":"GUID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"2950:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2926:36:9","startExpression":{"id":1244,"name":"RECEIVER_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1034,"src":"2934:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2918:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1241,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2918:7:9","typeDescriptions":{}}},"id":1247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2918:45:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1240,"id":1248,"nodeType":"Return","src":"2911:52:9"}]},"id":1250,"implemented":true,"kind":"function","modifiers":[],"name":"receiver","nameLocation":"2836:8:9","nodeType":"FunctionDefinition","parameters":{"id":1237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1236,"mutability":"mutable","name":"_packet","nameLocation":"2860:7:9","nodeType":"VariableDeclaration","scope":1250,"src":"2845:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1235,"name":"bytes","nodeType":"ElementaryTypeName","src":"2845:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2844:24:9"},"returnParameters":{"id":1240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1239,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1250,"src":"2892:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1238,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2892:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2891:9:9"},"scope":1325,"src":"2827:143:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1263,"nodeType":"Block","src":"3053:53:9","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1258,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"3079:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1257,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1250,"src":"3070:8:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (bytes calldata) pure returns (bytes32)"}},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3070:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3088:9:9","memberName":"toAddress","nodeType":"MemberAccess","referencedDeclaration":974,"src":"3070:27:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_address_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (address)"}},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3070:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1256,"id":1262,"nodeType":"Return","src":"3063:36:9"}]},"id":1264,"implemented":true,"kind":"function","modifiers":[],"name":"receiverB20","nameLocation":"2985:11:9","nodeType":"FunctionDefinition","parameters":{"id":1253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1252,"mutability":"mutable","name":"_packet","nameLocation":"3012:7:9","nodeType":"VariableDeclaration","scope":1264,"src":"2997:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1251,"name":"bytes","nodeType":"ElementaryTypeName","src":"2997:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2996:24:9"},"returnParameters":{"id":1256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1255,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1264,"src":"3044:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1254,"name":"address","nodeType":"ElementaryTypeName","src":"3044:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3043:9:9"},"scope":1325,"src":"2976:130:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1279,"nodeType":"Block","src":"3182:68:9","statements":[{"expression":{"arguments":[{"baseExpression":{"id":1273,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1266,"src":"3207:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1275,"name":"MESSAGE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1040,"src":"3227:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"3207:35:9","startExpression":{"id":1274,"name":"GUID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"3215:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3199:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1271,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3199:7:9","typeDescriptions":{}}},"id":1277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3199:44:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1270,"id":1278,"nodeType":"Return","src":"3192:51:9"}]},"id":1280,"implemented":true,"kind":"function","modifiers":[],"name":"guid","nameLocation":"3121:4:9","nodeType":"FunctionDefinition","parameters":{"id":1267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1266,"mutability":"mutable","name":"_packet","nameLocation":"3141:7:9","nodeType":"VariableDeclaration","scope":1280,"src":"3126:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1265,"name":"bytes","nodeType":"ElementaryTypeName","src":"3126:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3125:24:9"},"returnParameters":{"id":1270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1269,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1280,"src":"3173:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1268,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3173:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3172:9:9"},"scope":1325,"src":"3112:138:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1294,"nodeType":"Block","src":"3336:55:9","statements":[{"expression":{"arguments":[{"baseExpression":{"id":1289,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1282,"src":"3359:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"3359:24:9","startExpression":{"id":1290,"name":"MESSAGE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1040,"src":"3367:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3353:5:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1287,"name":"bytes","nodeType":"ElementaryTypeName","src":"3353:5:9","typeDescriptions":{}}},"id":1292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3353:31:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1286,"id":1293,"nodeType":"Return","src":"3346:38:9"}]},"id":1295,"implemented":true,"kind":"function","modifiers":[],"name":"message","nameLocation":"3265:7:9","nodeType":"FunctionDefinition","parameters":{"id":1283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1282,"mutability":"mutable","name":"_packet","nameLocation":"3288:7:9","nodeType":"VariableDeclaration","scope":1295,"src":"3273:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1281,"name":"bytes","nodeType":"ElementaryTypeName","src":"3273:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3272:24:9"},"returnParameters":{"id":1286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1295,"src":"3320:14:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1284,"name":"bytes","nodeType":"ElementaryTypeName","src":"3320:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3319:16:9"},"scope":1325,"src":"3256:135:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1309,"nodeType":"Block","src":"3477:52:9","statements":[{"expression":{"arguments":[{"baseExpression":{"id":1304,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1297,"src":"3500:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"3500:21:9","startExpression":{"id":1305,"name":"GUID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"3508:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3494:5:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1302,"name":"bytes","nodeType":"ElementaryTypeName","src":"3494:5:9","typeDescriptions":{}}},"id":1307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3494:28:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1301,"id":1308,"nodeType":"Return","src":"3487:35:9"}]},"id":1310,"implemented":true,"kind":"function","modifiers":[],"name":"payload","nameLocation":"3406:7:9","nodeType":"FunctionDefinition","parameters":{"id":1298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1297,"mutability":"mutable","name":"_packet","nameLocation":"3429:7:9","nodeType":"VariableDeclaration","scope":1310,"src":"3414:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1296,"name":"bytes","nodeType":"ElementaryTypeName","src":"3414:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3413:24:9"},"returnParameters":{"id":1301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1310,"src":"3461:14:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1299,"name":"bytes","nodeType":"ElementaryTypeName","src":"3461:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3460:16:9"},"scope":1325,"src":"3397:132:9","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1323,"nodeType":"Block","src":"3612:51:9","statements":[{"expression":{"arguments":[{"arguments":[{"id":1319,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1312,"src":"3647:7:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1318,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1310,"src":"3639:7:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bytes calldata)"}},"id":1320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3639:16:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1317,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3629:9:9","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3629:27:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1316,"id":1322,"nodeType":"Return","src":"3622:34:9"}]},"id":1324,"implemented":true,"kind":"function","modifiers":[],"name":"payloadHash","nameLocation":"3544:11:9","nodeType":"FunctionDefinition","parameters":{"id":1313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1312,"mutability":"mutable","name":"_packet","nameLocation":"3571:7:9","nodeType":"VariableDeclaration","scope":1324,"src":"3556:22:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1311,"name":"bytes","nodeType":"ElementaryTypeName","src":"3556:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3555:24:9"},"returnParameters":{"id":1316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1315,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1324,"src":"3603:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1314,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3603:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3602:9:9"},"scope":1325,"src":"3535:128:9","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1326,"src":"179:3486:9","usedErrors":[],"usedEvents":[]}],"src":"38:3628:9"},"id":9},"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol","exportedSymbols":{"MessagingFee":[33],"MessagingReceipt":[28],"OApp":[1371],"OAppCore":[1501],"OAppReceiver":[1653],"OAppSender":[1839],"Origin":[40]},"id":1372,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1327,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:10"},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol","file":"./OAppSender.sol","id":1331,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1372,"sourceUnit":1840,"src":"199:78:10","symbolAliases":[{"foreign":{"id":1328,"name":"OAppSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"208:10:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1329,"name":"MessagingFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"220:12:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1330,"name":"MessagingReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"234:16:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol","file":"./OAppReceiver.sol","id":1334,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1372,"sourceUnit":1654,"src":"389:58:10","symbolAliases":[{"foreign":{"id":1332,"name":"OAppReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1653,"src":"398:12:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1333,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"412:6:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol","file":"./OAppCore.sol","id":1336,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1372,"sourceUnit":1502,"src":"448:42:10","symbolAliases":[{"foreign":{"id":1335,"name":"OAppCore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1501,"src":"457:8:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1338,"name":"OAppSender","nameLocations":["665:10:10"],"nodeType":"IdentifierPath","referencedDeclaration":1839,"src":"665:10:10"},"id":1339,"nodeType":"InheritanceSpecifier","src":"665:10:10"},{"baseName":{"id":1340,"name":"OAppReceiver","nameLocations":["677:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":1653,"src":"677:12:10"},"id":1341,"nodeType":"InheritanceSpecifier","src":"677:12:10"}],"canonicalName":"OApp","contractDependencies":[],"contractKind":"contract","documentation":{"id":1337,"nodeType":"StructuredDocumentation","src":"492:146:10","text":" @title OApp\n @dev Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality."},"fullyImplemented":false,"id":1371,"linearizedBaseContracts":[1371,1653,1839,1501,3980,6685,1902,1985,238],"name":"OApp","nameLocation":"657:4:10","nodeType":"ContractDefinition","nodes":[{"body":{"id":1353,"nodeType":"Block","src":"1046:2:10","statements":[]},"documentation":{"id":1342,"nodeType":"StructuredDocumentation","src":"696:264:10","text":" @dev Constructor to initialize the OApp with the provided endpoint and owner.\n @param _endpoint The address of the LOCAL LayerZero endpoint.\n @param _delegate The delegate capable of making OApp configurations inside of the endpoint."},"id":1354,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":1349,"name":"_endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1344,"src":"1024:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1350,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"1035:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":1351,"kind":"baseConstructorSpecifier","modifierName":{"id":1348,"name":"OAppCore","nameLocations":["1015:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":1501,"src":"1015:8:10"},"nodeType":"ModifierInvocation","src":"1015:30:10"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1344,"mutability":"mutable","name":"_endpoint","nameLocation":"985:9:10","nodeType":"VariableDeclaration","scope":1354,"src":"977:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1343,"name":"address","nodeType":"ElementaryTypeName","src":"977:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1346,"mutability":"mutable","name":"_delegate","nameLocation":"1004:9:10","nodeType":"VariableDeclaration","scope":1354,"src":"996:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1345,"name":"address","nodeType":"ElementaryTypeName","src":"996:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"976:38:10"},"returnParameters":{"id":1352,"nodeType":"ParameterList","parameters":[],"src":"1046:0:10"},"scope":1371,"src":"965:83:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1533,1693],"body":{"id":1369,"nodeType":"Block","src":"1464:58:10","statements":[{"expression":{"components":[{"id":1365,"name":"SENDER_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"1482:14:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":1366,"name":"RECEIVER_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1520,"src":"1498:16:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":1367,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1481:34:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint64_$_t_uint64_$","typeString":"tuple(uint64,uint64)"}},"functionReturnParameters":1364,"id":1368,"nodeType":"Return","src":"1474:41:10"}]},"documentation":{"id":1355,"nodeType":"StructuredDocumentation","src":"1054:228:10","text":" @notice Retrieves the OApp version information.\n @return senderVersion The version of the OAppSender.sol implementation.\n @return receiverVersion The version of the OAppReceiver.sol implementation."},"functionSelector":"17442b70","id":1370,"implemented":true,"kind":"function","modifiers":[],"name":"oAppVersion","nameLocation":"1296:11:10","nodeType":"FunctionDefinition","overrides":{"id":1359,"nodeType":"OverrideSpecifier","overrides":[{"id":1357,"name":"OAppSender","nameLocations":["1371:10:10"],"nodeType":"IdentifierPath","referencedDeclaration":1839,"src":"1371:10:10"},{"id":1358,"name":"OAppReceiver","nameLocations":["1383:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":1653,"src":"1383:12:10"}],"src":"1362:34:10"},"parameters":{"id":1356,"nodeType":"ParameterList","parameters":[],"src":"1307:2:10"},"returnParameters":{"id":1364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1361,"mutability":"mutable","name":"senderVersion","nameLocation":"1421:13:10","nodeType":"VariableDeclaration","scope":1370,"src":"1414:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1360,"name":"uint64","nodeType":"ElementaryTypeName","src":"1414:6:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":1363,"mutability":"mutable","name":"receiverVersion","nameLocation":"1443:15:10","nodeType":"VariableDeclaration","scope":1370,"src":"1436:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1362,"name":"uint64","nodeType":"ElementaryTypeName","src":"1436:6:10","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1413:46:10"},"scope":1371,"src":"1287:235:10","stateMutability":"pure","virtual":true,"visibility":"public"}],"scope":1372,"src":"639:885:10","usedErrors":[1517,1675,1677,1850,1854,1856,1858,3846,3851],"usedEvents":[1864,3857]}],"src":"33:1492:10"},"id":10},"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol","exportedSymbols":{"ILayerZeroEndpointV2":[202],"IOAppCore":[1902],"OAppCore":[1501],"Ownable":[3980]},"id":1502,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1373,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:11"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":1375,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1502,"sourceUnit":3981,"src":"59:69:11","symbolAliases":[{"foreign":{"id":1374,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"68:7:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol","file":"./interfaces/IOAppCore.sol","id":1378,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1502,"sourceUnit":1903,"src":"129:77:11","symbolAliases":[{"foreign":{"id":1376,"name":"IOAppCore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1902,"src":"138:9:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1377,"name":"ILayerZeroEndpointV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"149:20:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1380,"name":"IOAppCore","nameLocations":["360:9:11"],"nodeType":"IdentifierPath","referencedDeclaration":1902,"src":"360:9:11"},"id":1381,"nodeType":"InheritanceSpecifier","src":"360:9:11"},{"baseName":{"id":1382,"name":"Ownable","nameLocations":["371:7:11"],"nodeType":"IdentifierPath","referencedDeclaration":3980,"src":"371:7:11"},"id":1383,"nodeType":"InheritanceSpecifier","src":"371:7:11"}],"canonicalName":"OAppCore","contractDependencies":[],"contractKind":"contract","documentation":{"id":1379,"nodeType":"StructuredDocumentation","src":"208:121:11","text":" @title OAppCore\n @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations."},"fullyImplemented":false,"id":1501,"linearizedBaseContracts":[1501,3980,6685,1902],"name":"OAppCore","nameLocation":"348:8:11","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[1879],"constant":false,"functionSelector":"5e280f11","id":1386,"mutability":"immutable","name":"endpoint","nameLocation":"484:8:11","nodeType":"VariableDeclaration","scope":1501,"src":"446:46:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"},"typeName":{"id":1385,"nodeType":"UserDefinedTypeName","pathNode":{"id":1384,"name":"ILayerZeroEndpointV2","nameLocations":["446:20:11"],"nodeType":"IdentifierPath","referencedDeclaration":202,"src":"446:20:11"},"referencedDeclaration":202,"src":"446:20:11","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"visibility":"public"},{"baseFunctions":[1887],"constant":false,"functionSelector":"bb0b6a53","id":1390,"mutability":"mutable","name":"peers","nameLocation":"612:5:11","nodeType":"VariableDeclaration","scope":1501,"src":"569:48:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_bytes32_$","typeString":"mapping(uint32 => bytes32)"},"typeName":{"id":1389,"keyName":"eid","keyNameLocation":"584:3:11","keyType":{"id":1387,"name":"uint32","nodeType":"ElementaryTypeName","src":"577:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"569:35:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_bytes32_$","typeString":"mapping(uint32 => bytes32)"},"valueName":"peer","valueNameLocation":"599:4:11","valueType":{"id":1388,"name":"bytes32","nodeType":"ElementaryTypeName","src":"591:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},"visibility":"public"},{"body":{"id":1420,"nodeType":"Block","src":"1037:164:11","statements":[{"expression":{"id":1402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1398,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"1047:8:11","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1400,"name":"_endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1393,"src":"1079:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1399,"name":"ILayerZeroEndpointV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"1058:20:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILayerZeroEndpointV2_$202_$","typeString":"type(contract ILayerZeroEndpointV2)"}},"id":1401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1058:31:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"src":"1047:42:11","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"id":1403,"nodeType":"ExpressionStatement","src":"1047:42:11"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1404,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1395,"src":"1104:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1125:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1117:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1405,"name":"address","nodeType":"ElementaryTypeName","src":"1117:7:11","typeDescriptions":{}}},"id":1408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1117:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1104:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1413,"nodeType":"IfStatement","src":"1100:53:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1410,"name":"InvalidDelegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1858,"src":"1136:15:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1136:17:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1412,"nodeType":"RevertStatement","src":"1129:24:11"}},{"expression":{"arguments":[{"id":1417,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1395,"src":"1184:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1414,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"1163:8:11","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1172:11:11","memberName":"setDelegate","nodeType":"MemberAccess","referencedDeclaration":201,"src":"1163:20:11","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":1418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1163:31:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1419,"nodeType":"ExpressionStatement","src":"1163:31:11"}]},"documentation":{"id":1391,"nodeType":"StructuredDocumentation","src":"624:358:11","text":" @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\n @param _endpoint The address of the LOCAL Layer Zero endpoint.\n @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\n @dev The delegate typically should be set as the owner of the contract."},"id":1421,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1393,"mutability":"mutable","name":"_endpoint","nameLocation":"1007:9:11","nodeType":"VariableDeclaration","scope":1421,"src":"999:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1392,"name":"address","nodeType":"ElementaryTypeName","src":"999:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1395,"mutability":"mutable","name":"_delegate","nameLocation":"1026:9:11","nodeType":"VariableDeclaration","scope":1421,"src":"1018:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1394,"name":"address","nodeType":"ElementaryTypeName","src":"1018:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"998:38:11"},"returnParameters":{"id":1397,"nodeType":"ParameterList","parameters":[],"src":"1037:0:11"},"scope":1501,"src":"987:214:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1895],"body":{"id":1436,"nodeType":"Block","src":"1794:38:11","statements":[{"expression":{"arguments":[{"id":1432,"name":"_eid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1424,"src":"1813:4:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1433,"name":"_peer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1426,"src":"1819:5:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1431,"name":"_setPeer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1457,"src":"1804:8:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint32_$_t_bytes32_$returns$__$","typeString":"function (uint32,bytes32)"}},"id":1434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1804:21:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1435,"nodeType":"ExpressionStatement","src":"1804:21:11"}]},"documentation":{"id":1422,"nodeType":"StructuredDocumentation","src":"1207:512:11","text":" @notice Sets the peer address (OApp instance) for a corresponding endpoint.\n @param _eid The endpoint ID.\n @param _peer The address of the peer to be associated with the corresponding endpoint.\n @dev Only the owner/admin of the OApp can call this function.\n @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\n @dev Set this to bytes32(0) to remove the peer address.\n @dev Peer is a bytes32 to accommodate non-evm chains."},"functionSelector":"3400288b","id":1437,"implemented":true,"kind":"function","modifiers":[{"id":1429,"kind":"modifierInvocation","modifierName":{"id":1428,"name":"onlyOwner","nameLocations":["1784:9:11"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"1784:9:11"},"nodeType":"ModifierInvocation","src":"1784:9:11"}],"name":"setPeer","nameLocation":"1733:7:11","nodeType":"FunctionDefinition","parameters":{"id":1427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1424,"mutability":"mutable","name":"_eid","nameLocation":"1748:4:11","nodeType":"VariableDeclaration","scope":1437,"src":"1741:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1423,"name":"uint32","nodeType":"ElementaryTypeName","src":"1741:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1426,"mutability":"mutable","name":"_peer","nameLocation":"1762:5:11","nodeType":"VariableDeclaration","scope":1437,"src":"1754:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1425,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1754:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1740:28:11"},"returnParameters":{"id":1430,"nodeType":"ParameterList","parameters":[],"src":"1794:0:11"},"scope":1501,"src":"1724:108:11","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":1456,"nodeType":"Block","src":"2349:71:11","statements":[{"expression":{"id":1449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1445,"name":"peers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"2359:5:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_bytes32_$","typeString":"mapping(uint32 => bytes32)"}},"id":1447,"indexExpression":{"id":1446,"name":"_eid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"2365:4:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2359:11:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1448,"name":"_peer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1442,"src":"2373:5:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2359:19:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1450,"nodeType":"ExpressionStatement","src":"2359:19:11"},{"eventCall":{"arguments":[{"id":1452,"name":"_eid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"2401:4:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1453,"name":"_peer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1442,"src":"2407:5:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1451,"name":"PeerSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"2393:7:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint32_$_t_bytes32_$returns$__$","typeString":"function (uint32,bytes32)"}},"id":1454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2393:20:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1455,"nodeType":"EmitStatement","src":"2388:25:11"}]},"documentation":{"id":1438,"nodeType":"StructuredDocumentation","src":"1838:443:11","text":" @notice Sets the peer address (OApp instance) for a corresponding endpoint.\n @param _eid The endpoint ID.\n @param _peer The address of the peer to be associated with the corresponding endpoint.\n @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\n @dev Set this to bytes32(0) to remove the peer address.\n @dev Peer is a bytes32 to accommodate non-evm chains."},"id":1457,"implemented":true,"kind":"function","modifiers":[],"name":"_setPeer","nameLocation":"2295:8:11","nodeType":"FunctionDefinition","parameters":{"id":1443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1440,"mutability":"mutable","name":"_eid","nameLocation":"2311:4:11","nodeType":"VariableDeclaration","scope":1457,"src":"2304:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1439,"name":"uint32","nodeType":"ElementaryTypeName","src":"2304:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1442,"mutability":"mutable","name":"_peer","nameLocation":"2325:5:11","nodeType":"VariableDeclaration","scope":1457,"src":"2317:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1441,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2317:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2303:28:11"},"returnParameters":{"id":1444,"nodeType":"ParameterList","parameters":[],"src":"2349:0:11"},"scope":1501,"src":"2286:134:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1484,"nodeType":"Block","src":"2797:117:11","statements":[{"assignments":[1466],"declarations":[{"constant":false,"id":1466,"mutability":"mutable","name":"peer","nameLocation":"2815:4:11","nodeType":"VariableDeclaration","scope":1484,"src":"2807:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1465,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2807:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1470,"initialValue":{"baseExpression":{"id":1467,"name":"peers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"2822:5:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_bytes32_$","typeString":"mapping(uint32 => bytes32)"}},"id":1469,"indexExpression":{"id":1468,"name":"_eid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1460,"src":"2828:4:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2822:11:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2807:26:11"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1471,"name":"peer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1466,"src":"2847:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2863:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1473,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2855:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1472,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2855:7:11","typeDescriptions":{}}},"id":1475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2847:18:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1481,"nodeType":"IfStatement","src":"2843:43:11","trueBody":{"errorCall":{"arguments":[{"id":1478,"name":"_eid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1460,"src":"2881:4:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":1477,"name":"NoPeer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1854,"src":"2874:6:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint32_$returns$_t_error_$","typeString":"function (uint32) pure returns (error)"}},"id":1479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1480,"nodeType":"RevertStatement","src":"2867:19:11"}},{"expression":{"id":1482,"name":"peer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1466,"src":"2903:4:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1464,"id":1483,"nodeType":"Return","src":"2896:11:11"}]},"documentation":{"id":1458,"nodeType":"StructuredDocumentation","src":"2426:287:11","text":" @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\n ie. the peer is set to bytes32(0).\n @param _eid The endpoint ID.\n @return peer The address of the peer associated with the specified endpoint."},"id":1485,"implemented":true,"kind":"function","modifiers":[],"name":"_getPeerOrRevert","nameLocation":"2727:16:11","nodeType":"FunctionDefinition","parameters":{"id":1461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1460,"mutability":"mutable","name":"_eid","nameLocation":"2751:4:11","nodeType":"VariableDeclaration","scope":1485,"src":"2744:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1459,"name":"uint32","nodeType":"ElementaryTypeName","src":"2744:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2743:13:11"},"returnParameters":{"id":1464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1463,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1485,"src":"2788:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1462,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2788:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2787:9:11"},"scope":1501,"src":"2718:196:11","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1901],"body":{"id":1499,"nodeType":"Block","src":"3309:48:11","statements":[{"expression":{"arguments":[{"id":1496,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1488,"src":"3340:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1493,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"3319:8:11","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"id":1495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3328:11:11","memberName":"setDelegate","nodeType":"MemberAccess","referencedDeclaration":201,"src":"3319:20:11","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":1497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3319:31:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1498,"nodeType":"ExpressionStatement","src":"3319:31:11"}]},"documentation":{"id":1486,"nodeType":"StructuredDocumentation","src":"2920:327:11","text":" @notice Sets the delegate address for the OApp.\n @param _delegate The address of the delegate to be set.\n @dev Only the owner/admin of the OApp can call this function.\n @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract."},"functionSelector":"ca5eb5e1","id":1500,"implemented":true,"kind":"function","modifiers":[{"id":1491,"kind":"modifierInvocation","modifierName":{"id":1490,"name":"onlyOwner","nameLocations":["3299:9:11"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"3299:9:11"},"nodeType":"ModifierInvocation","src":"3299:9:11"}],"name":"setDelegate","nameLocation":"3261:11:11","nodeType":"FunctionDefinition","parameters":{"id":1489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1488,"mutability":"mutable","name":"_delegate","nameLocation":"3281:9:11","nodeType":"VariableDeclaration","scope":1500,"src":"3273:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1487,"name":"address","nodeType":"ElementaryTypeName","src":"3273:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3272:19:11"},"returnParameters":{"id":1492,"nodeType":"ParameterList","parameters":[],"src":"3309:0:11"},"scope":1501,"src":"3252:105:11","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":1502,"src":"330:3029:11","usedErrors":[1850,1854,1856,1858,3846,3851],"usedEvents":[1864,3857]}],"src":"33:3327:11"},"id":11},"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol","exportedSymbols":{"IOAppReceiver":[1985],"OAppCore":[1501],"OAppReceiver":[1653],"Origin":[40]},"id":1654,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1503,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:12"},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol","file":"./interfaces/IOAppReceiver.sol","id":1506,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1654,"sourceUnit":1986,"src":"59:71:12","symbolAliases":[{"foreign":{"id":1504,"name":"IOAppReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1985,"src":"68:13:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1505,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"83:6:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol","file":"./OAppCore.sol","id":1508,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1654,"sourceUnit":1502,"src":"131:42:12","symbolAliases":[{"foreign":{"id":1507,"name":"OAppCore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1501,"src":"140:8:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1510,"name":"IOAppReceiver","nameLocations":["355:13:12"],"nodeType":"IdentifierPath","referencedDeclaration":1985,"src":"355:13:12"},"id":1511,"nodeType":"InheritanceSpecifier","src":"355:13:12"},{"baseName":{"id":1512,"name":"OAppCore","nameLocations":["370:8:12"],"nodeType":"IdentifierPath","referencedDeclaration":1501,"src":"370:8:12"},"id":1513,"nodeType":"InheritanceSpecifier","src":"370:8:12"}],"canonicalName":"OAppReceiver","contractDependencies":[],"contractKind":"contract","documentation":{"id":1509,"nodeType":"StructuredDocumentation","src":"175:145:12","text":" @title OAppReceiver\n @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers."},"fullyImplemented":false,"id":1653,"linearizedBaseContracts":[1653,1501,3980,6685,1902,1985,238],"name":"OAppReceiver","nameLocation":"339:12:12","nodeType":"ContractDefinition","nodes":[{"errorSelector":"91ac5e4f","id":1517,"name":"OnlyEndpoint","nameLocation":"471:12:12","nodeType":"ErrorDefinition","parameters":{"id":1516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1515,"mutability":"mutable","name":"addr","nameLocation":"492:4:12","nodeType":"VariableDeclaration","scope":1517,"src":"484:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1514,"name":"address","nodeType":"ElementaryTypeName","src":"484:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"483:14:12"},"src":"465:33:12"},{"constant":true,"id":1520,"mutability":"constant","name":"RECEIVER_VERSION","nameLocation":"659:16:12","nodeType":"VariableDeclaration","scope":1653,"src":"634:45:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1518,"name":"uint64","nodeType":"ElementaryTypeName","src":"634:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":{"hexValue":"32","id":1519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"678:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"baseFunctions":[1872],"body":{"id":1532,"nodeType":"Block","src":"1291:45:12","statements":[{"expression":{"components":[{"hexValue":"30","id":1528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1309:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1529,"name":"RECEIVER_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1520,"src":"1312:16:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"id":1530,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1308:21:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint64_$","typeString":"tuple(int_const 0,uint64)"}},"functionReturnParameters":1527,"id":1531,"nodeType":"Return","src":"1301:28:12"}]},"documentation":{"id":1521,"nodeType":"StructuredDocumentation","src":"686:502:12","text":" @notice Retrieves the OApp version information.\n @return senderVersion The version of the OAppSender.sol contract.\n @return receiverVersion The version of the OAppReceiver.sol contract.\n @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.\n ie. this is a RECEIVE only OApp.\n @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions."},"functionSelector":"17442b70","id":1533,"implemented":true,"kind":"function","modifiers":[],"name":"oAppVersion","nameLocation":"1202:11:12","nodeType":"FunctionDefinition","parameters":{"id":1522,"nodeType":"ParameterList","parameters":[],"src":"1213:2:12"},"returnParameters":{"id":1527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1524,"mutability":"mutable","name":"senderVersion","nameLocation":"1252:13:12","nodeType":"VariableDeclaration","scope":1533,"src":"1245:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1523,"name":"uint64","nodeType":"ElementaryTypeName","src":"1245:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":1526,"mutability":"mutable","name":"receiverVersion","nameLocation":"1274:15:12","nodeType":"VariableDeclaration","scope":1533,"src":"1267:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1525,"name":"uint64","nodeType":"ElementaryTypeName","src":"1267:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1244:46:12"},"scope":1653,"src":"1193:143:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1984],"body":{"id":1553,"nodeType":"Block","src":"2181:48:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1546,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1541,"src":"2198:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":1549,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2217:4:12","typeDescriptions":{"typeIdentifier":"t_contract$_OAppReceiver_$1653","typeString":"contract OAppReceiver"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OAppReceiver_$1653","typeString":"contract OAppReceiver"}],"id":1548,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2209:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"2209:7:12","typeDescriptions":{}}},"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2209:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2198:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1545,"id":1552,"nodeType":"Return","src":"2191:31:12"}]},"documentation":{"id":1534,"nodeType":"StructuredDocumentation","src":"1342:666:12","text":" @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\n @dev _origin The origin information containing the source endpoint and sender address.\n  - srcEid: The source chain endpoint ID.\n  - sender: The sender address on the src chain.\n  - nonce: The nonce of the message.\n @dev _message The lzReceive payload.\n @param _sender The sender address.\n @return isSender Is a valid sender.\n @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.\n @dev The default sender IS the OAppReceiver implementer."},"functionSelector":"82413eac","id":1554,"implemented":true,"kind":"function","modifiers":[],"name":"isComposeMsgSender","nameLocation":"2022:18:12","nodeType":"FunctionDefinition","parameters":{"id":1542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1537,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"2050:15:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":1536,"nodeType":"UserDefinedTypeName","pathNode":{"id":1535,"name":"Origin","nameLocations":["2050:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"2050:6:12"},"referencedDeclaration":40,"src":"2050:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":1539,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"2087:14:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1538,"name":"bytes","nodeType":"ElementaryTypeName","src":"2087:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1541,"mutability":"mutable","name":"_sender","nameLocation":"2132:7:12","nodeType":"VariableDeclaration","scope":1554,"src":"2124:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1540,"name":"address","nodeType":"ElementaryTypeName","src":"2124:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2040:105:12"},"returnParameters":{"id":1545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1554,"src":"2175:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1543,"name":"bool","nodeType":"ElementaryTypeName","src":"2175:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2174:6:12"},"scope":1653,"src":"2013:216:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[214],"body":{"id":1571,"nodeType":"Block","src":"2859:61:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":1563,"name":"peers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"2876:5:12","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_bytes32_$","typeString":"mapping(uint32 => bytes32)"}},"id":1566,"indexExpression":{"expression":{"id":1564,"name":"origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1558,"src":"2882:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":1565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2889:6:12","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":35,"src":"2882:13:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2876:20:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1567,"name":"origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1558,"src":"2900:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":1568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2907:6:12","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":37,"src":"2900:13:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2876:37:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1562,"id":1570,"nodeType":"Return","src":"2869:44:12"}]},"documentation":{"id":1555,"nodeType":"StructuredDocumentation","src":"2235:531:12","text":" @notice Checks if the path initialization is allowed based on the provided origin.\n @param origin The origin information containing the source endpoint and sender address.\n @return Whether the path has been initialized.\n @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.\n @dev This defaults to assuming if a peer has been set, its initialized.\n Can be overridden by the OApp if there is other logic to determine this."},"functionSelector":"ff7bd03d","id":1572,"implemented":true,"kind":"function","modifiers":[],"name":"allowInitializePath","nameLocation":"2780:19:12","nodeType":"FunctionDefinition","parameters":{"id":1559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1558,"mutability":"mutable","name":"origin","nameLocation":"2816:6:12","nodeType":"VariableDeclaration","scope":1572,"src":"2800:22:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":1557,"nodeType":"UserDefinedTypeName","pathNode":{"id":1556,"name":"Origin","nameLocations":["2800:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"2800:6:12"},"referencedDeclaration":40,"src":"2800:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"}],"src":"2799:24:12"},"returnParameters":{"id":1562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1561,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1572,"src":"2853:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1560,"name":"bool","nodeType":"ElementaryTypeName","src":"2853:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2852:6:12"},"scope":1653,"src":"2771:149:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[223],"body":{"id":1584,"nodeType":"Block","src":"3610:25:12","statements":[{"expression":{"hexValue":"30","id":1582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3627:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1581,"id":1583,"nodeType":"Return","src":"3620:8:12"}]},"documentation":{"id":1573,"nodeType":"StructuredDocumentation","src":"2926:576:12","text":" @notice Retrieves the next nonce for a given source endpoint and sender address.\n @dev _srcEid The source endpoint ID.\n @dev _sender The sender address.\n @return nonce The next nonce.\n @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.\n @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.\n @dev This is also enforced by the OApp.\n @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0."},"functionSelector":"7d25a05e","id":1585,"implemented":true,"kind":"function","modifiers":[],"name":"nextNonce","nameLocation":"3516:9:12","nodeType":"FunctionDefinition","parameters":{"id":1578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1575,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1585,"src":"3526:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1574,"name":"uint32","nodeType":"ElementaryTypeName","src":"3526:6:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1577,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1585,"src":"3546:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1576,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3546:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3525:41:12"},"returnParameters":{"id":1581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1580,"mutability":"mutable","name":"nonce","nameLocation":"3603:5:12","nodeType":"VariableDeclaration","scope":1585,"src":"3596:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1579,"name":"uint64","nodeType":"ElementaryTypeName","src":"3596:6:12","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3595:14:12"},"scope":1653,"src":"3507:128:12","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[237],"body":{"id":1636,"nodeType":"Block","src":"4567:509:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1602,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"4681:8:12","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}],"id":1601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4673:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1600,"name":"address","nodeType":"ElementaryTypeName","src":"4673:7:12","typeDescriptions":{}}},"id":1603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4673:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":1604,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4694:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4698:6:12","memberName":"sender","nodeType":"MemberAccess","src":"4694:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4673:31:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1612,"nodeType":"IfStatement","src":"4669:68:12","trueBody":{"errorCall":{"arguments":[{"expression":{"id":1608,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4726:3:12","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4730:6:12","memberName":"sender","nodeType":"MemberAccess","src":"4726:10:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1607,"name":"OnlyEndpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1517,"src":"4713:12:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4713:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1611,"nodeType":"RevertStatement","src":"4706:31:12"}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":1614,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"4854:7:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":1615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4862:6:12","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":35,"src":"4854:14:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":1613,"name":"_getPeerOrRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1485,"src":"4837:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint32_$returns$_t_bytes32_$","typeString":"function (uint32) view returns (bytes32)"}},"id":1616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4837:32:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":1617,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"4873:7:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":1618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4881:6:12","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":37,"src":"4873:14:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4837:50:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1627,"nodeType":"IfStatement","src":"4833:103:12","trueBody":{"errorCall":{"arguments":[{"expression":{"id":1621,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"4905:7:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":1622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4913:6:12","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":35,"src":"4905:14:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":1623,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"4921:7:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":1624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4929:6:12","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":37,"src":"4921:14:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1620,"name":"OnlyPeer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1850,"src":"4896:8:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint32_$_t_bytes32_$returns$_t_error_$","typeString":"function (uint32,bytes32) pure returns (error)"}},"id":1625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4896:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1626,"nodeType":"RevertStatement","src":"4889:47:12"}},{"expression":{"arguments":[{"id":1629,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1589,"src":"5021:7:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},{"id":1630,"name":"_guid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1591,"src":"5030:5:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1631,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1593,"src":"5037:8:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1632,"name":"_executor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1595,"src":"5047:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1633,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1597,"src":"5058:10:12","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":1628,"name":"_lzReceive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"5010:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Origin_$40_calldata_ptr_$_t_bytes32_$_t_bytes_calldata_ptr_$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (struct Origin calldata,bytes32,bytes calldata,address,bytes calldata)"}},"id":1634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5010:59:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1635,"nodeType":"ExpressionStatement","src":"5010:59:12"}]},"documentation":{"id":1586,"nodeType":"StructuredDocumentation","src":"3641:722:12","text":" @dev Entry point for receiving messages or packets from the endpoint.\n @param _origin The origin information containing the source endpoint and sender address.\n  - srcEid: The source chain endpoint ID.\n  - sender: The sender address on the src chain.\n  - nonce: The nonce of the message.\n @param _guid The unique identifier for the received LayerZero message.\n @param _message The payload of the received message.\n @param _executor The address of the executor for the received message.\n @param _extraData Additional arbitrary data provided by the corresponding executor.\n @dev Entry point for receiving msg/packet from the LayerZero endpoint."},"functionSelector":"13137d65","id":1637,"implemented":true,"kind":"function","modifiers":[],"name":"lzReceive","nameLocation":"4377:9:12","nodeType":"FunctionDefinition","parameters":{"id":1598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1589,"mutability":"mutable","name":"_origin","nameLocation":"4412:7:12","nodeType":"VariableDeclaration","scope":1637,"src":"4396:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":1588,"nodeType":"UserDefinedTypeName","pathNode":{"id":1587,"name":"Origin","nameLocations":["4396:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"4396:6:12"},"referencedDeclaration":40,"src":"4396:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":1591,"mutability":"mutable","name":"_guid","nameLocation":"4437:5:12","nodeType":"VariableDeclaration","scope":1637,"src":"4429:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1590,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4429:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1593,"mutability":"mutable","name":"_message","nameLocation":"4467:8:12","nodeType":"VariableDeclaration","scope":1637,"src":"4452:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1592,"name":"bytes","nodeType":"ElementaryTypeName","src":"4452:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1595,"mutability":"mutable","name":"_executor","nameLocation":"4493:9:12","nodeType":"VariableDeclaration","scope":1637,"src":"4485:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1594,"name":"address","nodeType":"ElementaryTypeName","src":"4485:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1597,"mutability":"mutable","name":"_extraData","nameLocation":"4527:10:12","nodeType":"VariableDeclaration","scope":1637,"src":"4512:25:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1596,"name":"bytes","nodeType":"ElementaryTypeName","src":"4512:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4386:157:12"},"returnParameters":{"id":1599,"nodeType":"ParameterList","parameters":[],"src":"4567:0:12"},"scope":1653,"src":"4368:708:12","stateMutability":"payable","virtual":true,"visibility":"public"},{"documentation":{"id":1638,"nodeType":"StructuredDocumentation","src":"5082:126:12","text":" @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation."},"id":1652,"implemented":false,"kind":"function","modifiers":[],"name":"_lzReceive","nameLocation":"5222:10:12","nodeType":"FunctionDefinition","parameters":{"id":1650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1641,"mutability":"mutable","name":"_origin","nameLocation":"5258:7:12","nodeType":"VariableDeclaration","scope":1652,"src":"5242:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":1640,"nodeType":"UserDefinedTypeName","pathNode":{"id":1639,"name":"Origin","nameLocations":["5242:6:12"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"5242:6:12"},"referencedDeclaration":40,"src":"5242:6:12","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":1643,"mutability":"mutable","name":"_guid","nameLocation":"5283:5:12","nodeType":"VariableDeclaration","scope":1652,"src":"5275:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1642,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5275:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1645,"mutability":"mutable","name":"_message","nameLocation":"5313:8:12","nodeType":"VariableDeclaration","scope":1652,"src":"5298:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1644,"name":"bytes","nodeType":"ElementaryTypeName","src":"5298:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1647,"mutability":"mutable","name":"_executor","nameLocation":"5339:9:12","nodeType":"VariableDeclaration","scope":1652,"src":"5331:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1646,"name":"address","nodeType":"ElementaryTypeName","src":"5331:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1649,"mutability":"mutable","name":"_extraData","nameLocation":"5373:10:12","nodeType":"VariableDeclaration","scope":1652,"src":"5358:25:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1648,"name":"bytes","nodeType":"ElementaryTypeName","src":"5358:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5232:157:12"},"returnParameters":{"id":1651,"nodeType":"ParameterList","parameters":[],"src":"5406:0:12"},"scope":1653,"src":"5213:194:12","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1654,"src":"321:5088:12","usedErrors":[1517,1850,1854,1856,1858,3846,3851],"usedEvents":[1864,3857]}],"src":"33:5377:12"},"id":12},"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol","exportedSymbols":{"IERC20":[4842],"MessagingFee":[33],"MessagingParams":[20],"MessagingReceipt":[28],"OAppCore":[1501],"OAppSender":[1839],"SafeERC20":[5332]},"id":1840,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1655,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:13"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":1658,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1840,"sourceUnit":5333,"src":"59:92:13","symbolAliases":[{"foreign":{"id":1656,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5332,"src":"68:9:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1657,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4842,"src":"79:6:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","file":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","id":1662,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1840,"sourceUnit":203,"src":"152:146:13","symbolAliases":[{"foreign":{"id":1659,"name":"MessagingParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"161:15:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1660,"name":"MessagingFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"178:12:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1661,"name":"MessagingReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"192:16:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol","file":"./OAppCore.sol","id":1664,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1840,"sourceUnit":1502,"src":"299:42:13","symbolAliases":[{"foreign":{"id":1663,"name":"OAppCore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1501,"src":"308:8:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1666,"name":"OAppCore","nameLocations":["518:8:13"],"nodeType":"IdentifierPath","referencedDeclaration":1501,"src":"518:8:13"},"id":1667,"nodeType":"InheritanceSpecifier","src":"518:8:13"}],"canonicalName":"OAppSender","contractDependencies":[],"contractKind":"contract","documentation":{"id":1665,"nodeType":"StructuredDocumentation","src":"343:142:13","text":" @title OAppSender\n @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint."},"fullyImplemented":true,"id":1839,"linearizedBaseContracts":[1839,1501,3980,6685,1902],"name":"OAppSender","nameLocation":"504:10:13","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1671,"libraryName":{"id":1668,"name":"SafeERC20","nameLocations":["539:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":5332,"src":"539:9:13"},"nodeType":"UsingForDirective","src":"533:27:13","typeName":{"id":1670,"nodeType":"UserDefinedTypeName","pathNode":{"id":1669,"name":"IERC20","nameLocations":["553:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":4842,"src":"553:6:13"},"referencedDeclaration":4842,"src":"553:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}}},{"errorSelector":"9f704120","id":1675,"name":"NotEnoughNative","nameLocation":"601:15:13","nodeType":"ErrorDefinition","parameters":{"id":1674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1673,"mutability":"mutable","name":"msgValue","nameLocation":"625:8:13","nodeType":"VariableDeclaration","scope":1675,"src":"617:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1672,"name":"uint256","nodeType":"ElementaryTypeName","src":"617:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"616:18:13"},"src":"595:40:13"},{"errorSelector":"5373352a","id":1677,"name":"LzTokenUnavailable","nameLocation":"646:18:13","nodeType":"ErrorDefinition","parameters":{"id":1676,"nodeType":"ParameterList","parameters":[],"src":"664:2:13"},"src":"640:27:13"},{"constant":true,"id":1680,"mutability":"constant","name":"SENDER_VERSION","nameLocation":"826:14:13","nodeType":"VariableDeclaration","scope":1839,"src":"801:43:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1678,"name":"uint64","nodeType":"ElementaryTypeName","src":"801:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"value":{"hexValue":"31","id":1679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"843:1:13","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"baseFunctions":[1872],"body":{"id":1692,"nodeType":"Block","src":"1456:43:13","statements":[{"expression":{"components":[{"id":1688,"name":"SENDER_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1680,"src":"1474:14:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"hexValue":"30","id":1689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1490:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1690,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1473:19:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint64_$_t_rational_0_by_1_$","typeString":"tuple(uint64,int_const 0)"}},"functionReturnParameters":1687,"id":1691,"nodeType":"Return","src":"1466:26:13"}]},"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"851:502:13","text":" @notice Retrieves the OApp version information.\n @return senderVersion The version of the OAppSender.sol contract.\n @return receiverVersion The version of the OAppReceiver.sol contract.\n @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\n ie. this is a SEND only OApp.\n @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions"},"functionSelector":"17442b70","id":1693,"implemented":true,"kind":"function","modifiers":[],"name":"oAppVersion","nameLocation":"1367:11:13","nodeType":"FunctionDefinition","parameters":{"id":1682,"nodeType":"ParameterList","parameters":[],"src":"1378:2:13"},"returnParameters":{"id":1687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1684,"mutability":"mutable","name":"senderVersion","nameLocation":"1417:13:13","nodeType":"VariableDeclaration","scope":1693,"src":"1410:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1683,"name":"uint64","nodeType":"ElementaryTypeName","src":"1410:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":1686,"mutability":"mutable","name":"receiverVersion","nameLocation":"1439:15:13","nodeType":"VariableDeclaration","scope":1693,"src":"1432:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1685,"name":"uint64","nodeType":"ElementaryTypeName","src":"1432:6:13","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1409:46:13"},"scope":1839,"src":"1358:141:13","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1725,"nodeType":"Block","src":"2230:199:13","statements":[{"expression":{"arguments":[{"arguments":[{"id":1711,"name":"_dstEid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1696,"src":"2307:7:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"id":1713,"name":"_dstEid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1696,"src":"2333:7:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":1712,"name":"_getPeerOrRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1485,"src":"2316:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint32_$returns$_t_bytes32_$","typeString":"function (uint32) view returns (bytes32)"}},"id":1714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2316:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1715,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1698,"src":"2343:8:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1716,"name":"_options","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1700,"src":"2353:8:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1717,"name":"_payInLzToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1702,"src":"2363:13:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1710,"name":"MessagingParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"2291:15:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MessagingParams_$20_storage_ptr_$","typeString":"type(struct MessagingParams storage pointer)"}},"id":1718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2291:86:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_memory_ptr","typeString":"struct MessagingParams memory"}},{"arguments":[{"id":1721,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2403:4:13","typeDescriptions":{"typeIdentifier":"t_contract$_OAppSender_$1839","typeString":"contract OAppSender"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OAppSender_$1839","typeString":"contract OAppSender"}],"id":1720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2395:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1719,"name":"address","nodeType":"ElementaryTypeName","src":"2395:7:13","typeDescriptions":{}}},"id":1722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2395:13:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MessagingParams_$20_memory_ptr","typeString":"struct MessagingParams memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1708,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"2259:8:13","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"id":1709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2268:5:13","memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":114,"src":"2259:14:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_struct$_MessagingParams_$20_memory_ptr_$_t_address_$returns$_t_struct$_MessagingFee_$33_memory_ptr_$","typeString":"function (struct MessagingParams memory,address) view external returns (struct MessagingFee memory)"}},"id":1723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2259:163:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee memory"}},"functionReturnParameters":1707,"id":1724,"nodeType":"Return","src":"2240:182:13"}]},"documentation":{"id":1694,"nodeType":"StructuredDocumentation","src":"1505:528:13","text":" @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\n @param _dstEid The destination endpoint ID.\n @param _message The message payload.\n @param _options Additional options for the message.\n @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\n @return fee The calculated MessagingFee for the message.\n      - nativeFee: The native fee for the message.\n      - lzTokenFee: The LZ token fee for the message."},"id":1726,"implemented":true,"kind":"function","modifiers":[],"name":"_quote","nameLocation":"2047:6:13","nodeType":"FunctionDefinition","parameters":{"id":1703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1696,"mutability":"mutable","name":"_dstEid","nameLocation":"2070:7:13","nodeType":"VariableDeclaration","scope":1726,"src":"2063:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1695,"name":"uint32","nodeType":"ElementaryTypeName","src":"2063:6:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1698,"mutability":"mutable","name":"_message","nameLocation":"2100:8:13","nodeType":"VariableDeclaration","scope":1726,"src":"2087:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1697,"name":"bytes","nodeType":"ElementaryTypeName","src":"2087:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1700,"mutability":"mutable","name":"_options","nameLocation":"2131:8:13","nodeType":"VariableDeclaration","scope":1726,"src":"2118:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1699,"name":"bytes","nodeType":"ElementaryTypeName","src":"2118:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1702,"mutability":"mutable","name":"_payInLzToken","nameLocation":"2154:13:13","nodeType":"VariableDeclaration","scope":1726,"src":"2149:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1701,"name":"bool","nodeType":"ElementaryTypeName","src":"2149:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2053:120:13"},"returnParameters":{"id":1707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1706,"mutability":"mutable","name":"fee","nameLocation":"2225:3:13","nodeType":"VariableDeclaration","scope":1726,"src":"2205:23:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":1705,"nodeType":"UserDefinedTypeName","pathNode":{"id":1704,"name":"MessagingFee","nameLocations":["2205:12:13"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"2205:12:13"},"referencedDeclaration":33,"src":"2205:12:13","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"}],"src":"2204:25:13"},"scope":1839,"src":"2038:391:13","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1780,"nodeType":"Block","src":"3422:532:13","statements":[{"assignments":[1745],"declarations":[{"constant":false,"id":1745,"mutability":"mutable","name":"messageValue","nameLocation":"3562:12:13","nodeType":"VariableDeclaration","scope":1780,"src":"3554:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1744,"name":"uint256","nodeType":"ElementaryTypeName","src":"3554:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1750,"initialValue":{"arguments":[{"expression":{"id":1747,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1736,"src":"3588:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee memory"}},"id":1748,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3593:9:13","memberName":"nativeFee","nodeType":"MemberAccess","referencedDeclaration":30,"src":"3588:14:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1746,"name":"_payNative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1802,"src":"3577:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":1749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3577:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3554:49:13"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1751,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1736,"src":"3617:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee memory"}},"id":1752,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3622:10:13","memberName":"lzTokenFee","nodeType":"MemberAccess","referencedDeclaration":32,"src":"3617:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3635:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3617:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1760,"nodeType":"IfStatement","src":"3613:53:13","trueBody":{"expression":{"arguments":[{"expression":{"id":1756,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1736,"src":"3650:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee memory"}},"id":1757,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3655:10:13","memberName":"lzTokenFee","nodeType":"MemberAccess","referencedDeclaration":32,"src":"3650:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1755,"name":"_payLzToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"3638:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":1758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3638:28:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1759,"nodeType":"ExpressionStatement","src":"3638:28:13"}},{"expression":{"arguments":[{"arguments":[{"id":1766,"name":"_dstEid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1729,"src":"3825:7:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"id":1768,"name":"_dstEid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1729,"src":"3851:7:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":1767,"name":"_getPeerOrRevert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1485,"src":"3834:16:13","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint32_$returns$_t_bytes32_$","typeString":"function (uint32) view returns (bytes32)"}},"id":1769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3834:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1770,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1731,"src":"3861:8:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1771,"name":"_options","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1733,"src":"3871:8:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1772,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1736,"src":"3881:4:13","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee memory"}},"id":1773,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3886:10:13","memberName":"lzTokenFee","nodeType":"MemberAccess","referencedDeclaration":32,"src":"3881:15:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3899:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3881:19:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1765,"name":"MessagingParams","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":20,"src":"3809:15:13","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_MessagingParams_$20_storage_ptr_$","typeString":"type(struct MessagingParams storage pointer)"}},"id":1776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3809:92:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_memory_ptr","typeString":"struct MessagingParams memory"}},{"id":1777,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1738,"src":"3919:14:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MessagingParams_$20_memory_ptr","typeString":"struct MessagingParams memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_MessagingParams_$20_memory_ptr","typeString":"struct MessagingParams memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1761,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"3755:8:13","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3764:4:13","memberName":"send","nodeType":"MemberAccess","referencedDeclaration":125,"src":"3755:13:13","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_MessagingParams_$20_memory_ptr_$_t_address_$returns$_t_struct$_MessagingReceipt_$28_memory_ptr_$","typeString":"function (struct MessagingParams memory,address) payable external returns (struct MessagingReceipt memory)"}},"id":1764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1763,"name":"messageValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"3777:12:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3755:36:13","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_MessagingParams_$20_memory_ptr_$_t_address_$returns$_t_struct$_MessagingReceipt_$28_memory_ptr_$value","typeString":"function (struct MessagingParams memory,address) payable external returns (struct MessagingReceipt memory)"}},"id":1778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3755:192:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt memory"}},"functionReturnParameters":1743,"id":1779,"nodeType":"Return","src":"3677:270:13"}]},"documentation":{"id":1727,"nodeType":"StructuredDocumentation","src":"2435:748:13","text":" @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\n @param _dstEid The destination endpoint ID.\n @param _message The message payload.\n @param _options Additional options for the message.\n @param _fee The calculated LayerZero fee for the message.\n      - nativeFee: The native fee.\n      - lzTokenFee: The lzToken fee.\n @param _refundAddress The address to receive any excess fee values sent to the endpoint.\n @return receipt The receipt for the sent message.\n      - guid: The unique identifier for the sent message.\n      - nonce: The nonce of the sent message.\n      - fee: The LayerZero fee incurred for the message."},"id":1781,"implemented":true,"kind":"function","modifiers":[],"name":"_lzSend","nameLocation":"3197:7:13","nodeType":"FunctionDefinition","parameters":{"id":1739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1729,"mutability":"mutable","name":"_dstEid","nameLocation":"3221:7:13","nodeType":"VariableDeclaration","scope":1781,"src":"3214:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1728,"name":"uint32","nodeType":"ElementaryTypeName","src":"3214:6:13","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1731,"mutability":"mutable","name":"_message","nameLocation":"3251:8:13","nodeType":"VariableDeclaration","scope":1781,"src":"3238:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1730,"name":"bytes","nodeType":"ElementaryTypeName","src":"3238:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1733,"mutability":"mutable","name":"_options","nameLocation":"3282:8:13","nodeType":"VariableDeclaration","scope":1781,"src":"3269:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1732,"name":"bytes","nodeType":"ElementaryTypeName","src":"3269:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1736,"mutability":"mutable","name":"_fee","nameLocation":"3320:4:13","nodeType":"VariableDeclaration","scope":1781,"src":"3300:24:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":1735,"nodeType":"UserDefinedTypeName","pathNode":{"id":1734,"name":"MessagingFee","nameLocations":["3300:12:13"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"3300:12:13"},"referencedDeclaration":33,"src":"3300:12:13","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"},{"constant":false,"id":1738,"mutability":"mutable","name":"_refundAddress","nameLocation":"3342:14:13","nodeType":"VariableDeclaration","scope":1781,"src":"3334:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1737,"name":"address","nodeType":"ElementaryTypeName","src":"3334:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3204:158:13"},"returnParameters":{"id":1743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1742,"mutability":"mutable","name":"receipt","nameLocation":"3413:7:13","nodeType":"VariableDeclaration","scope":1781,"src":"3389:31:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt"},"typeName":{"id":1741,"nodeType":"UserDefinedTypeName","pathNode":{"id":1740,"name":"MessagingReceipt","nameLocations":["3389:16:13"],"nodeType":"IdentifierPath","referencedDeclaration":28,"src":"3389:16:13"},"referencedDeclaration":28,"src":"3389:16:13","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_storage_ptr","typeString":"struct MessagingReceipt"}},"visibility":"internal"}],"src":"3388:33:13"},"scope":1839,"src":"3188:766:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1801,"nodeType":"Block","src":"4735:106:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1789,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4749:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4753:5:13","memberName":"value","nodeType":"MemberAccess","src":"4749:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1791,"name":"_nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"4762:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4749:23:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1798,"nodeType":"IfStatement","src":"4745:62:13","trueBody":{"errorCall":{"arguments":[{"expression":{"id":1794,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4797:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4801:5:13","memberName":"value","nodeType":"MemberAccess","src":"4797:9:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1793,"name":"NotEnoughNative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"4781:15:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":1796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4781:26:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1797,"nodeType":"RevertStatement","src":"4774:33:13"}},{"expression":{"id":1799,"name":"_nativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1784,"src":"4824:10:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1788,"id":1800,"nodeType":"Return","src":"4817:17:13"}]},"documentation":{"id":1782,"nodeType":"StructuredDocumentation","src":"3960:685:13","text":" @dev Internal function to pay the native fee associated with the message.\n @param _nativeFee The native fee to be paid.\n @return nativeFee The amount of native currency paid.\n @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\n this will need to be overridden because msg.value would contain multiple lzFees.\n @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\n @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\n @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time."},"id":1802,"implemented":true,"kind":"function","modifiers":[],"name":"_payNative","nameLocation":"4659:10:13","nodeType":"FunctionDefinition","parameters":{"id":1785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1784,"mutability":"mutable","name":"_nativeFee","nameLocation":"4678:10:13","nodeType":"VariableDeclaration","scope":1802,"src":"4670:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1783,"name":"uint256","nodeType":"ElementaryTypeName","src":"4670:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4669:20:13"},"returnParameters":{"id":1788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1787,"mutability":"mutable","name":"nativeFee","nameLocation":"4724:9:13","nodeType":"VariableDeclaration","scope":1802,"src":"4716:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1786,"name":"uint256","nodeType":"ElementaryTypeName","src":"4716:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4715:19:13"},"scope":1839,"src":"4650:191:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1837,"nodeType":"Block","src":"5277:351:13","statements":[{"assignments":[1809],"declarations":[{"constant":false,"id":1809,"mutability":"mutable","name":"lzToken","nameLocation":"5379:7:13","nodeType":"VariableDeclaration","scope":1837,"src":"5371:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1808,"name":"address","nodeType":"ElementaryTypeName","src":"5371:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1813,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1810,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"5389:8:13","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5398:7:13","memberName":"lzToken","nodeType":"MemberAccess","referencedDeclaration":191,"src":"5389:16:13","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5389:18:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5371:36:13"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1814,"name":"lzToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"5421:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5440:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5432:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1815,"name":"address","nodeType":"ElementaryTypeName","src":"5432:7:13","typeDescriptions":{}}},"id":1818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5432:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5421:21:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1823,"nodeType":"IfStatement","src":"5417:54:13","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1820,"name":"LzTokenUnavailable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"5451:18:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5451:20:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1822,"nodeType":"RevertStatement","src":"5444:27:13"}},{"expression":{"arguments":[{"expression":{"id":1828,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5578:3:13","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5582:6:13","memberName":"sender","nodeType":"MemberAccess","src":"5578:10:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1832,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"5598:8:13","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}],"id":1831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5590:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1830,"name":"address","nodeType":"ElementaryTypeName","src":"5590:7:13","typeDescriptions":{}}},"id":1833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5590:17:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1834,"name":"_lzTokenFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1805,"src":"5609:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1825,"name":"lzToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"5552:7:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1824,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4842,"src":"5545:6:13","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$4842_$","typeString":"type(contract IERC20)"}},"id":1826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5545:15:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"id":1827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5561:16:13","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":4940,"src":"5545:32:13","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4842_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$4842_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":1835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5545:76:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1836,"nodeType":"ExpressionStatement","src":"5545:76:13"}]},"documentation":{"id":1803,"nodeType":"StructuredDocumentation","src":"4847:366:13","text":" @dev Internal function to pay the LZ token fee associated with the message.\n @param _lzTokenFee The LZ token fee to be paid.\n @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\n @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend()."},"id":1838,"implemented":true,"kind":"function","modifiers":[],"name":"_payLzToken","nameLocation":"5227:11:13","nodeType":"FunctionDefinition","parameters":{"id":1806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1805,"mutability":"mutable","name":"_lzTokenFee","nameLocation":"5247:11:13","nodeType":"VariableDeclaration","scope":1838,"src":"5239:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1804,"name":"uint256","nodeType":"ElementaryTypeName","src":"5239:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5238:21:13"},"returnParameters":{"id":1807,"nodeType":"ParameterList","parameters":[],"src":"5277:0:13"},"scope":1839,"src":"5218:410:13","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1840,"src":"486:5144:13","usedErrors":[1675,1677,1850,1854,1856,1858,3846,3851],"usedEvents":[1864,3857]}],"src":"33:5598:13"},"id":13},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol","exportedSymbols":{"ILayerZeroEndpointV2":[202],"IOAppCore":[1902]},"id":1903,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1841,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:14"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","file":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","id":1843,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1903,"sourceUnit":203,"src":"59:119:14","symbolAliases":[{"foreign":{"id":1842,"name":"ILayerZeroEndpointV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"68:20:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IOAppCore","contractDependencies":[],"contractKind":"interface","documentation":{"id":1844,"nodeType":"StructuredDocumentation","src":"180:27:14","text":" @title IOAppCore"},"fullyImplemented":false,"id":1902,"linearizedBaseContracts":[1902],"name":"IOAppCore","nameLocation":"218:9:14","nodeType":"ContractDefinition","nodes":[{"errorSelector":"c26bebcc","id":1850,"name":"OnlyPeer","nameLocation":"269:8:14","nodeType":"ErrorDefinition","parameters":{"id":1849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1846,"mutability":"mutable","name":"eid","nameLocation":"285:3:14","nodeType":"VariableDeclaration","scope":1850,"src":"278:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1845,"name":"uint32","nodeType":"ElementaryTypeName","src":"278:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1848,"mutability":"mutable","name":"sender","nameLocation":"298:6:14","nodeType":"VariableDeclaration","scope":1850,"src":"290:14:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1847,"name":"bytes32","nodeType":"ElementaryTypeName","src":"290:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"277:28:14"},"src":"263:43:14"},{"errorSelector":"f6ff4fb7","id":1854,"name":"NoPeer","nameLocation":"317:6:14","nodeType":"ErrorDefinition","parameters":{"id":1853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1852,"mutability":"mutable","name":"eid","nameLocation":"331:3:14","nodeType":"VariableDeclaration","scope":1854,"src":"324:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1851,"name":"uint32","nodeType":"ElementaryTypeName","src":"324:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"323:12:14"},"src":"311:25:14"},{"errorSelector":"0fbdec0a","id":1856,"name":"InvalidEndpointCall","nameLocation":"347:19:14","nodeType":"ErrorDefinition","parameters":{"id":1855,"nodeType":"ParameterList","parameters":[],"src":"366:2:14"},"src":"341:28:14"},{"errorSelector":"b5863604","id":1858,"name":"InvalidDelegate","nameLocation":"380:15:14","nodeType":"ErrorDefinition","parameters":{"id":1857,"nodeType":"ParameterList","parameters":[],"src":"395:2:14"},"src":"374:24:14"},{"anonymous":false,"eventSelector":"238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b","id":1864,"name":"PeerSet","nameLocation":"486:7:14","nodeType":"EventDefinition","parameters":{"id":1863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1860,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"501:3:14","nodeType":"VariableDeclaration","scope":1864,"src":"494:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1859,"name":"uint32","nodeType":"ElementaryTypeName","src":"494:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1862,"indexed":false,"mutability":"mutable","name":"peer","nameLocation":"514:4:14","nodeType":"VariableDeclaration","scope":1864,"src":"506:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1861,"name":"bytes32","nodeType":"ElementaryTypeName","src":"506:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"493:26:14"},"src":"480:40:14"},{"documentation":{"id":1865,"nodeType":"StructuredDocumentation","src":"526:216:14","text":" @notice Retrieves the OApp version information.\n @return senderVersion The version of the OAppSender.sol contract.\n @return receiverVersion The version of the OAppReceiver.sol contract."},"functionSelector":"17442b70","id":1872,"implemented":false,"kind":"function","modifiers":[],"name":"oAppVersion","nameLocation":"756:11:14","nodeType":"FunctionDefinition","parameters":{"id":1866,"nodeType":"ParameterList","parameters":[],"src":"767:2:14"},"returnParameters":{"id":1871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1868,"mutability":"mutable","name":"senderVersion","nameLocation":"800:13:14","nodeType":"VariableDeclaration","scope":1872,"src":"793:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1867,"name":"uint64","nodeType":"ElementaryTypeName","src":"793:6:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":1870,"mutability":"mutable","name":"receiverVersion","nameLocation":"822:15:14","nodeType":"VariableDeclaration","scope":1872,"src":"815:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1869,"name":"uint64","nodeType":"ElementaryTypeName","src":"815:6:14","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"792:46:14"},"scope":1902,"src":"747:92:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1873,"nodeType":"StructuredDocumentation","src":"845:150:14","text":" @notice Retrieves the LayerZero endpoint associated with the OApp.\n @return iEndpoint The LayerZero endpoint as an interface."},"functionSelector":"5e280f11","id":1879,"implemented":false,"kind":"function","modifiers":[],"name":"endpoint","nameLocation":"1009:8:14","nodeType":"FunctionDefinition","parameters":{"id":1874,"nodeType":"ParameterList","parameters":[],"src":"1017:2:14"},"returnParameters":{"id":1878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1877,"mutability":"mutable","name":"iEndpoint","nameLocation":"1064:9:14","nodeType":"VariableDeclaration","scope":1879,"src":"1043:30:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"},"typeName":{"id":1876,"nodeType":"UserDefinedTypeName","pathNode":{"id":1875,"name":"ILayerZeroEndpointV2","nameLocations":["1043:20:14"],"nodeType":"IdentifierPath","referencedDeclaration":202,"src":"1043:20:14"},"referencedDeclaration":202,"src":"1043:20:14","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"visibility":"internal"}],"src":"1042:32:14"},"scope":1902,"src":"1000:75:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1880,"nodeType":"StructuredDocumentation","src":"1081:227:14","text":" @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\n @param _eid The endpoint ID.\n @return peer The peer address (OApp instance) associated with the corresponding endpoint."},"functionSelector":"bb0b6a53","id":1887,"implemented":false,"kind":"function","modifiers":[],"name":"peers","nameLocation":"1322:5:14","nodeType":"FunctionDefinition","parameters":{"id":1883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1882,"mutability":"mutable","name":"_eid","nameLocation":"1335:4:14","nodeType":"VariableDeclaration","scope":1887,"src":"1328:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1881,"name":"uint32","nodeType":"ElementaryTypeName","src":"1328:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1327:13:14"},"returnParameters":{"id":1886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1885,"mutability":"mutable","name":"peer","nameLocation":"1372:4:14","nodeType":"VariableDeclaration","scope":1887,"src":"1364:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1884,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1364:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1363:14:14"},"scope":1902,"src":"1313:65:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1888,"nodeType":"StructuredDocumentation","src":"1384:224:14","text":" @notice Sets the peer address (OApp instance) for a corresponding endpoint.\n @param _eid The endpoint ID.\n @param _peer The address of the peer to be associated with the corresponding endpoint."},"functionSelector":"3400288b","id":1895,"implemented":false,"kind":"function","modifiers":[],"name":"setPeer","nameLocation":"1622:7:14","nodeType":"FunctionDefinition","parameters":{"id":1893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"_eid","nameLocation":"1637:4:14","nodeType":"VariableDeclaration","scope":1895,"src":"1630:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1889,"name":"uint32","nodeType":"ElementaryTypeName","src":"1630:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1892,"mutability":"mutable","name":"_peer","nameLocation":"1651:5:14","nodeType":"VariableDeclaration","scope":1895,"src":"1643:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1891,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1643:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1629:28:14"},"returnParameters":{"id":1894,"nodeType":"ParameterList","parameters":[],"src":"1666:0:14"},"scope":1902,"src":"1613:54:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"1673:134:14","text":" @notice Sets the delegate address for the OApp Core.\n @param _delegate The address of the delegate to be set."},"functionSelector":"ca5eb5e1","id":1901,"implemented":false,"kind":"function","modifiers":[],"name":"setDelegate","nameLocation":"1821:11:14","nodeType":"FunctionDefinition","parameters":{"id":1899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1898,"mutability":"mutable","name":"_delegate","nameLocation":"1841:9:14","nodeType":"VariableDeclaration","scope":1901,"src":"1833:17:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1897,"name":"address","nodeType":"ElementaryTypeName","src":"1833:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1832:19:14"},"returnParameters":{"id":1900,"nodeType":"ParameterList","parameters":[],"src":"1860:0:14"},"scope":1902,"src":"1812:49:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1903,"src":"208:1655:14","usedErrors":[1850,1854,1856,1858],"usedEvents":[1864]}],"src":"33:1831:14"},"id":14},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol","exportedSymbols":{"IOAppMsgInspector":[1922]},"id":1923,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1904,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:15"},{"abstract":false,"baseContracts":[],"canonicalName":"IOAppMsgInspector","contractDependencies":[],"contractKind":"interface","documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"59:139:15","text":" @title IOAppMsgInspector\n @dev Interface for the OApp Message Inspector, allowing examination of message and options contents."},"fullyImplemented":false,"id":1922,"linearizedBaseContracts":[1922],"name":"IOAppMsgInspector","nameLocation":"209:17:15","nodeType":"ContractDefinition","nodes":[{"errorSelector":"7b43b439","id":1911,"name":"InspectionFailed","nameLocation":"290:16:15","nodeType":"ErrorDefinition","parameters":{"id":1910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"message","nameLocation":"313:7:15","nodeType":"VariableDeclaration","scope":1911,"src":"307:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1906,"name":"bytes","nodeType":"ElementaryTypeName","src":"307:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1909,"mutability":"mutable","name":"options","nameLocation":"328:7:15","nodeType":"VariableDeclaration","scope":1911,"src":"322:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1908,"name":"bytes","nodeType":"ElementaryTypeName","src":"322:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"306:30:15"},"src":"284:53:15"},{"documentation":{"id":1912,"nodeType":"StructuredDocumentation","src":"343:456:15","text":" @notice Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid.\n @param _message The message payload to be inspected.\n @param _options Additional options or parameters for inspection.\n @return valid A boolean indicating whether the inspection passed (true) or failed (false).\n @dev Optionally done as a revert, OR use the boolean provided to handle the failure."},"functionSelector":"043a78eb","id":1921,"implemented":false,"kind":"function","modifiers":[],"name":"inspect","nameLocation":"813:7:15","nodeType":"FunctionDefinition","parameters":{"id":1917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1914,"mutability":"mutable","name":"_message","nameLocation":"836:8:15","nodeType":"VariableDeclaration","scope":1921,"src":"821:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1913,"name":"bytes","nodeType":"ElementaryTypeName","src":"821:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1916,"mutability":"mutable","name":"_options","nameLocation":"861:8:15","nodeType":"VariableDeclaration","scope":1921,"src":"846:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1915,"name":"bytes","nodeType":"ElementaryTypeName","src":"846:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"820:50:15"},"returnParameters":{"id":1920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1919,"mutability":"mutable","name":"valid","nameLocation":"899:5:15","nodeType":"VariableDeclaration","scope":1921,"src":"894:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1918,"name":"bool","nodeType":"ElementaryTypeName","src":"894:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"893:12:15"},"scope":1922,"src":"804:102:15","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1923,"src":"199:709:15","usedErrors":[1911],"usedEvents":[]}],"src":"33:876:15"},"id":15},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol","exportedSymbols":{"EnforcedOptionParam":[1932],"IOAppOptionsType3":[1964]},"id":1965,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1924,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:16"},{"canonicalName":"EnforcedOptionParam","documentation":{"id":1925,"nodeType":"StructuredDocumentation","src":"59:63:16","text":" @dev Struct representing enforced option parameters."},"id":1932,"members":[{"constant":false,"id":1927,"mutability":"mutable","name":"eid","nameLocation":"163:3:16","nodeType":"VariableDeclaration","scope":1932,"src":"156:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1926,"name":"uint32","nodeType":"ElementaryTypeName","src":"156:6:16","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1929,"mutability":"mutable","name":"msgType","nameLocation":"194:7:16","nodeType":"VariableDeclaration","scope":1932,"src":"187:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1928,"name":"uint16","nodeType":"ElementaryTypeName","src":"187:6:16","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":1931,"mutability":"mutable","name":"options","nameLocation":"229:7:16","nodeType":"VariableDeclaration","scope":1932,"src":"223:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1930,"name":"bytes","nodeType":"ElementaryTypeName","src":"223:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"EnforcedOptionParam","nameLocation":"130:19:16","nodeType":"StructDefinition","scope":1965,"src":"123:138:16","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"IOAppOptionsType3","contractDependencies":[],"contractKind":"interface","documentation":{"id":1933,"nodeType":"StructuredDocumentation","src":"263:143:16","text":" @title IOAppOptionsType3\n @dev Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options."},"fullyImplemented":false,"id":1964,"linearizedBaseContracts":[1964],"name":"IOAppOptionsType3","nameLocation":"417:17:16","nodeType":"ContractDefinition","nodes":[{"errorSelector":"9a6d49cd","id":1937,"name":"InvalidOptions","nameLocation":"495:14:16","nodeType":"ErrorDefinition","parameters":{"id":1936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1935,"mutability":"mutable","name":"options","nameLocation":"516:7:16","nodeType":"VariableDeclaration","scope":1937,"src":"510:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1934,"name":"bytes","nodeType":"ElementaryTypeName","src":"510:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"509:15:16"},"src":"489:36:16"},{"anonymous":false,"eventSelector":"be4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b674","id":1943,"name":"EnforcedOptionSet","nameLocation":"588:17:16","nodeType":"EventDefinition","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1941,"indexed":false,"mutability":"mutable","name":"_enforcedOptions","nameLocation":"628:16:16","nodeType":"VariableDeclaration","scope":1943,"src":"606:38:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam[]"},"typeName":{"baseType":{"id":1939,"nodeType":"UserDefinedTypeName","pathNode":{"id":1938,"name":"EnforcedOptionParam","nameLocations":["606:19:16"],"nodeType":"IdentifierPath","referencedDeclaration":1932,"src":"606:19:16"},"referencedDeclaration":1932,"src":"606:19:16","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_storage_ptr","typeString":"struct EnforcedOptionParam"}},"id":1940,"nodeType":"ArrayTypeName","src":"606:21:16","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_storage_$dyn_storage_ptr","typeString":"struct EnforcedOptionParam[]"}},"visibility":"internal"}],"src":"605:40:16"},"src":"582:64:16"},{"documentation":{"id":1944,"nodeType":"StructuredDocumentation","src":"652:204:16","text":" @notice Sets enforced options for specific endpoint and message type combinations.\n @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options."},"functionSelector":"b98bd070","id":1951,"implemented":false,"kind":"function","modifiers":[],"name":"setEnforcedOptions","nameLocation":"870:18:16","nodeType":"FunctionDefinition","parameters":{"id":1949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1948,"mutability":"mutable","name":"_enforcedOptions","nameLocation":"920:16:16","nodeType":"VariableDeclaration","scope":1951,"src":"889:47:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr","typeString":"struct EnforcedOptionParam[]"},"typeName":{"baseType":{"id":1946,"nodeType":"UserDefinedTypeName","pathNode":{"id":1945,"name":"EnforcedOptionParam","nameLocations":["889:19:16"],"nodeType":"IdentifierPath","referencedDeclaration":1932,"src":"889:19:16"},"referencedDeclaration":1932,"src":"889:19:16","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_storage_ptr","typeString":"struct EnforcedOptionParam"}},"id":1947,"nodeType":"ArrayTypeName","src":"889:21:16","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_storage_$dyn_storage_ptr","typeString":"struct EnforcedOptionParam[]"}},"visibility":"internal"}],"src":"888:49:16"},"returnParameters":{"id":1950,"nodeType":"ParameterList","parameters":[],"src":"946:0:16"},"scope":1964,"src":"861:86:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1952,"nodeType":"StructuredDocumentation","src":"953:322:16","text":" @notice Combines options for a given endpoint and message type.\n @param _eid The endpoint ID.\n @param _msgType The OApp message type.\n @param _extraOptions Additional options passed by the caller.\n @return options The combination of caller specified options AND enforced options."},"functionSelector":"bc70b354","id":1963,"implemented":false,"kind":"function","modifiers":[],"name":"combineOptions","nameLocation":"1289:14:16","nodeType":"FunctionDefinition","parameters":{"id":1959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1954,"mutability":"mutable","name":"_eid","nameLocation":"1320:4:16","nodeType":"VariableDeclaration","scope":1963,"src":"1313:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1953,"name":"uint32","nodeType":"ElementaryTypeName","src":"1313:6:16","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1956,"mutability":"mutable","name":"_msgType","nameLocation":"1341:8:16","nodeType":"VariableDeclaration","scope":1963,"src":"1334:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1955,"name":"uint16","nodeType":"ElementaryTypeName","src":"1334:6:16","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":1958,"mutability":"mutable","name":"_extraOptions","nameLocation":"1374:13:16","nodeType":"VariableDeclaration","scope":1963,"src":"1359:28:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1957,"name":"bytes","nodeType":"ElementaryTypeName","src":"1359:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1303:90:16"},"returnParameters":{"id":1962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1961,"mutability":"mutable","name":"options","nameLocation":"1430:7:16","nodeType":"VariableDeclaration","scope":1963,"src":"1417:20:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1960,"name":"bytes","nodeType":"ElementaryTypeName","src":"1417:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1416:22:16"},"scope":1964,"src":"1280:159:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1965,"src":"407:1034:16","usedErrors":[1937],"usedEvents":[1943]}],"src":"33:1409:16"},"id":16},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol","exportedSymbols":{"ILayerZeroReceiver":[238],"IOAppReceiver":[1985],"Origin":[40]},"id":1986,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1966,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"32:24:17"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol","file":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol","id":1969,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1986,"sourceUnit":239,"src":"58:123:17","symbolAliases":[{"foreign":{"id":1967,"name":"ILayerZeroReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":238,"src":"67:18:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1968,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"87:6:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1970,"name":"ILayerZeroReceiver","nameLocations":["210:18:17"],"nodeType":"IdentifierPath","referencedDeclaration":238,"src":"210:18:17"},"id":1971,"nodeType":"InheritanceSpecifier","src":"210:18:17"}],"canonicalName":"IOAppReceiver","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1985,"linearizedBaseContracts":[1985,238],"name":"IOAppReceiver","nameLocation":"193:13:17","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1972,"nodeType":"StructuredDocumentation","src":"235:670:17","text":" @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\n @param _origin The origin information containing the source endpoint and sender address.\n  - srcEid: The source chain endpoint ID.\n  - sender: The sender address on the src chain.\n  - nonce: The nonce of the message.\n @param _message The lzReceive payload.\n @param _sender The sender address.\n @return isSender Is a valid sender.\n @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\n @dev The default sender IS the OAppReceiver implementer."},"functionSelector":"82413eac","id":1984,"implemented":false,"kind":"function","modifiers":[],"name":"isComposeMsgSender","nameLocation":"919:18:17","nodeType":"FunctionDefinition","parameters":{"id":1980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1975,"mutability":"mutable","name":"_origin","nameLocation":"963:7:17","nodeType":"VariableDeclaration","scope":1984,"src":"947:23:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":1974,"nodeType":"UserDefinedTypeName","pathNode":{"id":1973,"name":"Origin","nameLocations":["947:6:17"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"947:6:17"},"referencedDeclaration":40,"src":"947:6:17","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":1977,"mutability":"mutable","name":"_message","nameLocation":"995:8:17","nodeType":"VariableDeclaration","scope":1984,"src":"980:23:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1976,"name":"bytes","nodeType":"ElementaryTypeName","src":"980:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1979,"mutability":"mutable","name":"_sender","nameLocation":"1021:7:17","nodeType":"VariableDeclaration","scope":1984,"src":"1013:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1978,"name":"address","nodeType":"ElementaryTypeName","src":"1013:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"937:97:17"},"returnParameters":{"id":1983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1982,"mutability":"mutable","name":"isSender","nameLocation":"1063:8:17","nodeType":"VariableDeclaration","scope":1984,"src":"1058:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1981,"name":"bool","nodeType":"ElementaryTypeName","src":"1058:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1057:15:17"},"scope":1985,"src":"910:163:17","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1986,"src":"183:892:17","usedErrors":[],"usedEvents":[]}],"src":"32:1044:17"},"id":17},"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol","exportedSymbols":{"EnforcedOptionParam":[1932],"IOAppOptionsType3":[1964],"OAppOptionsType3":[2149],"Ownable":[3980]},"id":2150,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1987,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:18"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":1989,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2150,"sourceUnit":3981,"src":"59:69:18","symbolAliases":[{"foreign":{"id":1988,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"68:7:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol","file":"../interfaces/IOAppOptionsType3.sol","id":1992,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2150,"sourceUnit":1965,"src":"129:93:18","symbolAliases":[{"foreign":{"id":1990,"name":"IOAppOptionsType3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1964,"src":"138:17:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1991,"name":"EnforcedOptionParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1932,"src":"157:19:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1994,"name":"IOAppOptionsType3","nameLocations":["389:17:18"],"nodeType":"IdentifierPath","referencedDeclaration":1964,"src":"389:17:18"},"id":1995,"nodeType":"InheritanceSpecifier","src":"389:17:18"},{"baseName":{"id":1996,"name":"Ownable","nameLocations":["408:7:18"],"nodeType":"IdentifierPath","referencedDeclaration":3980,"src":"408:7:18"},"id":1997,"nodeType":"InheritanceSpecifier","src":"408:7:18"}],"canonicalName":"OAppOptionsType3","contractDependencies":[],"contractKind":"contract","documentation":{"id":1993,"nodeType":"StructuredDocumentation","src":"224:126:18","text":" @title OAppOptionsType3\n @dev Abstract contract implementing the IOAppOptionsType3 interface with type 3 options."},"fullyImplemented":true,"id":2149,"linearizedBaseContracts":[2149,3980,6685,1964],"name":"OAppOptionsType3","nameLocation":"369:16:18","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2000,"mutability":"constant","name":"OPTION_TYPE_3","nameLocation":"447:13:18","nodeType":"VariableDeclaration","scope":2149,"src":"422:42:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":1998,"name":"uint16","nodeType":"ElementaryTypeName","src":"422:6:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"33","id":1999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"463:1:18","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":false,"functionSelector":"5535d461","id":2006,"mutability":"mutable","name":"enforcedOptions","nameLocation":"616:15:18","nodeType":"VariableDeclaration","scope":2149,"src":"538:93:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$","typeString":"mapping(uint32 => mapping(uint16 => bytes))"},"typeName":{"id":2005,"keyName":"eid","keyNameLocation":"553:3:18","keyType":{"id":2001,"name":"uint32","nodeType":"ElementaryTypeName","src":"546:6:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Mapping","src":"538:70:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$","typeString":"mapping(uint32 => mapping(uint16 => bytes))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":2004,"keyName":"msgType","keyNameLocation":"575:7:18","keyType":{"id":2002,"name":"uint16","nodeType":"ElementaryTypeName","src":"568:6:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Mapping","src":"560:47:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_bytes_storage_$","typeString":"mapping(uint16 => bytes)"},"valueName":"enforcedOption","valueNameLocation":"592:14:18","valueType":{"id":2003,"name":"bytes","nodeType":"ElementaryTypeName","src":"586:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}}},"visibility":"public"},{"baseFunctions":[1951],"body":{"id":2020,"nodeType":"Block","src":"1493:54:18","statements":[{"expression":{"arguments":[{"id":2017,"name":"_enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2011,"src":"1523:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr","typeString":"struct EnforcedOptionParam calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr","typeString":"struct EnforcedOptionParam calldata[] calldata"}],"id":2016,"name":"_setEnforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2071,"src":"1503:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (struct EnforcedOptionParam memory[] memory)"}},"id":2018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1503:37:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2019,"nodeType":"ExpressionStatement","src":"1503:37:18"}]},"documentation":{"id":2007,"nodeType":"StructuredDocumentation","src":"638:748:18","text":" @dev Sets the enforced options for specific endpoint and message type combinations.\n @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\n @dev Only the owner/admin of the OApp can call this function.\n @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\n @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\n eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\n if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose()."},"functionSelector":"b98bd070","id":2021,"implemented":true,"kind":"function","modifiers":[{"id":2014,"kind":"modifierInvocation","modifierName":{"id":2013,"name":"onlyOwner","nameLocations":["1483:9:18"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"1483:9:18"},"nodeType":"ModifierInvocation","src":"1483:9:18"}],"name":"setEnforcedOptions","nameLocation":"1400:18:18","nodeType":"FunctionDefinition","parameters":{"id":2012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2011,"mutability":"mutable","name":"_enforcedOptions","nameLocation":"1450:16:18","nodeType":"VariableDeclaration","scope":2021,"src":"1419:47:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr","typeString":"struct EnforcedOptionParam[]"},"typeName":{"baseType":{"id":2009,"nodeType":"UserDefinedTypeName","pathNode":{"id":2008,"name":"EnforcedOptionParam","nameLocations":["1419:19:18"],"nodeType":"IdentifierPath","referencedDeclaration":1932,"src":"1419:19:18"},"referencedDeclaration":1932,"src":"1419:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_storage_ptr","typeString":"struct EnforcedOptionParam"}},"id":2010,"nodeType":"ArrayTypeName","src":"1419:21:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_storage_$dyn_storage_ptr","typeString":"struct EnforcedOptionParam[]"}},"visibility":"internal"}],"src":"1418:49:18"},"returnParameters":{"id":2015,"nodeType":"ParameterList","parameters":[],"src":"1493:0:18"},"scope":2149,"src":"1391:156:18","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2070,"nodeType":"Block","src":"2330:421:18","statements":[{"body":{"id":2064,"nodeType":"Block","src":"2394:300:18","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"id":2041,"name":"_enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"2542:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam memory[] memory"}},"id":2043,"indexExpression":{"id":2042,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2559:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2542:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_memory_ptr","typeString":"struct EnforcedOptionParam memory"}},"id":2044,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2562:7:18","memberName":"options","nodeType":"MemberAccess","referencedDeclaration":1931,"src":"2542:27:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2040,"name":"_assertOptionsType3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2148,"src":"2522:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":2045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2522:48:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2046,"nodeType":"ExpressionStatement","src":"2522:48:18"},{"expression":{"id":2062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":2047,"name":"enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2006,"src":"2584:15:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$","typeString":"mapping(uint32 => mapping(uint16 => bytes storage ref))"}},"id":2056,"indexExpression":{"expression":{"baseExpression":{"id":2048,"name":"_enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"2600:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam memory[] memory"}},"id":2050,"indexExpression":{"id":2049,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2617:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2600:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_memory_ptr","typeString":"struct EnforcedOptionParam memory"}},"id":2051,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2620:3:18","memberName":"eid","nodeType":"MemberAccess","referencedDeclaration":1927,"src":"2600:23:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2584:40:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_bytes_storage_$","typeString":"mapping(uint16 => bytes storage ref)"}},"id":2057,"indexExpression":{"expression":{"baseExpression":{"id":2052,"name":"_enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"2625:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam memory[] memory"}},"id":2054,"indexExpression":{"id":2053,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2642:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2625:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_memory_ptr","typeString":"struct EnforcedOptionParam memory"}},"id":2055,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2645:7:18","memberName":"msgType","nodeType":"MemberAccess","referencedDeclaration":1929,"src":"2625:27:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2584:69:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":2058,"name":"_enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"2656:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam memory[] memory"}},"id":2060,"indexExpression":{"id":2059,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2673:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2656:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_memory_ptr","typeString":"struct EnforcedOptionParam memory"}},"id":2061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2676:7:18","memberName":"options","nodeType":"MemberAccess","referencedDeclaration":1931,"src":"2656:27:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"2584:99:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"id":2063,"nodeType":"ExpressionStatement","src":"2584:99:18"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2033,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2360:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2034,"name":"_enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"2364:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam memory[] memory"}},"id":2035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2381:6:18","memberName":"length","nodeType":"MemberAccess","src":"2364:23:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2360:27:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2065,"initializationExpression":{"assignments":[2030],"declarations":[{"constant":false,"id":2030,"mutability":"mutable","name":"i","nameLocation":"2353:1:18","nodeType":"VariableDeclaration","scope":2065,"src":"2345:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2029,"name":"uint256","nodeType":"ElementaryTypeName","src":"2345:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2032,"initialValue":{"hexValue":"30","id":2031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2357:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2345:13:18"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2389:3:18","subExpression":{"id":2037,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"2389:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2039,"nodeType":"ExpressionStatement","src":"2389:3:18"},"nodeType":"ForStatement","src":"2340:354:18"},{"eventCall":{"arguments":[{"id":2067,"name":"_enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"2727:16:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam memory[] memory"}],"id":2066,"name":"EnforcedOptionSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1943,"src":"2709:17:18","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (struct EnforcedOptionParam memory[] memory)"}},"id":2068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2709:35:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2069,"nodeType":"EmitStatement","src":"2704:40:18"}]},"documentation":{"id":2022,"nodeType":"StructuredDocumentation","src":"1553:679:18","text":" @dev Sets the enforced options for specific endpoint and message type combinations.\n @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\n @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\n @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\n eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\n if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose()."},"id":2071,"implemented":true,"kind":"function","modifiers":[],"name":"_setEnforcedOptions","nameLocation":"2246:19:18","nodeType":"FunctionDefinition","parameters":{"id":2027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2026,"mutability":"mutable","name":"_enforcedOptions","nameLocation":"2295:16:18","nodeType":"VariableDeclaration","scope":2071,"src":"2266:45:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","typeString":"struct EnforcedOptionParam[]"},"typeName":{"baseType":{"id":2024,"nodeType":"UserDefinedTypeName","pathNode":{"id":2023,"name":"EnforcedOptionParam","nameLocations":["2266:19:18"],"nodeType":"IdentifierPath","referencedDeclaration":1932,"src":"2266:19:18"},"referencedDeclaration":1932,"src":"2266:19:18","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$1932_storage_ptr","typeString":"struct EnforcedOptionParam"}},"id":2025,"nodeType":"ArrayTypeName","src":"2266:21:18","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$1932_storage_$dyn_storage_ptr","typeString":"struct EnforcedOptionParam[]"}},"visibility":"internal"}],"src":"2265:47:18"},"returnParameters":{"id":2028,"nodeType":"ParameterList","parameters":[],"src":"2330:0:18"},"scope":2149,"src":"2237:514:18","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[1963],"body":{"id":2128,"nodeType":"Block","src":"3667:824:18","statements":[{"assignments":[2084],"declarations":[{"constant":false,"id":2084,"mutability":"mutable","name":"enforced","nameLocation":"3690:8:18","nodeType":"VariableDeclaration","scope":2128,"src":"3677:21:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2083,"name":"bytes","nodeType":"ElementaryTypeName","src":"3677:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2090,"initialValue":{"baseExpression":{"baseExpression":{"id":2085,"name":"enforcedOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2006,"src":"3701:15:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$","typeString":"mapping(uint32 => mapping(uint16 => bytes storage ref))"}},"id":2087,"indexExpression":{"id":2086,"name":"_eid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2074,"src":"3717:4:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3701:21:18","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint16_$_t_bytes_storage_$","typeString":"mapping(uint16 => bytes storage ref)"}},"id":2089,"indexExpression":{"id":2088,"name":"_msgType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"3723:8:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3701:31:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3677:55:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2091,"name":"enforced","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"3861:8:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3870:6:18","memberName":"length","nodeType":"MemberAccess","src":"3861:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3880:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3861:20:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2097,"nodeType":"IfStatement","src":"3857:46:18","trueBody":{"expression":{"id":2095,"name":"_extraOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"3890:13:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":2082,"id":2096,"nodeType":"Return","src":"3883:20:18"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2098,"name":"_extraOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"3964:13:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3978:6:18","memberName":"length","nodeType":"MemberAccess","src":"3964:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3988:1:18","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3964:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2104,"nodeType":"IfStatement","src":"3960:46:18","trueBody":{"expression":{"id":2102,"name":"enforced","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"3998:8:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2082,"id":2103,"nodeType":"Return","src":"3991:15:18"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2105,"name":"_extraOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"4129:13:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4143:6:18","memberName":"length","nodeType":"MemberAccess","src":"4129:20:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"32","id":2107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4153:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4129:25:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2123,"nodeType":"IfStatement","src":"4125:267:18","trueBody":{"id":2122,"nodeType":"Block","src":"4156:236:18","statements":[{"expression":{"arguments":[{"id":2110,"name":"_extraOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"4190:13:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2109,"name":"_assertOptionsType3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2148,"src":"4170:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":2111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4170:34:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2112,"nodeType":"ExpressionStatement","src":"4170:34:18"},{"expression":{"arguments":[{"id":2116,"name":"enforced","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2084,"src":"4353:8:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"baseExpression":{"id":2117,"name":"_extraOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"4363:13:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"4363:17:18","startExpression":{"hexValue":"32","id":2118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4377:1:18","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"expression":{"id":2114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4340:5:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2113,"name":"bytes","nodeType":"ElementaryTypeName","src":"4340:5:18","typeDescriptions":{}}},"id":2115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4346:6:18","memberName":"concat","nodeType":"MemberAccess","src":"4340:12:18","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4340:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":2082,"id":2121,"nodeType":"Return","src":"4333:48:18"}]}},{"errorCall":{"arguments":[{"id":2125,"name":"_extraOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2078,"src":"4470:13:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2124,"name":"InvalidOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1937,"src":"4455:14:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (bytes memory) pure returns (error)"}},"id":2126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4455:29:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2127,"nodeType":"RevertStatement","src":"4448:36:18"}]},"documentation":{"id":2072,"nodeType":"StructuredDocumentation","src":"2757:748:18","text":" @notice Combines options for a given endpoint and message type.\n @param _eid The endpoint ID.\n @param _msgType The OAPP message type.\n @param _extraOptions Additional options passed by the caller.\n @return options The combination of caller specified options AND enforced options.\n @dev If there is an enforced lzReceive option:\n - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether}\n - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.\n @dev This presence of duplicated options is handled off-chain in the verifier/executor."},"functionSelector":"bc70b354","id":2129,"implemented":true,"kind":"function","modifiers":[],"name":"combineOptions","nameLocation":"3519:14:18","nodeType":"FunctionDefinition","parameters":{"id":2079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2074,"mutability":"mutable","name":"_eid","nameLocation":"3550:4:18","nodeType":"VariableDeclaration","scope":2129,"src":"3543:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2073,"name":"uint32","nodeType":"ElementaryTypeName","src":"3543:6:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2076,"mutability":"mutable","name":"_msgType","nameLocation":"3571:8:18","nodeType":"VariableDeclaration","scope":2129,"src":"3564:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2075,"name":"uint16","nodeType":"ElementaryTypeName","src":"3564:6:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":2078,"mutability":"mutable","name":"_extraOptions","nameLocation":"3604:13:18","nodeType":"VariableDeclaration","scope":2129,"src":"3589:28:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2077,"name":"bytes","nodeType":"ElementaryTypeName","src":"3589:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3533:90:18"},"returnParameters":{"id":2082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2129,"src":"3653:12:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2080,"name":"bytes","nodeType":"ElementaryTypeName","src":"3653:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3652:14:18"},"scope":2149,"src":"3510:981:18","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2147,"nodeType":"Block","src":"4705:190:18","statements":[{"assignments":[2136],"declarations":[{"constant":false,"id":2136,"mutability":"mutable","name":"optionsType","nameLocation":"4722:11:18","nodeType":"VariableDeclaration","scope":2147,"src":"4715:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2135,"name":"uint16","nodeType":"ElementaryTypeName","src":"4715:6:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":2137,"nodeType":"VariableDeclarationStatement","src":"4715:18:18"},{"AST":{"nativeSrc":"4752:62:18","nodeType":"YulBlock","src":"4752:62:18","statements":[{"nativeSrc":"4766:38:18","nodeType":"YulAssignment","src":"4766:38:18","value":{"arguments":[{"arguments":[{"name":"_options","nativeSrc":"4791:8:18","nodeType":"YulIdentifier","src":"4791:8:18"},{"kind":"number","nativeSrc":"4801:1:18","nodeType":"YulLiteral","src":"4801:1:18","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"4787:3:18","nodeType":"YulIdentifier","src":"4787:3:18"},"nativeSrc":"4787:16:18","nodeType":"YulFunctionCall","src":"4787:16:18"}],"functionName":{"name":"mload","nativeSrc":"4781:5:18","nodeType":"YulIdentifier","src":"4781:5:18"},"nativeSrc":"4781:23:18","nodeType":"YulFunctionCall","src":"4781:23:18"},"variableNames":[{"name":"optionsType","nativeSrc":"4766:11:18","nodeType":"YulIdentifier","src":"4766:11:18"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2132,"isOffset":false,"isSlot":false,"src":"4791:8:18","valueSize":1},{"declaration":2136,"isOffset":false,"isSlot":false,"src":"4766:11:18","valueSize":1}],"id":2138,"nodeType":"InlineAssembly","src":"4743:71:18"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":2141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2139,"name":"optionsType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"4827:11:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2140,"name":"OPTION_TYPE_3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2000,"src":"4842:13:18","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4827:28:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2146,"nodeType":"IfStatement","src":"4823:65:18","trueBody":{"errorCall":{"arguments":[{"id":2143,"name":"_options","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2132,"src":"4879:8:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2142,"name":"InvalidOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1937,"src":"4864:14:18","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (bytes memory) pure returns (error)"}},"id":2144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4864:24:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2145,"nodeType":"RevertStatement","src":"4857:31:18"}}]},"documentation":{"id":2130,"nodeType":"StructuredDocumentation","src":"4497:129:18","text":" @dev Internal function to assert that options are of type 3.\n @param _options The options to be checked."},"id":2148,"implemented":true,"kind":"function","modifiers":[],"name":"_assertOptionsType3","nameLocation":"4640:19:18","nodeType":"FunctionDefinition","parameters":{"id":2133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2132,"mutability":"mutable","name":"_options","nameLocation":"4673:8:18","nodeType":"VariableDeclaration","scope":2148,"src":"4660:21:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2131,"name":"bytes","nodeType":"ElementaryTypeName","src":"4660:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4659:23:18"},"returnParameters":{"id":2134,"nodeType":"ParameterList","parameters":[],"src":"4705:0:18"},"scope":2149,"src":"4631:264:18","stateMutability":"pure","virtual":true,"visibility":"internal"}],"scope":2150,"src":"351:4546:18","usedErrors":[1937,3846,3851],"usedEvents":[1943,3857]}],"src":"33:4865:18"},"id":18},"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol","exportedSymbols":{"IOAppPreCrimeSimulator":[2377],"IPreCrime":[2461],"InboundPacket":[2486],"OAppPreCrimeSimulator":[2323],"Origin":[40],"Ownable":[3980]},"id":2324,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2151,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:19"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":2153,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2324,"sourceUnit":3981,"src":"59:69:19","symbolAliases":[{"foreign":{"id":2152,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"68:7:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol","file":"./interfaces/IPreCrime.sol","id":2155,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2324,"sourceUnit":2462,"src":"129:55:19","symbolAliases":[{"foreign":{"id":2154,"name":"IPreCrime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"138:9:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol","file":"./interfaces/IOAppPreCrimeSimulator.sol","id":2159,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2324,"sourceUnit":2378,"src":"185:104:19","symbolAliases":[{"foreign":{"id":2156,"name":"IOAppPreCrimeSimulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"194:22:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2157,"name":"InboundPacket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"218:13:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2158,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"233:6:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2161,"name":"IOAppPreCrimeSimulator","nameLocations":["470:22:19"],"nodeType":"IdentifierPath","referencedDeclaration":2377,"src":"470:22:19"},"id":2162,"nodeType":"InheritanceSpecifier","src":"470:22:19"},{"baseName":{"id":2163,"name":"Ownable","nameLocations":["494:7:19"],"nodeType":"IdentifierPath","referencedDeclaration":3980,"src":"494:7:19"},"id":2164,"nodeType":"InheritanceSpecifier","src":"494:7:19"}],"canonicalName":"OAppPreCrimeSimulator","contractDependencies":[],"contractKind":"contract","documentation":{"id":2160,"nodeType":"StructuredDocumentation","src":"291:135:19","text":" @title OAppPreCrimeSimulator\n @dev Abstract contract serving as the base for preCrime simulation functionality in an OApp."},"fullyImplemented":false,"id":2323,"linearizedBaseContracts":[2323,3980,6685,2377],"name":"OAppPreCrimeSimulator","nameLocation":"445:21:19","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[2346],"constant":false,"functionSelector":"b731ea0a","id":2166,"mutability":"mutable","name":"preCrime","nameLocation":"574:8:19","nodeType":"VariableDeclaration","scope":2323,"src":"559:23:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2165,"name":"address","nodeType":"ElementaryTypeName","src":"559:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"baseFunctions":[2352],"body":{"id":2177,"nodeType":"Block","src":"931:37:19","statements":[{"expression":{"arguments":[{"id":2174,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"956:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_OAppPreCrimeSimulator_$2323","typeString":"contract OAppPreCrimeSimulator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OAppPreCrimeSimulator_$2323","typeString":"contract OAppPreCrimeSimulator"}],"id":2173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"948:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2172,"name":"address","nodeType":"ElementaryTypeName","src":"948:7:19","typeDescriptions":{}}},"id":2175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"948:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2171,"id":2176,"nodeType":"Return","src":"941:20:19"}]},"documentation":{"id":2167,"nodeType":"StructuredDocumentation","src":"589:281:19","text":" @dev Retrieves the address of the OApp contract.\n @return The address of the OApp contract.\n @dev The simulator contract is the base contract for the OApp by default.\n @dev If the simulator is a separate contract, override this function."},"functionSelector":"52ae2879","id":2178,"implemented":true,"kind":"function","modifiers":[],"name":"oApp","nameLocation":"884:4:19","nodeType":"FunctionDefinition","parameters":{"id":2168,"nodeType":"ParameterList","parameters":[],"src":"888:2:19"},"returnParameters":{"id":2171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2170,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2178,"src":"922:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2169,"name":"address","nodeType":"ElementaryTypeName","src":"922:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"921:9:19"},"scope":2323,"src":"875:93:19","stateMutability":"view","virtual":true,"visibility":"external"},{"baseFunctions":[2358],"body":{"id":2194,"nodeType":"Block","src":"1165:74:19","statements":[{"expression":{"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2186,"name":"preCrime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"1175:8:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2187,"name":"_preCrime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"1186:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1175:20:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2189,"nodeType":"ExpressionStatement","src":"1175:20:19"},{"eventCall":{"arguments":[{"id":2191,"name":"_preCrime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"1222:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2190,"name":"PreCrimeSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2340,"src":"1210:11:19","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1210:22:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2193,"nodeType":"EmitStatement","src":"1205:27:19"}]},"documentation":{"id":2179,"nodeType":"StructuredDocumentation","src":"974:121:19","text":" @dev Sets the preCrime contract address.\n @param _preCrime The address of the preCrime contract."},"functionSelector":"d4243885","id":2195,"implemented":true,"kind":"function","modifiers":[{"id":2184,"kind":"modifierInvocation","modifierName":{"id":2183,"name":"onlyOwner","nameLocations":["1155:9:19"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"1155:9:19"},"nodeType":"ModifierInvocation","src":"1155:9:19"}],"name":"setPreCrime","nameLocation":"1109:11:19","nodeType":"FunctionDefinition","parameters":{"id":2182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2181,"mutability":"mutable","name":"_preCrime","nameLocation":"1129:9:19","nodeType":"VariableDeclaration","scope":2195,"src":"1121:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2180,"name":"address","nodeType":"ElementaryTypeName","src":"1121:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1120:19:19"},"returnParameters":{"id":2185,"nodeType":"ParameterList","parameters":[],"src":"1165:0:19"},"scope":2323,"src":"1100:139:19","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2366],"body":{"id":2261,"nodeType":"Block","src":"1784:1247:19","statements":[{"body":{"id":2250,"nodeType":"Block","src":"1840:991:19","statements":[{"assignments":[2216],"declarations":[{"constant":false,"id":2216,"mutability":"mutable","name":"packet","nameLocation":"1877:6:19","nodeType":"VariableDeclaration","scope":2250,"src":"1854:29:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket"},"typeName":{"id":2215,"nodeType":"UserDefinedTypeName","pathNode":{"id":2214,"name":"InboundPacket","nameLocations":["1854:13:19"],"nodeType":"IdentifierPath","referencedDeclaration":2486,"src":"1854:13:19"},"referencedDeclaration":2486,"src":"1854:13:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_storage_ptr","typeString":"struct InboundPacket"}},"visibility":"internal"}],"id":2220,"initialValue":{"baseExpression":{"id":2217,"name":"_packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"1886:8:19","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr","typeString":"struct InboundPacket calldata[] calldata"}},"id":2219,"indexExpression":{"id":2218,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"1895:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1886:11:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"nodeType":"VariableDeclarationStatement","src":"1854:43:19"},{"condition":{"id":2229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1979:51:19","subExpression":{"arguments":[{"expression":{"expression":{"id":2222,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"1987:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1994:6:19","memberName":"origin","nodeType":"MemberAccess","referencedDeclaration":2471,"src":"1987:13:19","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":2224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2001:6:19","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":35,"src":"1987:20:19","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"expression":{"id":2225,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"2009:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2016:6:19","memberName":"origin","nodeType":"MemberAccess","referencedDeclaration":2471,"src":"2009:13:19","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":2227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2023:6:19","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":37,"src":"2009:20:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2221,"name":"isPeer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2322,"src":"1980:6:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint32_$_t_bytes32_$returns$_t_bool_$","typeString":"function (uint32,bytes32) view returns (bool)"}},"id":2228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1980:50:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2231,"nodeType":"IfStatement","src":"1975:65:19","trueBody":{"id":2230,"nodeType":"Continue","src":"2032:8:19"}},{"expression":{"arguments":[{"expression":{"id":2238,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"2665:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2672:6:19","memberName":"origin","nodeType":"MemberAccess","referencedDeclaration":2471,"src":"2665:13:19","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},{"expression":{"id":2240,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"2696:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2703:4:19","memberName":"guid","nodeType":"MemberAccess","referencedDeclaration":2477,"src":"2696:11:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":2242,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"2725:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2732:7:19","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":2483,"src":"2725:14:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":2244,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"2757:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2764:8:19","memberName":"executor","nodeType":"MemberAccess","referencedDeclaration":2481,"src":"2757:15:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2246,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"2790:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2797:9:19","memberName":"extraData","nodeType":"MemberAccess","referencedDeclaration":2485,"src":"2790:16:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":2232,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2602:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_OAppPreCrimeSimulator_$2323","typeString":"contract OAppPreCrimeSimulator"}},"id":2234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2607:17:19","memberName":"lzReceiveSimulate","nodeType":"MemberAccess","referencedDeclaration":2297,"src":"2602:22:19","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_Origin_$40_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct Origin memory,bytes32,bytes memory,address,bytes memory) payable external"}},"id":2237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":2235,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2216,"src":"2633:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_calldata_ptr","typeString":"struct InboundPacket calldata"}},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2640:5:19","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2479,"src":"2633:12:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2602:45:19","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_Origin_$40_memory_ptr_$_t_bytes32_$_t_bytes_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$__$value","typeString":"function (struct Origin memory,bytes32,bytes memory,address,bytes memory) payable external"}},"id":2248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2602:218:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2249,"nodeType":"ExpressionStatement","src":"2602:218:19"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2207,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"1814:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2208,"name":"_packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"1818:8:19","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr","typeString":"struct InboundPacket calldata[] calldata"}},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1827:6:19","memberName":"length","nodeType":"MemberAccess","src":"1818:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1814:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2251,"initializationExpression":{"assignments":[2204],"declarations":[{"constant":false,"id":2204,"mutability":"mutable","name":"i","nameLocation":"1807:1:19","nodeType":"VariableDeclaration","scope":2251,"src":"1799:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2203,"name":"uint256","nodeType":"ElementaryTypeName","src":"1799:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2206,"initialValue":{"hexValue":"30","id":2205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1811:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1799:13:19"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1835:3:19","subExpression":{"id":2211,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2204,"src":"1835:1:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2213,"nodeType":"ExpressionStatement","src":"1835:3:19"},"nodeType":"ForStatement","src":"1794:1037:19"},{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":2254,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2988:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2992:6:19","memberName":"sender","nodeType":"MemberAccess","src":"2988:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2253,"name":"IPreCrime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"2978:9:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPreCrime_$2461_$","typeString":"type(contract IPreCrime)"}},"id":2256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2978:21:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPreCrime_$2461","typeString":"contract IPreCrime"}},"id":2257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3000:21:19","memberName":"buildSimulationResult","nodeType":"MemberAccess","referencedDeclaration":2441,"src":"2978:43:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes_memory_ptr_$","typeString":"function () view external returns (bytes memory)"}},"id":2258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2978:45:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2252,"name":"SimulationResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"2961:16:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes_memory_ptr_$returns$_t_error_$","typeString":"function (bytes memory) pure returns (error)"}},"id":2259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2961:63:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2260,"nodeType":"RevertStatement","src":"2954:70:19"}]},"documentation":{"id":2196,"nodeType":"StructuredDocumentation","src":"1245:448:19","text":" @dev Interface for pre-crime simulations. Always reverts at the end with the simulation results.\n @param _packets An array of InboundPacket objects representing received packets to be delivered.\n @dev WARNING: MUST revert at the end with the simulation results.\n @dev Gives the preCrime implementation the ability to mock sending packets to the lzReceive function,\n WITHOUT actually executing them."},"functionSelector":"bd815db0","id":2262,"implemented":true,"kind":"function","modifiers":[],"name":"lzReceiveAndRevert","nameLocation":"1707:18:19","nodeType":"FunctionDefinition","parameters":{"id":2201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2200,"mutability":"mutable","name":"_packets","nameLocation":"1751:8:19","nodeType":"VariableDeclaration","scope":2262,"src":"1726:33:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr","typeString":"struct InboundPacket[]"},"typeName":{"baseType":{"id":2198,"nodeType":"UserDefinedTypeName","pathNode":{"id":2197,"name":"InboundPacket","nameLocations":["1726:13:19"],"nodeType":"IdentifierPath","referencedDeclaration":2486,"src":"1726:13:19"},"referencedDeclaration":2486,"src":"1726:13:19","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_storage_ptr","typeString":"struct InboundPacket"}},"id":2199,"nodeType":"ArrayTypeName","src":"1726:15:19","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_storage_$dyn_storage_ptr","typeString":"struct InboundPacket[]"}},"visibility":"internal"}],"src":"1725:35:19"},"returnParameters":{"id":2202,"nodeType":"ParameterList","parameters":[],"src":"1784:0:19"},"scope":2323,"src":"1698:1333:19","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":2296,"nodeType":"Block","src":"3888:200:19","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2277,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3958:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3962:6:19","memberName":"sender","nodeType":"MemberAccess","src":"3958:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":2281,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3980:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_OAppPreCrimeSimulator_$2323","typeString":"contract OAppPreCrimeSimulator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OAppPreCrimeSimulator_$2323","typeString":"contract OAppPreCrimeSimulator"}],"id":2280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3972:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2279,"name":"address","nodeType":"ElementaryTypeName","src":"3972:7:19","typeDescriptions":{}}},"id":2282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3972:13:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3958:27:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2287,"nodeType":"IfStatement","src":"3954:50:19","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2284,"name":"OnlySelf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2335,"src":"3994:8:19","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3994:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2286,"nodeType":"RevertStatement","src":"3987:17:19"}},{"expression":{"arguments":[{"id":2289,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2266,"src":"4033:7:19","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},{"id":2290,"name":"_guid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"4042:5:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2291,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2270,"src":"4049:8:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":2292,"name":"_executor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2272,"src":"4059:9:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2293,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2274,"src":"4070:10:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":2288,"name":"_lzReceiveSimulate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2312,"src":"4014:18:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Origin_$40_calldata_ptr_$_t_bytes32_$_t_bytes_calldata_ptr_$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (struct Origin calldata,bytes32,bytes calldata,address,bytes calldata)"}},"id":2294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4014:67:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2295,"nodeType":"ExpressionStatement","src":"4014:67:19"}]},"documentation":{"id":2263,"nodeType":"StructuredDocumentation","src":"3037:637:19","text":" @dev Is effectively an internal function because msg.sender must be address(this).\n Allows resetting the call stack for 'internal' calls.\n @param _origin The origin information containing the source endpoint and sender address.\n  - srcEid: The source chain endpoint ID.\n  - sender: The sender address on the src chain.\n  - nonce: The nonce of the message.\n @param _guid The unique identifier of the packet.\n @param _message The message payload of the packet.\n @param _executor The executor address for the packet.\n @param _extraData Additional data for the packet."},"functionSelector":"d045a0dc","id":2297,"implemented":true,"kind":"function","modifiers":[],"name":"lzReceiveSimulate","nameLocation":"3688:17:19","nodeType":"FunctionDefinition","parameters":{"id":2275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2266,"mutability":"mutable","name":"_origin","nameLocation":"3731:7:19","nodeType":"VariableDeclaration","scope":2297,"src":"3715:23:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":2265,"nodeType":"UserDefinedTypeName","pathNode":{"id":2264,"name":"Origin","nameLocations":["3715:6:19"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"3715:6:19"},"referencedDeclaration":40,"src":"3715:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":2268,"mutability":"mutable","name":"_guid","nameLocation":"3756:5:19","nodeType":"VariableDeclaration","scope":2297,"src":"3748:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2267,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3748:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2270,"mutability":"mutable","name":"_message","nameLocation":"3786:8:19","nodeType":"VariableDeclaration","scope":2297,"src":"3771:23:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2269,"name":"bytes","nodeType":"ElementaryTypeName","src":"3771:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2272,"mutability":"mutable","name":"_executor","nameLocation":"3812:9:19","nodeType":"VariableDeclaration","scope":2297,"src":"3804:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2271,"name":"address","nodeType":"ElementaryTypeName","src":"3804:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2274,"mutability":"mutable","name":"_extraData","nameLocation":"3846:10:19","nodeType":"VariableDeclaration","scope":2297,"src":"3831:25:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2273,"name":"bytes","nodeType":"ElementaryTypeName","src":"3831:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3705:157:19"},"returnParameters":{"id":2276,"nodeType":"ParameterList","parameters":[],"src":"3888:0:19"},"scope":2323,"src":"3679:409:19","stateMutability":"payable","virtual":true,"visibility":"external"},{"documentation":{"id":2298,"nodeType":"StructuredDocumentation","src":"4094:712:19","text":" @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\n @param _origin The origin information.\n  - srcEid: The source chain endpoint ID.\n  - sender: The sender address from the src chain.\n  - nonce: The nonce of the LayerZero message.\n @param _guid The GUID of the LayerZero message.\n @param _message The LayerZero message.\n @param _executor The address of the off-chain executor.\n @param _extraData Arbitrary data passed by the msg executor.\n @dev Enables the preCrime simulator to mock sending lzReceive() messages,\n routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver."},"id":2312,"implemented":false,"kind":"function","modifiers":[],"name":"_lzReceiveSimulate","nameLocation":"4820:18:19","nodeType":"FunctionDefinition","parameters":{"id":2310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2301,"mutability":"mutable","name":"_origin","nameLocation":"4864:7:19","nodeType":"VariableDeclaration","scope":2312,"src":"4848:23:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":2300,"nodeType":"UserDefinedTypeName","pathNode":{"id":2299,"name":"Origin","nameLocations":["4848:6:19"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"4848:6:19"},"referencedDeclaration":40,"src":"4848:6:19","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":2303,"mutability":"mutable","name":"_guid","nameLocation":"4889:5:19","nodeType":"VariableDeclaration","scope":2312,"src":"4881:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2302,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4881:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2305,"mutability":"mutable","name":"_message","nameLocation":"4919:8:19","nodeType":"VariableDeclaration","scope":2312,"src":"4904:23:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2304,"name":"bytes","nodeType":"ElementaryTypeName","src":"4904:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2307,"mutability":"mutable","name":"_executor","nameLocation":"4945:9:19","nodeType":"VariableDeclaration","scope":2312,"src":"4937:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2306,"name":"address","nodeType":"ElementaryTypeName","src":"4937:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2309,"mutability":"mutable","name":"_extraData","nameLocation":"4979:10:19","nodeType":"VariableDeclaration","scope":2312,"src":"4964:25:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2308,"name":"bytes","nodeType":"ElementaryTypeName","src":"4964:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4838:157:19"},"returnParameters":{"id":2311,"nodeType":"ParameterList","parameters":[],"src":"5012:0:19"},"scope":2323,"src":"4811:202:19","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[2376],"documentation":{"id":2313,"nodeType":"StructuredDocumentation","src":"5019:249:19","text":" @dev checks if the specified peer is considered 'trusted' by the OApp.\n @param _eid The endpoint Id to check.\n @param _peer The peer to check.\n @return Whether the peer passed is considered 'trusted' by the OApp."},"functionSelector":"5a0dfe4d","id":2322,"implemented":false,"kind":"function","modifiers":[],"name":"isPeer","nameLocation":"5282:6:19","nodeType":"FunctionDefinition","parameters":{"id":2318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2315,"mutability":"mutable","name":"_eid","nameLocation":"5296:4:19","nodeType":"VariableDeclaration","scope":2322,"src":"5289:11:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2314,"name":"uint32","nodeType":"ElementaryTypeName","src":"5289:6:19","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2317,"mutability":"mutable","name":"_peer","nameLocation":"5310:5:19","nodeType":"VariableDeclaration","scope":2322,"src":"5302:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2316,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5302:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5288:28:19"},"returnParameters":{"id":2321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2320,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2322,"src":"5346:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2319,"name":"bool","nodeType":"ElementaryTypeName","src":"5346:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5345:6:19"},"scope":2323,"src":"5273:79:19","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":2324,"src":"427:4927:19","usedErrors":[2333,2335,3846,3851],"usedEvents":[2340,3857]}],"src":"33:5322:19"},"id":19},"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol","exportedSymbols":{"IOAppPreCrimeSimulator":[2377],"InboundPacket":[2486],"Origin":[40]},"id":2378,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2325,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:20"},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol","file":"../libs/Packet.sol","id":2328,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2378,"sourceUnit":2612,"src":"186:59:20","symbolAliases":[{"foreign":{"id":2326,"name":"InboundPacket","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"195:13:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2327,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"210:6:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IOAppPreCrimeSimulator","contractDependencies":[],"contractKind":"interface","documentation":{"id":2329,"nodeType":"StructuredDocumentation","src":"247:122:20","text":" @title IOAppPreCrimeSimulator Interface\n @dev Interface for the preCrime simulation functionality in an OApp."},"fullyImplemented":false,"id":2377,"linearizedBaseContracts":[2377],"name":"IOAppPreCrimeSimulator","nameLocation":"380:22:20","nodeType":"ContractDefinition","nodes":[{"errorSelector":"8351eea7","id":2333,"name":"SimulationResult","nameLocation":"477:16:20","nodeType":"ErrorDefinition","parameters":{"id":2332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2331,"mutability":"mutable","name":"result","nameLocation":"500:6:20","nodeType":"VariableDeclaration","scope":2333,"src":"494:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2330,"name":"bytes","nodeType":"ElementaryTypeName","src":"494:5:20","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"493:14:20"},"src":"471:37:20"},{"errorSelector":"14d4a4e8","id":2335,"name":"OnlySelf","nameLocation":"519:8:20","nodeType":"ErrorDefinition","parameters":{"id":2334,"nodeType":"ParameterList","parameters":[],"src":"527:2:20"},"src":"513:17:20"},{"anonymous":false,"documentation":{"id":2336,"nodeType":"StructuredDocumentation","src":"536:142:20","text":" @dev Emitted when the preCrime contract address is set.\n @param preCrimeAddress The address of the preCrime contract."},"eventSelector":"d48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c2427760","id":2340,"name":"PreCrimeSet","nameLocation":"689:11:20","nodeType":"EventDefinition","parameters":{"id":2339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2338,"indexed":false,"mutability":"mutable","name":"preCrimeAddress","nameLocation":"709:15:20","nodeType":"VariableDeclaration","scope":2340,"src":"701:23:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2337,"name":"address","nodeType":"ElementaryTypeName","src":"701:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"700:25:20"},"src":"683:43:20"},{"documentation":{"id":2341,"nodeType":"StructuredDocumentation","src":"732:139:20","text":" @dev Retrieves the address of the preCrime contract implementation.\n @return The address of the preCrime contract."},"functionSelector":"b731ea0a","id":2346,"implemented":false,"kind":"function","modifiers":[],"name":"preCrime","nameLocation":"885:8:20","nodeType":"FunctionDefinition","parameters":{"id":2342,"nodeType":"ParameterList","parameters":[],"src":"893:2:20"},"returnParameters":{"id":2345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2344,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2346,"src":"919:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2343,"name":"address","nodeType":"ElementaryTypeName","src":"919:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"918:9:20"},"scope":2377,"src":"876:52:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2347,"nodeType":"StructuredDocumentation","src":"934:116:20","text":" @dev Retrieves the address of the OApp contract.\n @return The address of the OApp contract."},"functionSelector":"52ae2879","id":2352,"implemented":false,"kind":"function","modifiers":[],"name":"oApp","nameLocation":"1064:4:20","nodeType":"FunctionDefinition","parameters":{"id":2348,"nodeType":"ParameterList","parameters":[],"src":"1068:2:20"},"returnParameters":{"id":2351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2350,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2352,"src":"1094:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2349,"name":"address","nodeType":"ElementaryTypeName","src":"1094:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1093:9:20"},"scope":2377,"src":"1055:48:20","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2353,"nodeType":"StructuredDocumentation","src":"1109:121:20","text":" @dev Sets the preCrime contract address.\n @param _preCrime The address of the preCrime contract."},"functionSelector":"d4243885","id":2358,"implemented":false,"kind":"function","modifiers":[],"name":"setPreCrime","nameLocation":"1244:11:20","nodeType":"FunctionDefinition","parameters":{"id":2356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2355,"mutability":"mutable","name":"_preCrime","nameLocation":"1264:9:20","nodeType":"VariableDeclaration","scope":2358,"src":"1256:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2354,"name":"address","nodeType":"ElementaryTypeName","src":"1256:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1255:19:20"},"returnParameters":{"id":2357,"nodeType":"ParameterList","parameters":[],"src":"1283:0:20"},"scope":2377,"src":"1235:49:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2359,"nodeType":"StructuredDocumentation","src":"1290:209:20","text":" @dev Mocks receiving a packet, then reverts with a series of data to infer the state/result.\n @param _packets An array of LayerZero InboundPacket objects representing received packets."},"functionSelector":"bd815db0","id":2366,"implemented":false,"kind":"function","modifiers":[],"name":"lzReceiveAndRevert","nameLocation":"1513:18:20","nodeType":"FunctionDefinition","parameters":{"id":2364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"_packets","nameLocation":"1557:8:20","nodeType":"VariableDeclaration","scope":2366,"src":"1532:33:20","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr","typeString":"struct InboundPacket[]"},"typeName":{"baseType":{"id":2361,"nodeType":"UserDefinedTypeName","pathNode":{"id":2360,"name":"InboundPacket","nameLocations":["1532:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":2486,"src":"1532:13:20"},"referencedDeclaration":2486,"src":"1532:13:20","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_storage_ptr","typeString":"struct InboundPacket"}},"id":2362,"nodeType":"ArrayTypeName","src":"1532:15:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_storage_$dyn_storage_ptr","typeString":"struct InboundPacket[]"}},"visibility":"internal"}],"src":"1531:35:20"},"returnParameters":{"id":2365,"nodeType":"ParameterList","parameters":[],"src":"1583:0:20"},"scope":2377,"src":"1504:80:20","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":2367,"nodeType":"StructuredDocumentation","src":"1590:249:20","text":" @dev checks if the specified peer is considered 'trusted' by the OApp.\n @param _eid The endpoint Id to check.\n @param _peer The peer to check.\n @return Whether the peer passed is considered 'trusted' by the OApp."},"functionSelector":"5a0dfe4d","id":2376,"implemented":false,"kind":"function","modifiers":[],"name":"isPeer","nameLocation":"1853:6:20","nodeType":"FunctionDefinition","parameters":{"id":2372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2369,"mutability":"mutable","name":"_eid","nameLocation":"1867:4:20","nodeType":"VariableDeclaration","scope":2376,"src":"1860:11:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2368,"name":"uint32","nodeType":"ElementaryTypeName","src":"1860:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2371,"mutability":"mutable","name":"_peer","nameLocation":"1881:5:20","nodeType":"VariableDeclaration","scope":2376,"src":"1873:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2370,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1873:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1859:28:20"},"returnParameters":{"id":2375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2374,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2376,"src":"1911:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2373,"name":"bool","nodeType":"ElementaryTypeName","src":"1911:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1910:6:20"},"scope":2377,"src":"1844:73:20","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2378,"src":"370:1549:20","usedErrors":[2333,2335],"usedEvents":[2340]}],"src":"33:1887:20"},"id":20},"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol","exportedSymbols":{"IPreCrime":[2461],"PreCrimePeer":[2386]},"id":2462,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2379,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:21"},{"canonicalName":"PreCrimePeer","id":2386,"members":[{"constant":false,"id":2381,"mutability":"mutable","name":"eid","nameLocation":"91:3:21","nodeType":"VariableDeclaration","scope":2386,"src":"84:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2380,"name":"uint32","nodeType":"ElementaryTypeName","src":"84:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2383,"mutability":"mutable","name":"preCrime","nameLocation":"108:8:21","nodeType":"VariableDeclaration","scope":2386,"src":"100:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2382,"name":"bytes32","nodeType":"ElementaryTypeName","src":"100:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2385,"mutability":"mutable","name":"oApp","nameLocation":"130:4:21","nodeType":"VariableDeclaration","scope":2386,"src":"122:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2384,"name":"bytes32","nodeType":"ElementaryTypeName","src":"122:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"PreCrimePeer","nameLocation":"65:12:21","nodeType":"StructDefinition","scope":2462,"src":"58:79:21","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"IPreCrime","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2461,"linearizedBaseContracts":[2461],"name":"IPreCrime","nameLocation":"170:9:21","nodeType":"ContractDefinition","nodes":[{"errorSelector":"9cbfe066","id":2388,"name":"OnlyOffChain","nameLocation":"192:12:21","nodeType":"ErrorDefinition","parameters":{"id":2387,"nodeType":"ParameterList","parameters":[],"src":"204:2:21"},"src":"186:21:21"},{"errorSelector":"9db08605","id":2394,"name":"PacketOversize","nameLocation":"241:14:21","nodeType":"ErrorDefinition","parameters":{"id":2393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2390,"mutability":"mutable","name":"max","nameLocation":"264:3:21","nodeType":"VariableDeclaration","scope":2394,"src":"256:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2389,"name":"uint256","nodeType":"ElementaryTypeName","src":"256:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2392,"mutability":"mutable","name":"actual","nameLocation":"277:6:21","nodeType":"VariableDeclaration","scope":2394,"src":"269:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2391,"name":"uint256","nodeType":"ElementaryTypeName","src":"269:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"255:29:21"},"src":"235:50:21"},{"errorSelector":"50823c85","id":2396,"name":"PacketUnsorted","nameLocation":"296:14:21","nodeType":"ErrorDefinition","parameters":{"id":2395,"nodeType":"ParameterList","parameters":[],"src":"310:2:21"},"src":"290:23:21"},{"errorSelector":"614cbd8a","id":2400,"name":"SimulationFailed","nameLocation":"324:16:21","nodeType":"ErrorDefinition","parameters":{"id":2399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2398,"mutability":"mutable","name":"reason","nameLocation":"347:6:21","nodeType":"VariableDeclaration","scope":2400,"src":"341:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2397,"name":"bytes","nodeType":"ElementaryTypeName","src":"341:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"340:14:21"},"src":"318:37:21"},{"errorSelector":"01992f2a","id":2404,"name":"SimulationResultNotFound","nameLocation":"389:24:21","nodeType":"ErrorDefinition","parameters":{"id":2403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2402,"mutability":"mutable","name":"eid","nameLocation":"421:3:21","nodeType":"VariableDeclaration","scope":2404,"src":"414:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2401,"name":"uint32","nodeType":"ElementaryTypeName","src":"414:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"413:12:21"},"src":"383:43:21"},{"errorSelector":"572e17ee","id":2410,"name":"InvalidSimulationResult","nameLocation":"437:23:21","nodeType":"ErrorDefinition","parameters":{"id":2409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2406,"mutability":"mutable","name":"eid","nameLocation":"468:3:21","nodeType":"VariableDeclaration","scope":2410,"src":"461:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2405,"name":"uint32","nodeType":"ElementaryTypeName","src":"461:6:21","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2408,"mutability":"mutable","name":"reason","nameLocation":"479:6:21","nodeType":"VariableDeclaration","scope":2410,"src":"473:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2407,"name":"bytes","nodeType":"ElementaryTypeName","src":"473:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"460:26:21"},"src":"431:56:21"},{"errorSelector":"19159757","id":2414,"name":"CrimeFound","nameLocation":"498:10:21","nodeType":"ErrorDefinition","parameters":{"id":2413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2412,"mutability":"mutable","name":"crime","nameLocation":"515:5:21","nodeType":"VariableDeclaration","scope":2414,"src":"509:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2411,"name":"bytes","nodeType":"ElementaryTypeName","src":"509:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"508:13:21"},"src":"492:30:21"},{"functionSelector":"f0cd3836","id":2425,"implemented":false,"kind":"function","modifiers":[],"name":"getConfig","nameLocation":"537:9:21","nodeType":"FunctionDefinition","parameters":{"id":2421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2417,"mutability":"mutable","name":"_packets","nameLocation":"564:8:21","nodeType":"VariableDeclaration","scope":2425,"src":"547:25:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2415,"name":"bytes","nodeType":"ElementaryTypeName","src":"547:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2416,"nodeType":"ArrayTypeName","src":"547:7:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":2420,"mutability":"mutable","name":"_packetMsgValues","nameLocation":"593:16:21","nodeType":"VariableDeclaration","scope":2425,"src":"574:35:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2418,"name":"uint256","nodeType":"ElementaryTypeName","src":"574:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2419,"nodeType":"ArrayTypeName","src":"574:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"546:64:21"},"returnParameters":{"id":2424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2423,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2425,"src":"629:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2422,"name":"bytes","nodeType":"ElementaryTypeName","src":"629:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"628:14:21"},"scope":2461,"src":"528:115:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"50dfa937","id":2436,"implemented":false,"kind":"function","modifiers":[],"name":"simulate","nameLocation":"658:8:21","nodeType":"FunctionDefinition","parameters":{"id":2432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2428,"mutability":"mutable","name":"_packets","nameLocation":"693:8:21","nodeType":"VariableDeclaration","scope":2436,"src":"676:25:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2426,"name":"bytes","nodeType":"ElementaryTypeName","src":"676:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2427,"nodeType":"ArrayTypeName","src":"676:7:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":2431,"mutability":"mutable","name":"_packetMsgValues","nameLocation":"730:16:21","nodeType":"VariableDeclaration","scope":2436,"src":"711:35:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2429,"name":"uint256","nodeType":"ElementaryTypeName","src":"711:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2430,"nodeType":"ArrayTypeName","src":"711:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"666:86:21"},"returnParameters":{"id":2435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2434,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2436,"src":"779:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2433,"name":"bytes","nodeType":"ElementaryTypeName","src":"779:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"778:14:21"},"scope":2461,"src":"649:144:21","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"8e9e7099","id":2441,"implemented":false,"kind":"function","modifiers":[],"name":"buildSimulationResult","nameLocation":"808:21:21","nodeType":"FunctionDefinition","parameters":{"id":2437,"nodeType":"ParameterList","parameters":[],"src":"829:2:21"},"returnParameters":{"id":2440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2439,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2441,"src":"855:12:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2438,"name":"bytes","nodeType":"ElementaryTypeName","src":"855:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"854:14:21"},"scope":2461,"src":"799:70:21","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"10f9cf3a","id":2453,"implemented":false,"kind":"function","modifiers":[],"name":"preCrime","nameLocation":"884:8:21","nodeType":"FunctionDefinition","parameters":{"id":2451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2444,"mutability":"mutable","name":"_packets","nameLocation":"919:8:21","nodeType":"VariableDeclaration","scope":2453,"src":"902:25:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2442,"name":"bytes","nodeType":"ElementaryTypeName","src":"902:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2443,"nodeType":"ArrayTypeName","src":"902:7:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":2447,"mutability":"mutable","name":"_packetMsgValues","nameLocation":"956:16:21","nodeType":"VariableDeclaration","scope":2453,"src":"937:35:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2445,"name":"uint256","nodeType":"ElementaryTypeName","src":"937:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2446,"nodeType":"ArrayTypeName","src":"937:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2450,"mutability":"mutable","name":"_simulations","nameLocation":"999:12:21","nodeType":"VariableDeclaration","scope":2453,"src":"982:29:21","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2448,"name":"bytes","nodeType":"ElementaryTypeName","src":"982:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2449,"nodeType":"ArrayTypeName","src":"982:7:21","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"892:125:21"},"returnParameters":{"id":2452,"nodeType":"ParameterList","parameters":[],"src":"1026:0:21"},"scope":2461,"src":"875:152:21","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"54fd4d50","id":2460,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"1042:7:21","nodeType":"FunctionDefinition","parameters":{"id":2454,"nodeType":"ParameterList","parameters":[],"src":"1049:2:21"},"returnParameters":{"id":2459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2456,"mutability":"mutable","name":"major","nameLocation":"1082:5:21","nodeType":"VariableDeclaration","scope":2460,"src":"1075:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":2455,"name":"uint64","nodeType":"ElementaryTypeName","src":"1075:6:21","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":2458,"mutability":"mutable","name":"minor","nameLocation":"1095:5:21","nodeType":"VariableDeclaration","scope":2460,"src":"1089:11:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2457,"name":"uint8","nodeType":"ElementaryTypeName","src":"1089:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1074:27:21"},"scope":2461,"src":"1033:69:21","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2462,"src":"160:944:21","usedErrors":[2388,2394,2396,2400,2404,2410,2414],"usedEvents":[]}],"src":"33:1072:21"},"id":21},"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol","exportedSymbols":{"InboundPacket":[2486],"Origin":[40],"PacketDecoder":[2611],"PacketV1Codec":[1325]},"id":2612,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2463,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:22"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","file":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","id":2465,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2612,"sourceUnit":203,"src":"59:105:22","symbolAliases":[{"foreign":{"id":2464,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"68:6:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol","file":"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol","id":2467,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2612,"sourceUnit":1326,"src":"165:110:22","symbolAliases":[{"foreign":{"id":2466,"name":"PacketV1Codec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1325,"src":"174:13:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"InboundPacket","documentation":{"id":2468,"nodeType":"StructuredDocumentation","src":"277:106:22","text":" @title InboundPacket\n @dev Structure representing an inbound packet received by the contract."},"id":2486,"members":[{"constant":false,"id":2471,"mutability":"mutable","name":"origin","nameLocation":"418:6:22","nodeType":"VariableDeclaration","scope":2486,"src":"411:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"},"typeName":{"id":2470,"nodeType":"UserDefinedTypeName","pathNode":{"id":2469,"name":"Origin","nameLocations":["411:6:22"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"411:6:22"},"referencedDeclaration":40,"src":"411:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":2473,"mutability":"mutable","name":"dstEid","nameLocation":"474:6:22","nodeType":"VariableDeclaration","scope":2486,"src":"467:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2472,"name":"uint32","nodeType":"ElementaryTypeName","src":"467:6:22","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":2475,"mutability":"mutable","name":"receiver","nameLocation":"535:8:22","nodeType":"VariableDeclaration","scope":2486,"src":"527:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2474,"name":"address","nodeType":"ElementaryTypeName","src":"527:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2477,"mutability":"mutable","name":"guid","nameLocation":"593:4:22","nodeType":"VariableDeclaration","scope":2486,"src":"585:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2476,"name":"bytes32","nodeType":"ElementaryTypeName","src":"585:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2479,"mutability":"mutable","name":"value","nameLocation":"647:5:22","nodeType":"VariableDeclaration","scope":2486,"src":"639:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2478,"name":"uint256","nodeType":"ElementaryTypeName","src":"639:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2481,"mutability":"mutable","name":"executor","nameLocation":"694:8:22","nodeType":"VariableDeclaration","scope":2486,"src":"686:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2480,"name":"address","nodeType":"ElementaryTypeName","src":"686:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2483,"mutability":"mutable","name":"message","nameLocation":"750:7:22","nodeType":"VariableDeclaration","scope":2486,"src":"744:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2482,"name":"bytes","nodeType":"ElementaryTypeName","src":"744:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2485,"mutability":"mutable","name":"extraData","nameLocation":"803:9:22","nodeType":"VariableDeclaration","scope":2486,"src":"797:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2484,"name":"bytes","nodeType":"ElementaryTypeName","src":"797:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"InboundPacket","nameLocation":"391:13:22","nodeType":"StructDefinition","scope":2612,"src":"384:476:22","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"PacketDecoder","contractDependencies":[],"contractKind":"library","documentation":{"id":2487,"nodeType":"StructuredDocumentation","src":"862:79:22","text":" @title PacketDecoder\n @dev Library for decoding LayerZero packets."},"fullyImplemented":true,"id":2611,"linearizedBaseContracts":[2611],"name":"PacketDecoder","nameLocation":"950:13:22","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2490,"libraryName":{"id":2488,"name":"PacketV1Codec","nameLocations":["976:13:22"],"nodeType":"IdentifierPath","referencedDeclaration":1325,"src":"976:13:22"},"nodeType":"UsingForDirective","src":"970:30:22","typeName":{"id":2489,"name":"bytes","nodeType":"ElementaryTypeName","src":"994:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"body":{"id":2547,"nodeType":"Block","src":"1307:265:22","statements":[{"expression":{"id":2513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2499,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"1317:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"id":2501,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1324:6:22","memberName":"origin","nodeType":"MemberAccess","referencedDeclaration":2471,"src":"1317:13:22","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_memory_ptr","typeString":"struct Origin memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2503,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"1340:7:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1348:6:22","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":1185,"src":"1340:14:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint32_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint32)"}},"id":2505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1340:16:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2506,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"1358:7:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1366:6:22","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":1201,"src":"1358:14:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bytes32)"}},"id":2508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1358:16:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2509,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"1376:7:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1384:5:22","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":1166,"src":"1376:13:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint64_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint64)"}},"id":2511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1376:15:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":2502,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"1333:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Origin_$40_storage_ptr_$","typeString":"type(struct Origin storage pointer)"}},"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1333:59:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_memory_ptr","typeString":"struct Origin memory"}},"src":"1317:75:22","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_memory_ptr","typeString":"struct Origin memory"}},"id":2514,"nodeType":"ExpressionStatement","src":"1317:75:22"},{"expression":{"id":2521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2515,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"1402:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"id":2517,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1409:6:22","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":2473,"src":"1402:13:22","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2518,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"1418:7:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1426:6:22","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":1234,"src":"1418:14:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint32_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint32)"}},"id":2520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1418:16:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1402:32:22","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":2522,"nodeType":"ExpressionStatement","src":"1402:32:22"},{"expression":{"id":2529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2523,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"1444:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"id":2525,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1451:8:22","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":2475,"src":"1444:15:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2526,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"1462:7:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1470:11:22","memberName":"receiverB20","nodeType":"MemberAccess","referencedDeclaration":1264,"src":"1462:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_address_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (address)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1462:21:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1444:39:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2530,"nodeType":"ExpressionStatement","src":"1444:39:22"},{"expression":{"id":2537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2531,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"1493:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"id":2533,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1500:4:22","memberName":"guid","nodeType":"MemberAccess","referencedDeclaration":2477,"src":"1493:11:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2534,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"1507:7:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1515:4:22","memberName":"guid","nodeType":"MemberAccess","referencedDeclaration":1280,"src":"1507:12:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bytes32)"}},"id":2536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1507:14:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1493:28:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2538,"nodeType":"ExpressionStatement","src":"1493:28:22"},{"expression":{"id":2545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2539,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"1531:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"id":2541,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1538:7:22","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":2483,"src":"1531:14:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2542,"name":"_packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"1548:7:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":2543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1556:7:22","memberName":"message","nodeType":"MemberAccess","referencedDeclaration":1295,"src":"1548:15:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes_calldata_ptr_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bytes calldata)"}},"id":2544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1548:17:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"src":"1531:34:22","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2546,"nodeType":"ExpressionStatement","src":"1531:34:22"}]},"documentation":{"id":2491,"nodeType":"StructuredDocumentation","src":"1006:204:22","text":" @dev Decode an inbound packet from the given packet data.\n @param _packet The packet data to decode.\n @return packet An InboundPacket struct representing the decoded packet."},"id":2548,"implemented":true,"kind":"function","modifiers":[],"name":"decode","nameLocation":"1224:6:22","nodeType":"FunctionDefinition","parameters":{"id":2494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2493,"mutability":"mutable","name":"_packet","nameLocation":"1246:7:22","nodeType":"VariableDeclaration","scope":2548,"src":"1231:22:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2492,"name":"bytes","nodeType":"ElementaryTypeName","src":"1231:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1230:24:22"},"returnParameters":{"id":2498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2497,"mutability":"mutable","name":"packet","nameLocation":"1299:6:22","nodeType":"VariableDeclaration","scope":2548,"src":"1278:27:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket"},"typeName":{"id":2496,"nodeType":"UserDefinedTypeName","pathNode":{"id":2495,"name":"InboundPacket","nameLocations":["1278:13:22"],"nodeType":"IdentifierPath","referencedDeclaration":2486,"src":"1278:13:22"},"referencedDeclaration":2486,"src":"1278:13:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_storage_ptr","typeString":"struct InboundPacket"}},"visibility":"internal"}],"src":"1277:29:22"},"scope":2611,"src":"1215:357:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2609,"nodeType":"Block","src":"2086:381:22","statements":[{"expression":{"id":2570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2562,"name":"packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2560,"src":"2096:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_memory_ptr_$dyn_memory_ptr","typeString":"struct InboundPacket memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":2567,"name":"_packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2552,"src":"2126:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":2568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2135:6:22","memberName":"length","nodeType":"MemberAccess","src":"2126:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2106:19:22","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_InboundPacket_$2486_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct InboundPacket memory[] memory)"},"typeName":{"baseType":{"id":2564,"nodeType":"UserDefinedTypeName","pathNode":{"id":2563,"name":"InboundPacket","nameLocations":["2110:13:22"],"nodeType":"IdentifierPath","referencedDeclaration":2486,"src":"2110:13:22"},"referencedDeclaration":2486,"src":"2110:13:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_storage_ptr","typeString":"struct InboundPacket"}},"id":2565,"nodeType":"ArrayTypeName","src":"2110:15:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_storage_$dyn_storage_ptr","typeString":"struct InboundPacket[]"}}},"id":2569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2106:36:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_memory_ptr_$dyn_memory_ptr","typeString":"struct InboundPacket memory[] memory"}},"src":"2096:46:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_memory_ptr_$dyn_memory_ptr","typeString":"struct InboundPacket memory[] memory"}},"id":2571,"nodeType":"ExpressionStatement","src":"2096:46:22"},{"body":{"id":2607,"nodeType":"Block","src":"2198:263:22","statements":[{"assignments":[2584],"declarations":[{"constant":false,"id":2584,"mutability":"mutable","name":"packet","nameLocation":"2227:6:22","nodeType":"VariableDeclaration","scope":2607,"src":"2212:21:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2583,"name":"bytes","nodeType":"ElementaryTypeName","src":"2212:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2588,"initialValue":{"baseExpression":{"id":2585,"name":"_packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2552,"src":"2236:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":2587,"indexExpression":{"id":2586,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"2245:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2236:11:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"2212:35:22"},{"expression":{"id":2596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2589,"name":"packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2560,"src":"2261:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_memory_ptr_$dyn_memory_ptr","typeString":"struct InboundPacket memory[] memory"}},"id":2591,"indexExpression":{"id":2590,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"2269:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2261:10:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2594,"name":"packet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2584,"src":"2295:6:22","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":2592,"name":"PacketDecoder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2611,"src":"2274:13:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_PacketDecoder_$2611_$","typeString":"type(library PacketDecoder)"}},"id":2593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2288:6:22","memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":2548,"src":"2274:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_struct$_InboundPacket_$2486_memory_ptr_$","typeString":"function (bytes calldata) pure returns (struct InboundPacket memory)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2274:28:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"src":"2261:41:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"id":2597,"nodeType":"ExpressionStatement","src":"2261:41:22"},{"expression":{"id":2605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":2598,"name":"packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2560,"src":"2412:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_memory_ptr_$dyn_memory_ptr","typeString":"struct InboundPacket memory[] memory"}},"id":2600,"indexExpression":{"id":2599,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"2420:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2412:10:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_memory_ptr","typeString":"struct InboundPacket memory"}},"id":2601,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2423:5:22","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":2479,"src":"2412:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2602,"name":"_packetMsgValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2555,"src":"2431:16:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2604,"indexExpression":{"id":2603,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"2448:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2431:19:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2412:38:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2606,"nodeType":"ExpressionStatement","src":"2412:38:22"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2576,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"2172:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2577,"name":"_packets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2552,"src":"2176:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":2578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2185:6:22","memberName":"length","nodeType":"MemberAccess","src":"2176:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2172:19:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2608,"initializationExpression":{"assignments":[2573],"declarations":[{"constant":false,"id":2573,"mutability":"mutable","name":"i","nameLocation":"2165:1:22","nodeType":"VariableDeclaration","scope":2608,"src":"2157:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2572,"name":"uint256","nodeType":"ElementaryTypeName","src":"2157:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2575,"initialValue":{"hexValue":"30","id":2574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2169:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2157:13:22"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2193:3:22","subExpression":{"id":2580,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"2193:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2582,"nodeType":"ExpressionStatement","src":"2193:3:22"},"nodeType":"ForStatement","src":"2152:309:22"}]},"documentation":{"id":2549,"nodeType":"StructuredDocumentation","src":"1578:348:22","text":" @dev Decode multiple inbound packets from the given packet data and associated message values.\n @param _packets An array of packet data to decode.\n @param _packetMsgValues An array of associated message values for each packet.\n @return packets An array of InboundPacket structs representing the decoded packets."},"id":2610,"implemented":true,"kind":"function","modifiers":[],"name":"decode","nameLocation":"1940:6:22","nodeType":"FunctionDefinition","parameters":{"id":2556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2552,"mutability":"mutable","name":"_packets","nameLocation":"1973:8:22","nodeType":"VariableDeclaration","scope":2610,"src":"1956:25:22","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2550,"name":"bytes","nodeType":"ElementaryTypeName","src":"1956:5:22","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2551,"nodeType":"ArrayTypeName","src":"1956:7:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"},{"constant":false,"id":2555,"mutability":"mutable","name":"_packetMsgValues","nameLocation":"2008:16:22","nodeType":"VariableDeclaration","scope":2610,"src":"1991:33:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2553,"name":"uint256","nodeType":"ElementaryTypeName","src":"1991:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2554,"nodeType":"ArrayTypeName","src":"1991:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1946:84:22"},"returnParameters":{"id":2561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2560,"mutability":"mutable","name":"packets","nameLocation":"2077:7:22","nodeType":"VariableDeclaration","scope":2610,"src":"2054:30:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_memory_ptr_$dyn_memory_ptr","typeString":"struct InboundPacket[]"},"typeName":{"baseType":{"id":2558,"nodeType":"UserDefinedTypeName","pathNode":{"id":2557,"name":"InboundPacket","nameLocations":["2054:13:22"],"nodeType":"IdentifierPath","referencedDeclaration":2486,"src":"2054:13:22"},"referencedDeclaration":2486,"src":"2054:13:22","typeDescriptions":{"typeIdentifier":"t_struct$_InboundPacket_$2486_storage_ptr","typeString":"struct InboundPacket"}},"id":2559,"nodeType":"ArrayTypeName","src":"2054:15:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_InboundPacket_$2486_storage_$dyn_storage_ptr","typeString":"struct InboundPacket[]"}},"visibility":"internal"}],"src":"2053:32:22"},"scope":2611,"src":"1931:536:22","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2612,"src":"942:1527:22","usedErrors":[],"usedEvents":[]}],"src":"33:2437:22"},"id":22},"@layerzerolabs/oft-evm/contracts/OFT.sol":{"ast":{"absolutePath":"@layerzerolabs/oft-evm/contracts/OFT.sol","exportedSymbols":{"ERC20":[4764],"IOFT":[3509],"OFT":[2736],"OFTCore":[3365]},"id":2737,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2613,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:23"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":2615,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2737,"sourceUnit":4765,"src":"59:70:23","symbolAliases":[{"foreign":{"id":2614,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4764,"src":"68:5:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oft-evm/contracts/OFTCore.sol","file":"./OFTCore.sol","id":2618,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2737,"sourceUnit":3366,"src":"130:46:23","symbolAliases":[{"foreign":{"id":2616,"name":"IOFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3509,"src":"139:4:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2617,"name":"OFTCore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3365,"src":"145:7:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2620,"name":"OFTCore","nameLocations":["321:7:23"],"nodeType":"IdentifierPath","referencedDeclaration":3365,"src":"321:7:23"},"id":2621,"nodeType":"InheritanceSpecifier","src":"321:7:23"},{"baseName":{"id":2622,"name":"ERC20","nameLocations":["330:5:23"],"nodeType":"IdentifierPath","referencedDeclaration":4764,"src":"330:5:23"},"id":2623,"nodeType":"InheritanceSpecifier","src":"330:5:23"}],"canonicalName":"OFT","contractDependencies":[],"contractKind":"contract","documentation":{"id":2619,"nodeType":"StructuredDocumentation","src":"178:117:23","text":" @title OFT Contract\n @dev OFT is an ERC-20 token that extends the functionality of the OFTCore contract."},"fullyImplemented":true,"id":2736,"linearizedBaseContracts":[2736,4764,4154,4868,4842,3365,2149,2323,1371,1653,1839,1501,3980,6685,1964,2377,1902,1985,238,3509],"name":"OFT","nameLocation":"314:3:23","nodeType":"ContractDefinition","nodes":[{"body":{"id":2645,"nodeType":"Block","src":"847:2:23","statements":[]},"documentation":{"id":2624,"nodeType":"StructuredDocumentation","src":"342:300:23","text":" @dev Constructor for the OFT contract.\n @param _name The name of the OFT.\n @param _symbol The symbol of the OFT.\n @param _lzEndpoint The LayerZero endpoint address.\n @param _delegate The delegate capable of making OApp configurations inside of the endpoint."},"id":2646,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2635,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2626,"src":"787:5:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2636,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"794:7:23","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":2637,"kind":"baseConstructorSpecifier","modifierName":{"id":2634,"name":"ERC20","nameLocations":["781:5:23"],"nodeType":"IdentifierPath","referencedDeclaration":4764,"src":"781:5:23"},"nodeType":"ModifierInvocation","src":"781:21:23"},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2639,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4328,"src":"811:8:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"811:10:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2641,"name":"_lzEndpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2630,"src":"823:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2642,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"836:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2643,"kind":"baseConstructorSpecifier","modifierName":{"id":2638,"name":"OFTCore","nameLocations":["803:7:23"],"nodeType":"IdentifierPath","referencedDeclaration":3365,"src":"803:7:23"},"nodeType":"ModifierInvocation","src":"803:43:23"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2626,"mutability":"mutable","name":"_name","nameLocation":"682:5:23","nodeType":"VariableDeclaration","scope":2646,"src":"668:19:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2625,"name":"string","nodeType":"ElementaryTypeName","src":"668:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2628,"mutability":"mutable","name":"_symbol","nameLocation":"711:7:23","nodeType":"VariableDeclaration","scope":2646,"src":"697:21:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2627,"name":"string","nodeType":"ElementaryTypeName","src":"697:6:23","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2630,"mutability":"mutable","name":"_lzEndpoint","nameLocation":"736:11:23","nodeType":"VariableDeclaration","scope":2646,"src":"728:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2629,"name":"address","nodeType":"ElementaryTypeName","src":"728:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2632,"mutability":"mutable","name":"_delegate","nameLocation":"765:9:23","nodeType":"VariableDeclaration","scope":2646,"src":"757:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2631,"name":"address","nodeType":"ElementaryTypeName","src":"757:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"658:122:23"},"returnParameters":{"id":2644,"nodeType":"ParameterList","parameters":[],"src":"847:0:23"},"scope":2736,"src":"647:202:23","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3449],"body":{"id":2657,"nodeType":"Block","src":"1123:37:23","statements":[{"expression":{"arguments":[{"id":2654,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1148:4:23","typeDescriptions":{"typeIdentifier":"t_contract$_OFT_$2736","typeString":"contract OFT"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OFT_$2736","typeString":"contract OFT"}],"id":2653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1140:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2652,"name":"address","nodeType":"ElementaryTypeName","src":"1140:7:23","typeDescriptions":{}}},"id":2655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1140:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2651,"id":2656,"nodeType":"Return","src":"1133:20:23"}]},"documentation":{"id":2647,"nodeType":"StructuredDocumentation","src":"855:216:23","text":" @dev Retrieves the address of the underlying ERC20 implementation.\n @return The address of the OFT token.\n @dev In the case of OFT, address(this) and erc20 are the same contract."},"functionSelector":"fc0c546a","id":2658,"implemented":true,"kind":"function","modifiers":[],"name":"token","nameLocation":"1085:5:23","nodeType":"FunctionDefinition","parameters":{"id":2648,"nodeType":"ParameterList","parameters":[],"src":"1090:2:23"},"returnParameters":{"id":2651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2650,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2658,"src":"1114:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2649,"name":"address","nodeType":"ElementaryTypeName","src":"1114:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1113:9:23"},"scope":2736,"src":"1076:84:23","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[3455],"body":{"id":2666,"nodeType":"Block","src":"1525:29:23","statements":[{"expression":{"hexValue":"66616c7365","id":2664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1542:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":2663,"id":2665,"nodeType":"Return","src":"1535:12:23"}]},"documentation":{"id":2659,"nodeType":"StructuredDocumentation","src":"1166:289:23","text":" @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\n @return requiresApproval Needs approval of the underlying token implementation.\n @dev In the case of OFT where the contract IS the token, approval is NOT required."},"functionSelector":"9f68b964","id":2667,"implemented":true,"kind":"function","modifiers":[],"name":"approvalRequired","nameLocation":"1469:16:23","nodeType":"FunctionDefinition","parameters":{"id":2660,"nodeType":"ParameterList","parameters":[],"src":"1485:2:23"},"returnParameters":{"id":2663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2662,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2667,"src":"1519:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2661,"name":"bool","nodeType":"ElementaryTypeName","src":"1519:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1518:6:23"},"scope":2736,"src":"1460:94:23","stateMutability":"pure","virtual":true,"visibility":"external"},{"baseFunctions":[3352],"body":{"id":2699,"nodeType":"Block","src":"2246:358:23","statements":[{"expression":{"id":2692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2684,"name":"amountSentLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2680,"src":"2257:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2685,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2682,"src":"2271:16:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2686,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2256:32:23","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2688,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2672,"src":"2302:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2689,"name":"_minAmountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2674,"src":"2313:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2690,"name":"_dstEid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2676,"src":"2327:7:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":2687,"name":"_debitView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3336,"src":"2291:10:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint32_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256,uint32) view returns (uint256,uint256)"}},"id":2691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2291:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"2256:79:23","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2693,"nodeType":"ExpressionStatement","src":"2256:79:23"},{"expression":{"arguments":[{"id":2695,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2670,"src":"2577:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2696,"name":"amountSentLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2680,"src":"2584:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2694,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4637,"src":"2571:5:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2571:26:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2698,"nodeType":"ExpressionStatement","src":"2571:26:23"}]},"documentation":{"id":2668,"nodeType":"StructuredDocumentation","src":"1560:472:23","text":" @dev Burns tokens from the sender's specified balance.\n @param _from The address to debit the tokens from.\n @param _amountLD The amount of tokens to send in local decimals.\n @param _minAmountLD The minimum amount to send in local decimals.\n @param _dstEid The destination chain ID.\n @return amountSentLD The amount sent in local decimals.\n @return amountReceivedLD The amount received in local decimals on the remote."},"id":2700,"implemented":true,"kind":"function","modifiers":[],"name":"_debit","nameLocation":"2046:6:23","nodeType":"FunctionDefinition","overrides":{"id":2678,"nodeType":"OverrideSpecifier","overrides":[],"src":"2180:8:23"},"parameters":{"id":2677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2670,"mutability":"mutable","name":"_from","nameLocation":"2070:5:23","nodeType":"VariableDeclaration","scope":2700,"src":"2062:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2669,"name":"address","nodeType":"ElementaryTypeName","src":"2062:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2672,"mutability":"mutable","name":"_amountLD","nameLocation":"2093:9:23","nodeType":"VariableDeclaration","scope":2700,"src":"2085:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2671,"name":"uint256","nodeType":"ElementaryTypeName","src":"2085:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2674,"mutability":"mutable","name":"_minAmountLD","nameLocation":"2120:12:23","nodeType":"VariableDeclaration","scope":2700,"src":"2112:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2673,"name":"uint256","nodeType":"ElementaryTypeName","src":"2112:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2676,"mutability":"mutable","name":"_dstEid","nameLocation":"2149:7:23","nodeType":"VariableDeclaration","scope":2700,"src":"2142:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2675,"name":"uint32","nodeType":"ElementaryTypeName","src":"2142:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2052:110:23"},"returnParameters":{"id":2683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2680,"mutability":"mutable","name":"amountSentLD","nameLocation":"2206:12:23","nodeType":"VariableDeclaration","scope":2700,"src":"2198:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2679,"name":"uint256","nodeType":"ElementaryTypeName","src":"2198:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2682,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"2228:16:23","nodeType":"VariableDeclaration","scope":2700,"src":"2220:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2681,"name":"uint256","nodeType":"ElementaryTypeName","src":"2220:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2197:48:23"},"scope":2736,"src":"2037:567:23","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[3364],"body":{"id":2734,"nodeType":"Block","src":"3099:302:23","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2713,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2703,"src":"3113:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"307830","id":2716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3128:3:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3120:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2714,"name":"address","nodeType":"ElementaryTypeName","src":"3120:7:23","typeDescriptions":{}}},"id":2717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3120:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3113:19:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2726,"nodeType":"IfStatement","src":"3109:46:23","trueBody":{"expression":{"id":2724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2719,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2703,"src":"3134:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"307864656164","id":2722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3148:6:23","typeDescriptions":{"typeIdentifier":"t_rational_57005_by_1","typeString":"int_const 57005"},"value":"0xdead"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57005_by_1","typeString":"int_const 57005"}],"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3140:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2720,"name":"address","nodeType":"ElementaryTypeName","src":"3140:7:23","typeDescriptions":{}}},"id":2723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3140:15:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3134:21:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2725,"nodeType":"ExpressionStatement","src":"3134:21:23"}},{"expression":{"arguments":[{"id":2728,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2703,"src":"3257:3:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2729,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2705,"src":"3262:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2727,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4604,"src":"3251:5:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3251:21:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2731,"nodeType":"ExpressionStatement","src":"3251:21:23"},{"expression":{"id":2732,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2705,"src":"3385:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2712,"id":2733,"nodeType":"Return","src":"3378:16:23"}]},"documentation":{"id":2701,"nodeType":"StructuredDocumentation","src":"2610:324:23","text":" @dev Credits tokens to the specified address.\n @param _to The address to credit the tokens to.\n @param _amountLD The amount of tokens to credit in local decimals.\n @dev _srcEid The source chain ID.\n @return amountReceivedLD The amount of tokens ACTUALLY received in local decimals."},"id":2735,"implemented":true,"kind":"function","modifiers":[],"name":"_credit","nameLocation":"2948:7:23","nodeType":"FunctionDefinition","overrides":{"id":2709,"nodeType":"OverrideSpecifier","overrides":[],"src":"3055:8:23"},"parameters":{"id":2708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2703,"mutability":"mutable","name":"_to","nameLocation":"2973:3:23","nodeType":"VariableDeclaration","scope":2735,"src":"2965:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2702,"name":"address","nodeType":"ElementaryTypeName","src":"2965:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2705,"mutability":"mutable","name":"_amountLD","nameLocation":"2994:9:23","nodeType":"VariableDeclaration","scope":2735,"src":"2986:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2704,"name":"uint256","nodeType":"ElementaryTypeName","src":"2986:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2707,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2735,"src":"3013:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":2706,"name":"uint32","nodeType":"ElementaryTypeName","src":"3013:6:23","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2955:82:23"},"returnParameters":{"id":2712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2711,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"3081:16:23","nodeType":"VariableDeclaration","scope":2735,"src":"3073:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2710,"name":"uint256","nodeType":"ElementaryTypeName","src":"3073:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3072:26:23"},"scope":2736,"src":"2939:462:23","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":2737,"src":"296:3107:23","usedErrors":[1517,1675,1677,1850,1854,1856,1858,1937,2333,2335,3407,3413,3846,3851,4124,4129,4134,4143,4148,4153,4880],"usedEvents":[1864,1943,2340,2790,3425,3435,3857,4776,4785]}],"src":"33:3371:23"},"id":23},"@layerzerolabs/oft-evm/contracts/OFTCore.sol":{"ast":{"absolutePath":"@layerzerolabs/oft-evm/contracts/OFTCore.sol","exportedSymbols":{"IERC20":[4842],"IOAppMsgInspector":[1922],"IOFT":[3509],"MessagingFee":[33],"MessagingReceipt":[28],"OApp":[1371],"OAppOptionsType3":[2149],"OAppPreCrimeSimulator":[2323],"OFTComposeMsgCodec":[3678],"OFTCore":[3365],"OFTFeeDetail":[3404],"OFTLimit":[3392],"OFTMsgCodec":[3832],"OFTReceipt":[3398],"Origin":[40],"SendParam":[3386]},"id":3366,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2738,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:24"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":2740,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":4843,"src":"59:72:24","symbolAliases":[{"foreign":{"id":2739,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4842,"src":"68:6:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol","file":"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol","id":2743,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":1372,"src":"133:79:24","symbolAliases":[{"foreign":{"id":2741,"name":"OApp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1371,"src":"142:4:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2742,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"148:6:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol","file":"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol","id":2745,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":2150,"src":"213:100:24","symbolAliases":[{"foreign":{"id":2744,"name":"OAppOptionsType3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"222:16:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol","file":"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol","id":2747,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":1923,"src":"314:108:24","symbolAliases":[{"foreign":{"id":2746,"name":"IOAppMsgInspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"323:17:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol","file":"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol","id":2749,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":2324,"src":"424:109:24","symbolAliases":[{"foreign":{"id":2748,"name":"OAppPreCrimeSimulator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2323,"src":"433:21:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol","file":"./interfaces/IOFT.sol","id":2757,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":3510,"src":"535:124:24","symbolAliases":[{"foreign":{"id":2750,"name":"IOFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3509,"src":"544:4:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2751,"name":"SendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3386,"src":"550:9:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2752,"name":"OFTLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3392,"src":"561:8:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2753,"name":"OFTReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3398,"src":"571:10:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2754,"name":"OFTFeeDetail","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3404,"src":"583:12:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2755,"name":"MessagingReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"597:16:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2756,"name":"MessagingFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"615:12:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol","file":"./libs/OFTMsgCodec.sol","id":2759,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":3833,"src":"660:53:24","symbolAliases":[{"foreign":{"id":2758,"name":"OFTMsgCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3832,"src":"669:11:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol","file":"./libs/OFTComposeMsgCodec.sol","id":2761,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3366,"sourceUnit":3679,"src":"714:67:24","symbolAliases":[{"foreign":{"id":2760,"name":"OFTComposeMsgCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3678,"src":"723:18:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2763,"name":"IOFT","nameLocations":["894:4:24"],"nodeType":"IdentifierPath","referencedDeclaration":3509,"src":"894:4:24"},"id":2764,"nodeType":"InheritanceSpecifier","src":"894:4:24"},{"baseName":{"id":2765,"name":"OApp","nameLocations":["900:4:24"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"900:4:24"},"id":2766,"nodeType":"InheritanceSpecifier","src":"900:4:24"},{"baseName":{"id":2767,"name":"OAppPreCrimeSimulator","nameLocations":["906:21:24"],"nodeType":"IdentifierPath","referencedDeclaration":2323,"src":"906:21:24"},"id":2768,"nodeType":"InheritanceSpecifier","src":"906:21:24"},{"baseName":{"id":2769,"name":"OAppOptionsType3","nameLocations":["929:16:24"],"nodeType":"IdentifierPath","referencedDeclaration":2149,"src":"929:16:24"},"id":2770,"nodeType":"InheritanceSpecifier","src":"929:16:24"}],"canonicalName":"OFTCore","contractDependencies":[],"contractKind":"contract","documentation":{"id":2762,"nodeType":"StructuredDocumentation","src":"783:81:24","text":" @title OFTCore\n @dev Abstract contract for the OftChain (OFT) token."},"fullyImplemented":false,"id":3365,"linearizedBaseContracts":[3365,2149,2323,1371,1653,1839,1501,3980,6685,1964,2377,1902,1985,238,3509],"name":"OFTCore","nameLocation":"883:7:24","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2773,"libraryName":{"id":2771,"name":"OFTMsgCodec","nameLocations":["958:11:24"],"nodeType":"IdentifierPath","referencedDeclaration":3832,"src":"958:11:24"},"nodeType":"UsingForDirective","src":"952:28:24","typeName":{"id":2772,"name":"bytes","nodeType":"ElementaryTypeName","src":"974:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"global":false,"id":2776,"libraryName":{"id":2774,"name":"OFTMsgCodec","nameLocations":["991:11:24"],"nodeType":"IdentifierPath","referencedDeclaration":3832,"src":"991:11:24"},"nodeType":"UsingForDirective","src":"985:30:24","typeName":{"id":2775,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1007:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"constant":false,"functionSelector":"963efcaa","id":2778,"mutability":"immutable","name":"decimalConversionRate","nameLocation":"1886:21:24","nodeType":"VariableDeclaration","scope":3365,"src":"1861:46:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2777,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"functionSelector":"1f5e1334","id":2781,"mutability":"constant","name":"SEND","nameLocation":"2190:4:24","nodeType":"VariableDeclaration","scope":3365,"src":"2167:31:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2779,"name":"uint16","nodeType":"ElementaryTypeName","src":"2167:6:24","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"31","id":2780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2197:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"public"},{"constant":true,"functionSelector":"134d4f25","id":2784,"mutability":"constant","name":"SEND_AND_CALL","nameLocation":"2227:13:24","nodeType":"VariableDeclaration","scope":3365,"src":"2204:40:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2782,"name":"uint16","nodeType":"ElementaryTypeName","src":"2204:6:24","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"32","id":2783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2243:1:24","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"public"},{"constant":false,"functionSelector":"111ecdad","id":2786,"mutability":"mutable","name":"msgInspector","nameLocation":"2345:12:24","nodeType":"VariableDeclaration","scope":3365,"src":"2330:27:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2785,"name":"address","nodeType":"ElementaryTypeName","src":"2330:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"anonymous":false,"eventSelector":"f0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197","id":2790,"name":"MsgInspectorSet","nameLocation":"2369:15:24","nodeType":"EventDefinition","parameters":{"id":2789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2788,"indexed":false,"mutability":"mutable","name":"inspector","nameLocation":"2393:9:24","nodeType":"VariableDeclaration","scope":2790,"src":"2385:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2787,"name":"address","nodeType":"ElementaryTypeName","src":"2385:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2384:19:24"},"src":"2363:41:24"},{"body":{"id":2822,"nodeType":"Block","src":"2800:160:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2804,"name":"_localDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"2814:14:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2805,"name":"sharedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2848,"src":"2831:14:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":2806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2831:16:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2814:33:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2811,"nodeType":"IfStatement","src":"2810:68:24","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2808,"name":"InvalidLocalDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3407,"src":"2856:20:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2856:22:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2810,"nodeType":"RevertStatement","src":"2849:29:24"}},{"expression":{"id":2820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2812,"name":"decimalConversionRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2778,"src":"2888:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2912:2:24","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2814,"name":"_localDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"2919:14:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2815,"name":"sharedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2848,"src":"2936:14:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":2816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2936:16:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2919:33:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2818,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2918:35:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2912:41:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2888:65:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2821,"nodeType":"ExpressionStatement","src":"2888:65:24"}]},"documentation":{"id":2791,"nodeType":"StructuredDocumentation","src":"2410:286:24","text":" @dev Constructor.\n @param _localDecimals The decimals of the token on the local chain (this chain).\n @param _endpoint The address of the LayerZero endpoint.\n @param _delegate The delegate capable of making OApp configurations inside of the endpoint."},"id":2823,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2800,"name":"_endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2795,"src":"2778:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2801,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"2789:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2802,"kind":"baseConstructorSpecifier","modifierName":{"id":2799,"name":"OApp","nameLocations":["2773:4:24"],"nodeType":"IdentifierPath","referencedDeclaration":1371,"src":"2773:4:24"},"nodeType":"ModifierInvocation","src":"2773:26:24"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2793,"mutability":"mutable","name":"_localDecimals","nameLocation":"2719:14:24","nodeType":"VariableDeclaration","scope":2823,"src":"2713:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2792,"name":"uint8","nodeType":"ElementaryTypeName","src":"2713:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2795,"mutability":"mutable","name":"_endpoint","nameLocation":"2743:9:24","nodeType":"VariableDeclaration","scope":2823,"src":"2735:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2794,"name":"address","nodeType":"ElementaryTypeName","src":"2735:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2797,"mutability":"mutable","name":"_delegate","nameLocation":"2762:9:24","nodeType":"VariableDeclaration","scope":2823,"src":"2754:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2796,"name":"address","nodeType":"ElementaryTypeName","src":"2754:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2712:60:24"},"returnParameters":{"id":2803,"nodeType":"ParameterList","parameters":[],"src":"2800:0:24"},"scope":3365,"src":"2701:259:24","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3443],"body":{"id":2838,"nodeType":"Block","src":"3564:51:24","statements":[{"expression":{"components":[{"expression":{"arguments":[{"id":2832,"name":"IOFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3509,"src":"3587:4:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOFT_$3509_$","typeString":"type(contract IOFT)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IOFT_$3509_$","typeString":"type(contract IOFT)"}],"id":2831,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3582:4:24","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3582:10:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IOFT_$3509","typeString":"type(contract IOFT)"}},"id":2834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3593:11:24","memberName":"interfaceId","nodeType":"MemberAccess","src":"3582:22:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"hexValue":"31","id":2835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3606:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"id":2836,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3581:27:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes4_$_t_rational_1_by_1_$","typeString":"tuple(bytes4,int_const 1)"}},"functionReturnParameters":2830,"id":2837,"nodeType":"Return","src":"3574:34:24"}]},"documentation":{"id":2824,"nodeType":"StructuredDocumentation","src":"2966:504:24","text":" @notice Retrieves interfaceID and the version of the OFT.\n @return interfaceId The interface ID.\n @return version The version.\n @dev interfaceId: This specific interface ID is '0x02e49c2c'.\n @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\n @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\n ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)"},"functionSelector":"156a0d0f","id":2839,"implemented":true,"kind":"function","modifiers":[],"name":"oftVersion","nameLocation":"3484:10:24","nodeType":"FunctionDefinition","parameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"3494:2:24"},"returnParameters":{"id":2830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2827,"mutability":"mutable","name":"interfaceId","nameLocation":"3535:11:24","nodeType":"VariableDeclaration","scope":2839,"src":"3528:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2826,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3528:6:24","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":2829,"mutability":"mutable","name":"version","nameLocation":"3555:7:24","nodeType":"VariableDeclaration","scope":2839,"src":"3548:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":2828,"name":"uint64","nodeType":"ElementaryTypeName","src":"3548:6:24","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3527:36:24"},"scope":3365,"src":"3475:140:24","stateMutability":"pure","virtual":true,"visibility":"external"},{"baseFunctions":[3461],"body":{"id":2847,"nodeType":"Block","src":"4284:25:24","statements":[{"expression":{"hexValue":"36","id":2845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4301:1:24","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"functionReturnParameters":2844,"id":2846,"nodeType":"Return","src":"4294:8:24"}]},"documentation":{"id":2840,"nodeType":"StructuredDocumentation","src":"3621:596:24","text":" @dev Retrieves the shared decimals of the OFT.\n @return The shared decimals of the OFT.\n @dev Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap\n Lowest common decimal denominator between chains.\n Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64).\n For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller.\n ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615"},"functionSelector":"857749b0","id":2848,"implemented":true,"kind":"function","modifiers":[],"name":"sharedDecimals","nameLocation":"4231:14:24","nodeType":"FunctionDefinition","parameters":{"id":2841,"nodeType":"ParameterList","parameters":[],"src":"4245:2:24"},"returnParameters":{"id":2844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2843,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2848,"src":"4277:5:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2842,"name":"uint8","nodeType":"ElementaryTypeName","src":"4277:5:24","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4276:7:24"},"scope":3365,"src":"4222:87:24","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2864,"nodeType":"Block","src":"4730:90:24","statements":[{"expression":{"id":2858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2856,"name":"msgInspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"4740:12:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2857,"name":"_msgInspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2851,"src":"4755:13:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4740:28:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2859,"nodeType":"ExpressionStatement","src":"4740:28:24"},{"eventCall":{"arguments":[{"id":2861,"name":"_msgInspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2851,"src":"4799:13:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2860,"name":"MsgInspectorSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2790,"src":"4783:15:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4783:30:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2863,"nodeType":"EmitStatement","src":"4778:35:24"}]},"documentation":{"id":2849,"nodeType":"StructuredDocumentation","src":"4315:337:24","text":" @dev Sets the message inspector address for the OFT.\n @param _msgInspector The address of the message inspector.\n @dev This is an optional contract that can be used to inspect both 'message' and 'options'.\n @dev Set it to address(0) to disable it, or set it to a contract address to enable it."},"functionSelector":"6fc1b31e","id":2865,"implemented":true,"kind":"function","modifiers":[{"id":2854,"kind":"modifierInvocation","modifierName":{"id":2853,"name":"onlyOwner","nameLocations":["4720:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"4720:9:24"},"nodeType":"ModifierInvocation","src":"4720:9:24"}],"name":"setMsgInspector","nameLocation":"4666:15:24","nodeType":"FunctionDefinition","parameters":{"id":2852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2851,"mutability":"mutable","name":"_msgInspector","nameLocation":"4690:13:24","nodeType":"VariableDeclaration","scope":2865,"src":"4682:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2850,"name":"address","nodeType":"ElementaryTypeName","src":"4682:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4681:23:24"},"returnParameters":{"id":2855,"nodeType":"ParameterList","parameters":[],"src":"4730:0:24"},"scope":3365,"src":"4657:163:24","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[3478],"body":{"id":2932,"nodeType":"Block","src":"5399:1053:24","statements":[{"assignments":[2883],"declarations":[{"constant":false,"id":2883,"mutability":"mutable","name":"minAmountLD","nameLocation":"5417:11:24","nodeType":"VariableDeclaration","scope":2932,"src":"5409:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2882,"name":"uint256","nodeType":"ElementaryTypeName","src":"5409:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2885,"initialValue":{"hexValue":"30","id":2884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5431:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5409:23:24"},{"assignments":[2887],"declarations":[{"constant":false,"id":2887,"mutability":"mutable","name":"maxAmountLD","nameLocation":"5491:11:24","nodeType":"VariableDeclaration","scope":2932,"src":"5483:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2886,"name":"uint256","nodeType":"ElementaryTypeName","src":"5483:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2895,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2889,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5512:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_OFTCore_$3365","typeString":"contract OFTCore"}},"id":2890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5517:5:24","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":3449,"src":"5512:10:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5512:12:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2888,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4842,"src":"5505:6:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$4842_$","typeString":"type(contract IERC20)"}},"id":2892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5505:20:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"id":2893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5526:11:24","memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":4791,"src":"5505:32:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":2894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5505:34:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5483:56:24"},{"expression":{"id":2901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2896,"name":"oftLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2873,"src":"5590:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$3392_memory_ptr","typeString":"struct OFTLimit memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2898,"name":"minAmountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2883,"src":"5610:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2899,"name":"maxAmountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2887,"src":"5623:11:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2897,"name":"OFTLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3392,"src":"5601:8:24","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_OFTLimit_$3392_storage_ptr_$","typeString":"type(struct OFTLimit storage pointer)"}},"id":2900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5601:34:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$3392_memory_ptr","typeString":"struct OFTLimit memory"}},"src":"5590:45:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$3392_memory_ptr","typeString":"struct OFTLimit memory"}},"id":2902,"nodeType":"ExpressionStatement","src":"5590:45:24"},{"expression":{"id":2910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2903,"name":"oftFeeDetails","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2877,"src":"5736:13:24","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr","typeString":"struct OFTFeeDetail memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"30","id":2908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5771:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5752:18:24","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct OFTFeeDetail memory[] memory)"},"typeName":{"baseType":{"id":2905,"nodeType":"UserDefinedTypeName","pathNode":{"id":2904,"name":"OFTFeeDetail","nameLocations":["5756:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":3404,"src":"5756:12:24"},"referencedDeclaration":3404,"src":"5756:12:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTFeeDetail_$3404_storage_ptr","typeString":"struct OFTFeeDetail"}},"id":2906,"nodeType":"ArrayTypeName","src":"5756:14:24","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_storage_$dyn_storage_ptr","typeString":"struct OFTFeeDetail[]"}}},"id":2909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5752:21:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr","typeString":"struct OFTFeeDetail memory[] memory"}},"src":"5736:37:24","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr","typeString":"struct OFTFeeDetail memory[] memory"}},"id":2911,"nodeType":"ExpressionStatement","src":"5736:37:24"},{"assignments":[2913,2915],"declarations":[{"constant":false,"id":2913,"mutability":"mutable","name":"amountSentLD","nameLocation":"6218:12:24","nodeType":"VariableDeclaration","scope":2932,"src":"6210:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2912,"name":"uint256","nodeType":"ElementaryTypeName","src":"6210:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2915,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"6240:16:24","nodeType":"VariableDeclaration","scope":2932,"src":"6232:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2914,"name":"uint256","nodeType":"ElementaryTypeName","src":"6232:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2924,"initialValue":{"arguments":[{"expression":{"id":2917,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"6284:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":2918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6295:8:24","memberName":"amountLD","nodeType":"MemberAccess","referencedDeclaration":3377,"src":"6284:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2919,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"6317:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":2920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6328:11:24","memberName":"minAmountLD","nodeType":"MemberAccess","referencedDeclaration":3379,"src":"6317:22:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2921,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2869,"src":"6353:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":2922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6364:6:24","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":3373,"src":"6353:17:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":2916,"name":"_debitView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3336,"src":"6260:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint32_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256,uint32) view returns (uint256,uint256)"}},"id":2923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6260:120:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6209:171:24"},{"expression":{"id":2930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2925,"name":"oftReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2880,"src":"6390:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2927,"name":"amountSentLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2913,"src":"6414:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2928,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2915,"src":"6428:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2926,"name":"OFTReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3398,"src":"6403:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_OFTReceipt_$3398_storage_ptr_$","typeString":"type(struct OFTReceipt storage pointer)"}},"id":2929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6403:42:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt memory"}},"src":"6390:55:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt memory"}},"id":2931,"nodeType":"ExpressionStatement","src":"6390:55:24"}]},"documentation":{"id":2866,"nodeType":"StructuredDocumentation","src":"4826:345:24","text":" @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\n @param _sendParam The parameters for the send operation.\n @return oftLimit The OFT limit information.\n @return oftFeeDetails The details of OFT fees.\n @return oftReceipt The OFT receipt information."},"functionSelector":"0d35b415","id":2933,"implemented":true,"kind":"function","modifiers":[],"name":"quoteOFT","nameLocation":"5185:8:24","nodeType":"FunctionDefinition","parameters":{"id":2870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2869,"mutability":"mutable","name":"_sendParam","nameLocation":"5222:10:24","nodeType":"VariableDeclaration","scope":2933,"src":"5203:29:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":2868,"nodeType":"UserDefinedTypeName","pathNode":{"id":2867,"name":"SendParam","nameLocations":["5203:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"5203:9:24"},"referencedDeclaration":3386,"src":"5203:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"}],"src":"5193:45:24"},"returnParameters":{"id":2881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2873,"mutability":"mutable","name":"oftLimit","nameLocation":"5318:8:24","nodeType":"VariableDeclaration","scope":2933,"src":"5302:24:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$3392_memory_ptr","typeString":"struct OFTLimit"},"typeName":{"id":2872,"nodeType":"UserDefinedTypeName","pathNode":{"id":2871,"name":"OFTLimit","nameLocations":["5302:8:24"],"nodeType":"IdentifierPath","referencedDeclaration":3392,"src":"5302:8:24"},"referencedDeclaration":3392,"src":"5302:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$3392_storage_ptr","typeString":"struct OFTLimit"}},"visibility":"internal"},{"constant":false,"id":2877,"mutability":"mutable","name":"oftFeeDetails","nameLocation":"5350:13:24","nodeType":"VariableDeclaration","scope":2933,"src":"5328:35:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr","typeString":"struct OFTFeeDetail[]"},"typeName":{"baseType":{"id":2875,"nodeType":"UserDefinedTypeName","pathNode":{"id":2874,"name":"OFTFeeDetail","nameLocations":["5328:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":3404,"src":"5328:12:24"},"referencedDeclaration":3404,"src":"5328:12:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTFeeDetail_$3404_storage_ptr","typeString":"struct OFTFeeDetail"}},"id":2876,"nodeType":"ArrayTypeName","src":"5328:14:24","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_storage_$dyn_storage_ptr","typeString":"struct OFTFeeDetail[]"}},"visibility":"internal"},{"constant":false,"id":2880,"mutability":"mutable","name":"oftReceipt","nameLocation":"5383:10:24","nodeType":"VariableDeclaration","scope":2933,"src":"5365:28:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt"},"typeName":{"id":2879,"nodeType":"UserDefinedTypeName","pathNode":{"id":2878,"name":"OFTReceipt","nameLocations":["5365:10:24"],"nodeType":"IdentifierPath","referencedDeclaration":3398,"src":"5365:10:24"},"referencedDeclaration":3398,"src":"5365:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_storage_ptr","typeString":"struct OFTReceipt"}},"visibility":"internal"}],"src":"5301:93:24"},"scope":3365,"src":"5176:1276:24","stateMutability":"view","virtual":true,"visibility":"external"},{"baseFunctions":[3490],"body":{"id":2973,"nodeType":"Block","src":"7054:623:24","statements":[{"assignments":[null,2946],"declarations":[null,{"constant":false,"id":2946,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"7245:16:24","nodeType":"VariableDeclaration","scope":2973,"src":"7237:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2945,"name":"uint256","nodeType":"ElementaryTypeName","src":"7237:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2955,"initialValue":{"arguments":[{"expression":{"id":2948,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2937,"src":"7276:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":2949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7287:8:24","memberName":"amountLD","nodeType":"MemberAccess","referencedDeclaration":3377,"src":"7276:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2950,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2937,"src":"7297:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":2951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7308:11:24","memberName":"minAmountLD","nodeType":"MemberAccess","referencedDeclaration":3379,"src":"7297:22:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2952,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2937,"src":"7321:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":2953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7332:6:24","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":3373,"src":"7321:17:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":2947,"name":"_debitView","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3336,"src":"7265:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint32_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256,uint32) view returns (uint256,uint256)"}},"id":2954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7265:74:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7234:105:24"},{"assignments":[2957,2959],"declarations":[{"constant":false,"id":2957,"mutability":"mutable","name":"message","nameLocation":"7441:7:24","nodeType":"VariableDeclaration","scope":2973,"src":"7428:20:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2956,"name":"bytes","nodeType":"ElementaryTypeName","src":"7428:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2959,"mutability":"mutable","name":"options","nameLocation":"7463:7:24","nodeType":"VariableDeclaration","scope":2973,"src":"7450:20:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2958,"name":"bytes","nodeType":"ElementaryTypeName","src":"7450:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2964,"initialValue":{"arguments":[{"id":2961,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2937,"src":"7494:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},{"id":2962,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2946,"src":"7506:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2960,"name":"_buildMsgAndOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"7474:19:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_SendParam_$3386_calldata_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (struct SendParam calldata,uint256) view returns (bytes memory,bytes memory)"}},"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7474:49:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7427:96:24"},{"expression":{"arguments":[{"expression":{"id":2966,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2937,"src":"7619:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":2967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7630:6:24","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":3373,"src":"7619:17:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":2968,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2957,"src":"7638:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2969,"name":"options","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"7647:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2970,"name":"_payInLzToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2939,"src":"7656:13:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2965,"name":"_quote","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1726,"src":"7612:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_struct$_MessagingFee_$33_memory_ptr_$","typeString":"function (uint32,bytes memory,bytes memory,bool) view returns (struct MessagingFee memory)"}},"id":2971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7612:58:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee memory"}},"functionReturnParameters":2944,"id":2972,"nodeType":"Return","src":"7605:65:24"}]},"documentation":{"id":2934,"nodeType":"StructuredDocumentation","src":"6458:440:24","text":" @notice Provides a quote for the send() operation.\n @param _sendParam The parameters for the send() operation.\n @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\n @return msgFee The calculated LayerZero messaging fee from the send() operation.\n @dev MessagingFee: LayerZero msg fee\n  - nativeFee: The native fee.\n  - lzTokenFee: The lzToken fee."},"functionSelector":"3b6f743b","id":2974,"implemented":true,"kind":"function","modifiers":[],"name":"quoteSend","nameLocation":"6912:9:24","nodeType":"FunctionDefinition","parameters":{"id":2940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2937,"mutability":"mutable","name":"_sendParam","nameLocation":"6950:10:24","nodeType":"VariableDeclaration","scope":2974,"src":"6931:29:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":2936,"nodeType":"UserDefinedTypeName","pathNode":{"id":2935,"name":"SendParam","nameLocations":["6931:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"6931:9:24"},"referencedDeclaration":3386,"src":"6931:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"},{"constant":false,"id":2939,"mutability":"mutable","name":"_payInLzToken","nameLocation":"6975:13:24","nodeType":"VariableDeclaration","scope":2974,"src":"6970:18:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2938,"name":"bool","nodeType":"ElementaryTypeName","src":"6970:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6921:73:24"},"returnParameters":{"id":2944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2943,"mutability":"mutable","name":"msgFee","nameLocation":"7046:6:24","nodeType":"VariableDeclaration","scope":2974,"src":"7026:26:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":2942,"nodeType":"UserDefinedTypeName","pathNode":{"id":2941,"name":"MessagingFee","nameLocations":["7026:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"7026:12:24"},"referencedDeclaration":33,"src":"7026:12:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"}],"src":"7025:28:24"},"scope":3365,"src":"6903:774:24","stateMutability":"view","virtual":true,"visibility":"external"},{"baseFunctions":[3508],"body":{"id":2998,"nodeType":"Block","src":"8592:63:24","statements":[{"expression":{"arguments":[{"id":2993,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2978,"src":"8615:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},{"id":2994,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2981,"src":"8627:4:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_calldata_ptr","typeString":"struct MessagingFee calldata"}},{"id":2995,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2983,"src":"8633:14:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"},{"typeIdentifier":"t_struct$_MessagingFee_$33_calldata_ptr","typeString":"struct MessagingFee calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2992,"name":"_send","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3071,"src":"8609:5:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SendParam_$3386_calldata_ptr_$_t_struct$_MessagingFee_$33_calldata_ptr_$_t_address_$returns$_t_struct$_MessagingReceipt_$28_memory_ptr_$_t_struct$_OFTReceipt_$3398_memory_ptr_$","typeString":"function (struct SendParam calldata,struct MessagingFee calldata,address) returns (struct MessagingReceipt memory,struct OFTReceipt memory)"}},"id":2996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8609:39:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_struct$_MessagingReceipt_$28_memory_ptr_$_t_struct$_OFTReceipt_$3398_memory_ptr_$","typeString":"tuple(struct MessagingReceipt memory,struct OFTReceipt memory)"}},"functionReturnParameters":2991,"id":2997,"nodeType":"Return","src":"8602:46:24"}]},"documentation":{"id":2975,"nodeType":"StructuredDocumentation","src":"7683:677:24","text":" @dev Executes the send operation.\n @param _sendParam The parameters for the send operation.\n @param _fee The calculated fee for the send() operation.\n      - nativeFee: The native fee.\n      - lzTokenFee: The lzToken fee.\n @param _refundAddress The address to receive any excess funds.\n @return msgReceipt The receipt for the send operation.\n @return oftReceipt The OFT receipt information.\n @dev MessagingReceipt: LayerZero msg receipt\n  - guid: The unique identifier for the sent message.\n  - nonce: The nonce of the sent message.\n  - fee: The LayerZero fee incurred for the message."},"functionSelector":"c7c7f5b3","id":2999,"implemented":true,"kind":"function","modifiers":[],"name":"send","nameLocation":"8374:4:24","nodeType":"FunctionDefinition","parameters":{"id":2984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2978,"mutability":"mutable","name":"_sendParam","nameLocation":"8407:10:24","nodeType":"VariableDeclaration","scope":2999,"src":"8388:29:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":2977,"nodeType":"UserDefinedTypeName","pathNode":{"id":2976,"name":"SendParam","nameLocations":["8388:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"8388:9:24"},"referencedDeclaration":3386,"src":"8388:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"},{"constant":false,"id":2981,"mutability":"mutable","name":"_fee","nameLocation":"8449:4:24","nodeType":"VariableDeclaration","scope":2999,"src":"8427:26:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_calldata_ptr","typeString":"struct MessagingFee"},"typeName":{"id":2980,"nodeType":"UserDefinedTypeName","pathNode":{"id":2979,"name":"MessagingFee","nameLocations":["8427:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"8427:12:24"},"referencedDeclaration":33,"src":"8427:12:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"},{"constant":false,"id":2983,"mutability":"mutable","name":"_refundAddress","nameLocation":"8471:14:24","nodeType":"VariableDeclaration","scope":2999,"src":"8463:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2982,"name":"address","nodeType":"ElementaryTypeName","src":"8463:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8378:113:24"},"returnParameters":{"id":2991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2987,"mutability":"mutable","name":"msgReceipt","nameLocation":"8550:10:24","nodeType":"VariableDeclaration","scope":2999,"src":"8526:34:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt"},"typeName":{"id":2986,"nodeType":"UserDefinedTypeName","pathNode":{"id":2985,"name":"MessagingReceipt","nameLocations":["8526:16:24"],"nodeType":"IdentifierPath","referencedDeclaration":28,"src":"8526:16:24"},"referencedDeclaration":28,"src":"8526:16:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_storage_ptr","typeString":"struct MessagingReceipt"}},"visibility":"internal"},{"constant":false,"id":2990,"mutability":"mutable","name":"oftReceipt","nameLocation":"8580:10:24","nodeType":"VariableDeclaration","scope":2999,"src":"8562:28:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt"},"typeName":{"id":2989,"nodeType":"UserDefinedTypeName","pathNode":{"id":2988,"name":"OFTReceipt","nameLocations":["8562:10:24"],"nodeType":"IdentifierPath","referencedDeclaration":3398,"src":"8562:10:24"},"referencedDeclaration":3398,"src":"8562:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_storage_ptr","typeString":"struct OFTReceipt"}},"visibility":"internal"}],"src":"8525:66:24"},"scope":3365,"src":"8365:290:24","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":3070,"nodeType":"Block","src":"9583:1113:24","statements":[{"assignments":[3018,3020],"declarations":[{"constant":false,"id":3018,"mutability":"mutable","name":"amountSentLD","nameLocation":"9923:12:24","nodeType":"VariableDeclaration","scope":3070,"src":"9915:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3017,"name":"uint256","nodeType":"ElementaryTypeName","src":"9915:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3020,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"9945:16:24","nodeType":"VariableDeclaration","scope":3070,"src":"9937:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3019,"name":"uint256","nodeType":"ElementaryTypeName","src":"9937:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3031,"initialValue":{"arguments":[{"expression":{"id":3022,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9985:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9989:6:24","memberName":"sender","nodeType":"MemberAccess","src":"9985:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3024,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"10009:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10020:8:24","memberName":"amountLD","nodeType":"MemberAccess","referencedDeclaration":3377,"src":"10009:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3026,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"10042:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10053:11:24","memberName":"minAmountLD","nodeType":"MemberAccess","referencedDeclaration":3379,"src":"10042:22:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3028,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"10078:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10089:6:24","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":3373,"src":"10078:17:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":3021,"name":"_debit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3352,"src":"9965:6:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint32_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256,uint256,uint32) returns (uint256,uint256)"}},"id":3030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9965:140:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"9914:191:24"},{"assignments":[3033,3035],"declarations":[{"constant":false,"id":3033,"mutability":"mutable","name":"message","nameLocation":"10207:7:24","nodeType":"VariableDeclaration","scope":3070,"src":"10194:20:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3032,"name":"bytes","nodeType":"ElementaryTypeName","src":"10194:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3035,"mutability":"mutable","name":"options","nameLocation":"10229:7:24","nodeType":"VariableDeclaration","scope":3070,"src":"10216:20:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3034,"name":"bytes","nodeType":"ElementaryTypeName","src":"10216:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3040,"initialValue":{"arguments":[{"id":3037,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"10260:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},{"id":3038,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3020,"src":"10272:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3036,"name":"_buildMsgAndOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"10240:19:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_SendParam_$3386_calldata_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (struct SendParam calldata,uint256) view returns (bytes memory,bytes memory)"}},"id":3039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10240:49:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"10193:96:24"},{"expression":{"id":3050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3041,"name":"msgReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3012,"src":"10399:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3043,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"10420:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10431:6:24","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":3373,"src":"10420:17:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3045,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"10439:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3046,"name":"options","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"10448:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3047,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"10457:4:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_calldata_ptr","typeString":"struct MessagingFee calldata"}},{"id":3048,"name":"_refundAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3008,"src":"10463:14:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_MessagingFee_$33_calldata_ptr","typeString":"struct MessagingFee calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3042,"name":"_lzSend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1781,"src":"10412:7:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_struct$_MessagingFee_$33_memory_ptr_$_t_address_$returns$_t_struct$_MessagingReceipt_$28_memory_ptr_$","typeString":"function (uint32,bytes memory,bytes memory,struct MessagingFee memory,address) returns (struct MessagingReceipt memory)"}},"id":3049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10412:66:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt memory"}},"src":"10399:79:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt memory"}},"id":3051,"nodeType":"ExpressionStatement","src":"10399:79:24"},{"expression":{"id":3057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3052,"name":"oftReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3015,"src":"10531:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3054,"name":"amountSentLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3018,"src":"10555:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3055,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3020,"src":"10569:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3053,"name":"OFTReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3398,"src":"10544:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_OFTReceipt_$3398_storage_ptr_$","typeString":"type(struct OFTReceipt storage pointer)"}},"id":3056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10544:42:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt memory"}},"src":"10531:55:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt memory"}},"id":3058,"nodeType":"ExpressionStatement","src":"10531:55:24"},{"eventCall":{"arguments":[{"expression":{"id":3060,"name":"msgReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3012,"src":"10610:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt memory"}},"id":3061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10621:4:24","memberName":"guid","nodeType":"MemberAccess","referencedDeclaration":22,"src":"10610:15:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3062,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3003,"src":"10627:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10638:6:24","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":3373,"src":"10627:17:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"expression":{"id":3064,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10646:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10650:6:24","memberName":"sender","nodeType":"MemberAccess","src":"10646:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3066,"name":"amountSentLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3018,"src":"10658:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3067,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3020,"src":"10672:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3059,"name":"OFTSent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3425,"src":"10602:7:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint32,address,uint256,uint256)"}},"id":3068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10602:87:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3069,"nodeType":"EmitStatement","src":"10597:92:24"}]},"documentation":{"id":3000,"nodeType":"StructuredDocumentation","src":"8661:697:24","text":" @dev Internal function to execute the send operation.\n @param _sendParam The parameters for the send operation.\n @param _fee The calculated fee for the send() operation.\n      - nativeFee: The native fee.\n      - lzTokenFee: The lzToken fee.\n @param _refundAddress The address to receive any excess funds.\n @return msgReceipt The receipt for the send operation.\n @return oftReceipt The OFT receipt information.\n @dev MessagingReceipt: LayerZero msg receipt\n  - guid: The unique identifier for the sent message.\n  - nonce: The nonce of the sent message.\n  - fee: The LayerZero fee incurred for the message."},"id":3071,"implemented":true,"kind":"function","modifiers":[],"name":"_send","nameLocation":"9372:5:24","nodeType":"FunctionDefinition","parameters":{"id":3009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3003,"mutability":"mutable","name":"_sendParam","nameLocation":"9406:10:24","nodeType":"VariableDeclaration","scope":3071,"src":"9387:29:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":3002,"nodeType":"UserDefinedTypeName","pathNode":{"id":3001,"name":"SendParam","nameLocations":["9387:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"9387:9:24"},"referencedDeclaration":3386,"src":"9387:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"},{"constant":false,"id":3006,"mutability":"mutable","name":"_fee","nameLocation":"9448:4:24","nodeType":"VariableDeclaration","scope":3071,"src":"9426:26:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_calldata_ptr","typeString":"struct MessagingFee"},"typeName":{"id":3005,"nodeType":"UserDefinedTypeName","pathNode":{"id":3004,"name":"MessagingFee","nameLocations":["9426:12:24"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"9426:12:24"},"referencedDeclaration":33,"src":"9426:12:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"},{"constant":false,"id":3008,"mutability":"mutable","name":"_refundAddress","nameLocation":"9470:14:24","nodeType":"VariableDeclaration","scope":3071,"src":"9462:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3007,"name":"address","nodeType":"ElementaryTypeName","src":"9462:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9377:113:24"},"returnParameters":{"id":3016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3012,"mutability":"mutable","name":"msgReceipt","nameLocation":"9541:10:24","nodeType":"VariableDeclaration","scope":3071,"src":"9517:34:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt"},"typeName":{"id":3011,"nodeType":"UserDefinedTypeName","pathNode":{"id":3010,"name":"MessagingReceipt","nameLocations":["9517:16:24"],"nodeType":"IdentifierPath","referencedDeclaration":28,"src":"9517:16:24"},"referencedDeclaration":28,"src":"9517:16:24","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_storage_ptr","typeString":"struct MessagingReceipt"}},"visibility":"internal"},{"constant":false,"id":3015,"mutability":"mutable","name":"oftReceipt","nameLocation":"9571:10:24","nodeType":"VariableDeclaration","scope":3071,"src":"9553:28:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt"},"typeName":{"id":3014,"nodeType":"UserDefinedTypeName","pathNode":{"id":3013,"name":"OFTReceipt","nameLocations":["9553:10:24"],"nodeType":"IdentifierPath","referencedDeclaration":3398,"src":"9553:10:24"},"referencedDeclaration":3398,"src":"9553:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_storage_ptr","typeString":"struct OFTReceipt"}},"visibility":"internal"}],"src":"9516:66:24"},"scope":3365,"src":"9363:1333:24","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3138,"nodeType":"Block","src":"11166:1260:24","statements":[{"assignments":[3085],"declarations":[{"constant":false,"id":3085,"mutability":"mutable","name":"hasCompose","nameLocation":"11181:10:24","nodeType":"VariableDeclaration","scope":3138,"src":"11176:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3084,"name":"bool","nodeType":"ElementaryTypeName","src":"11176:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":3086,"nodeType":"VariableDeclarationStatement","src":"11176:15:24"},{"expression":{"id":3100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3087,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3080,"src":"11324:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3088,"name":"hasCompose","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3085,"src":"11333:10:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3089,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"11323:21:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bool_$","typeString":"tuple(bytes memory,bool)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3092,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3075,"src":"11379:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11390:2:24","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":3375,"src":"11379:13:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":3095,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3077,"src":"11412:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3094,"name":"_toSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3301,"src":"11406:5:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint64_$","typeString":"function (uint256) view returns (uint64)"}},"id":3096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11406:16:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"expression":{"id":3097,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3075,"src":"11640:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11651:10:24","memberName":"composeMsg","nodeType":"MemberAccess","referencedDeclaration":3383,"src":"11640:21:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":3090,"name":"OFTMsgCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3832,"src":"11347:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OFTMsgCodec_$3832_$","typeString":"type(library OFTMsgCodec)"}},"id":3091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11359:6:24","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":3728,"src":"11347:18:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_uint64_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bool_$","typeString":"function (bytes32,uint64,bytes memory) view returns (bytes memory,bool)"}},"id":3099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11347:324:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bool_$","typeString":"tuple(bytes memory,bool)"}},"src":"11323:348:24","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3101,"nodeType":"ExpressionStatement","src":"11323:348:24"},{"assignments":[3103],"declarations":[{"constant":false,"id":3103,"mutability":"mutable","name":"msgType","nameLocation":"11758:7:24","nodeType":"VariableDeclaration","scope":3138,"src":"11751:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":3102,"name":"uint16","nodeType":"ElementaryTypeName","src":"11751:6:24","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":3108,"initialValue":{"condition":{"id":3104,"name":"hasCompose","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3085,"src":"11768:10:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":3106,"name":"SEND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2781,"src":"11797:4:24","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":3107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11768:33:24","trueExpression":{"id":3105,"name":"SEND_AND_CALL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"11781:13:24","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"VariableDeclarationStatement","src":"11751:50:24"},{"expression":{"id":3117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3109,"name":"options","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3082,"src":"11913:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3111,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3075,"src":"11938:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11949:6:24","memberName":"dstEid","nodeType":"MemberAccess","referencedDeclaration":3373,"src":"11938:17:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3113,"name":"msgType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3103,"src":"11957:7:24","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"id":3114,"name":"_sendParam","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3075,"src":"11966:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam calldata"}},"id":3115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11977:12:24","memberName":"extraOptions","nodeType":"MemberAccess","referencedDeclaration":3381,"src":"11966:23:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3110,"name":"combineOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2129,"src":"11923:14:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint32_$_t_uint16_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint32,uint16,bytes calldata) view returns (bytes memory)"}},"id":3116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11923:67:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"11913:77:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3118,"nodeType":"ExpressionStatement","src":"11913:77:24"},{"assignments":[3120],"declarations":[{"constant":false,"id":3120,"mutability":"mutable","name":"inspector","nameLocation":"12236:9:24","nodeType":"VariableDeclaration","scope":3138,"src":"12228:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3119,"name":"address","nodeType":"ElementaryTypeName","src":"12228:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3122,"initialValue":{"id":3121,"name":"msgInspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"12248:12:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12228:32:24"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3123,"name":"inspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3120,"src":"12340:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12361:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3125,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12353:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3124,"name":"address","nodeType":"ElementaryTypeName","src":"12353:7:24","typeDescriptions":{}}},"id":3127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12353:10:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12340:23:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3137,"nodeType":"IfStatement","src":"12336:83:24","trueBody":{"expression":{"arguments":[{"id":3133,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3080,"src":"12402:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3134,"name":"options","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3082,"src":"12411:7:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":3130,"name":"inspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3120,"src":"12383:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3129,"name":"IOAppMsgInspector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1922,"src":"12365:17:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOAppMsgInspector_$1922_$","typeString":"type(contract IOAppMsgInspector)"}},"id":3131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12365:28:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOAppMsgInspector_$1922","typeString":"contract IOAppMsgInspector"}},"id":3132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12394:7:24","memberName":"inspect","nodeType":"MemberAccess","referencedDeclaration":1921,"src":"12365:36:24","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory,bytes memory) view external returns (bool)"}},"id":3135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12365:54:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3136,"nodeType":"ExpressionStatement","src":"12365:54:24"}}]},"documentation":{"id":3072,"nodeType":"StructuredDocumentation","src":"10702:283:24","text":" @dev Internal function to build the message and options.\n @param _sendParam The parameters for the send() operation.\n @param _amountLD The amount in local decimals.\n @return message The encoded message.\n @return options The encoded options."},"id":3139,"implemented":true,"kind":"function","modifiers":[],"name":"_buildMsgAndOptions","nameLocation":"10999:19:24","nodeType":"FunctionDefinition","parameters":{"id":3078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3075,"mutability":"mutable","name":"_sendParam","nameLocation":"11047:10:24","nodeType":"VariableDeclaration","scope":3139,"src":"11028:29:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":3074,"nodeType":"UserDefinedTypeName","pathNode":{"id":3073,"name":"SendParam","nameLocations":["11028:9:24"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"11028:9:24"},"referencedDeclaration":3386,"src":"11028:9:24","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"},{"constant":false,"id":3077,"mutability":"mutable","name":"_amountLD","nameLocation":"11075:9:24","nodeType":"VariableDeclaration","scope":3139,"src":"11067:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3076,"name":"uint256","nodeType":"ElementaryTypeName","src":"11067:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11018:72:24"},"returnParameters":{"id":3083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3080,"mutability":"mutable","name":"message","nameLocation":"11135:7:24","nodeType":"VariableDeclaration","scope":3139,"src":"11122:20:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3079,"name":"bytes","nodeType":"ElementaryTypeName","src":"11122:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3082,"mutability":"mutable","name":"options","nameLocation":"11157:7:24","nodeType":"VariableDeclaration","scope":3139,"src":"11144:20:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3081,"name":"bytes","nodeType":"ElementaryTypeName","src":"11144:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11121:44:24"},"scope":3365,"src":"10990:1436:24","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1652],"body":{"id":3212,"nodeType":"Block","src":"13247:1503:24","statements":[{"assignments":[3156],"declarations":[{"constant":false,"id":3156,"mutability":"mutable","name":"toAddress","nameLocation":"13429:9:24","nodeType":"VariableDeclaration","scope":3212,"src":"13421:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3155,"name":"address","nodeType":"ElementaryTypeName","src":"13421:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3162,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3157,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3147,"src":"13441:8:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13450:6:24","memberName":"sendTo","nodeType":"MemberAccess","referencedDeclaration":3758,"src":"13441:15:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes32_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bytes32)"}},"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13441:17:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13459:16:24","memberName":"bytes32ToAddress","nodeType":"MemberAccess","referencedDeclaration":3831,"src":"13441:34:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_address_$attached_to$_t_bytes32_$","typeString":"function (bytes32) pure returns (address)"}},"id":3161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13441:36:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"13421:56:24"},{"assignments":[3164],"declarations":[{"constant":false,"id":3164,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"13618:16:24","nodeType":"VariableDeclaration","scope":3212,"src":"13610:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3163,"name":"uint256","nodeType":"ElementaryTypeName","src":"13610:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3175,"initialValue":{"arguments":[{"id":3166,"name":"toAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3156,"src":"13645:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3168,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3147,"src":"13662:8:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13671:8:24","memberName":"amountSD","nodeType":"MemberAccess","referencedDeclaration":3778,"src":"13662:17:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint64_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (uint64)"}},"id":3170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13662:19:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":3167,"name":"_toLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"13656:5:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint64_$returns$_t_uint256_$","typeString":"function (uint64) view returns (uint256)"}},"id":3171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13656:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3172,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"13684:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":3173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13692:6:24","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":35,"src":"13684:14:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":3165,"name":"_credit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3364,"src":"13637:7:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint32_$returns$_t_uint256_$","typeString":"function (address,uint256,uint32) returns (uint256)"}},"id":3174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13637:62:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13610:89:24"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3176,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3147,"src":"13714:8:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13723:10:24","memberName":"isComposed","nodeType":"MemberAccess","referencedDeclaration":3742,"src":"13714:19:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bool_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bool)"}},"id":3178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13714:21:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3203,"nodeType":"IfStatement","src":"13710:955:24","trueBody":{"id":3202,"nodeType":"Block","src":"13737:928:24","statements":[{"assignments":[3180],"declarations":[{"constant":false,"id":3180,"mutability":"mutable","name":"composeMsg","nameLocation":"13827:10:24","nodeType":"VariableDeclaration","scope":3202,"src":"13814:23:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3179,"name":"bytes","nodeType":"ElementaryTypeName","src":"13814:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":3192,"initialValue":{"arguments":[{"expression":{"id":3183,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"13883:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":3184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13891:5:24","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":39,"src":"13883:13:24","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"expression":{"id":3185,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"13914:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":3186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13922:6:24","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":35,"src":"13914:14:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3187,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3164,"src":"13946:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":3188,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3147,"src":"13980:8:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13989:10:24","memberName":"composeMsg","nodeType":"MemberAccess","referencedDeclaration":3791,"src":"13980:19:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_bytes_calldata_ptr_$","typeString":"function (bytes calldata) pure returns (bytes memory)"}},"id":3190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13980:21:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3181,"name":"OFTComposeMsgCodec","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3678,"src":"13840:18:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OFTComposeMsgCodec_$3678_$","typeString":"type(library OFTComposeMsgCodec)"}},"id":3182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13859:6:24","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":3548,"src":"13840:25:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint64_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint64,uint32,uint256,bytes memory) pure returns (bytes memory)"}},"id":3191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13840:175:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"13814:201:24"},{"expression":{"arguments":[{"id":3196,"name":"toAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3156,"src":"14583:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3197,"name":"_guid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"14594:5:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":3198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14601:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3199,"name":"composeMsg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3180,"src":"14643:10:24","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3193,"name":"endpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"14562:8:24","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"id":3195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14571:11:24","memberName":"sendCompose","nodeType":"MemberAccess","referencedDeclaration":744,"src":"14562:20:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_uint16_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes32,uint16,bytes memory) external"}},"id":3200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14562:92:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3201,"nodeType":"ExpressionStatement","src":"14562:92:24"}]}},{"eventCall":{"arguments":[{"id":3205,"name":"_guid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"14692:5:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3206,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"14699:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},"id":3207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14707:6:24","memberName":"srcEid","nodeType":"MemberAccess","referencedDeclaration":35,"src":"14699:14:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3208,"name":"toAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3156,"src":"14715:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3209,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3164,"src":"14726:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3204,"name":"OFTReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3435,"src":"14680:11:24","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint32_$_t_address_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint32,address,uint256)"}},"id":3210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14680:63:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3211,"nodeType":"EmitStatement","src":"14675:68:24"}]},"documentation":{"id":3140,"nodeType":"StructuredDocumentation","src":"12432:507:24","text":" @dev Internal function to handle the receive on the LayerZero endpoint.\n @param _origin The origin information.\n  - srcEid: The source chain endpoint ID.\n  - sender: The sender address from the src chain.\n  - nonce: The nonce of the LayerZero message.\n @param _guid The unique identifier for the received LayerZero message.\n @param _message The encoded message.\n @dev _executor The address of the executor.\n @dev _extraData Additional data."},"id":3213,"implemented":true,"kind":"function","modifiers":[],"name":"_lzReceive","nameLocation":"12953:10:24","nodeType":"FunctionDefinition","overrides":{"id":3153,"nodeType":"OverrideSpecifier","overrides":[],"src":"13238:8:24"},"parameters":{"id":3152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3143,"mutability":"mutable","name":"_origin","nameLocation":"12989:7:24","nodeType":"VariableDeclaration","scope":3213,"src":"12973:23:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":3142,"nodeType":"UserDefinedTypeName","pathNode":{"id":3141,"name":"Origin","nameLocations":["12973:6:24"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"12973:6:24"},"referencedDeclaration":40,"src":"12973:6:24","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":3145,"mutability":"mutable","name":"_guid","nameLocation":"13014:5:24","nodeType":"VariableDeclaration","scope":3213,"src":"13006:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3144,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13006:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3147,"mutability":"mutable","name":"_message","nameLocation":"13044:8:24","nodeType":"VariableDeclaration","scope":3213,"src":"13029:23:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3146,"name":"bytes","nodeType":"ElementaryTypeName","src":"13029:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3149,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3213,"src":"13062:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3148,"name":"address","nodeType":"ElementaryTypeName","src":"13062:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3151,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3213,"src":"13139:14:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3150,"name":"bytes","nodeType":"ElementaryTypeName","src":"13139:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12963:257:24"},"returnParameters":{"id":3154,"nodeType":"ParameterList","parameters":[],"src":"13247:0:24"},"scope":3365,"src":"12944:1806:24","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[2312],"body":{"id":3237,"nodeType":"Block","src":"15707:76:24","statements":[{"expression":{"arguments":[{"id":3230,"name":"_origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3217,"src":"15728:7:24","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"}},{"id":3231,"name":"_guid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3219,"src":"15737:5:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3232,"name":"_message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3221,"src":"15744:8:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":3233,"name":"_executor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3223,"src":"15754:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3234,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3225,"src":"15765:10:24","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":3229,"name":"_lzReceive","nodeType":"Identifier","overloadedDeclarations":[3213],"referencedDeclaration":3213,"src":"15717:10:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Origin_$40_calldata_ptr_$_t_bytes32_$_t_bytes_calldata_ptr_$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (struct Origin calldata,bytes32,bytes calldata,address,bytes calldata)"}},"id":3235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15717:59:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3236,"nodeType":"ExpressionStatement","src":"15717:59:24"}]},"documentation":{"id":3214,"nodeType":"StructuredDocumentation","src":"14756:735:24","text":" @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\n @param _origin The origin information.\n  - srcEid: The source chain endpoint ID.\n  - sender: The sender address from the src chain.\n  - nonce: The nonce of the LayerZero message.\n @param _guid The unique identifier for the received LayerZero message.\n @param _message The LayerZero message.\n @param _executor The address of the off-chain executor.\n @param _extraData Arbitrary data passed by the msg executor.\n @dev Enables the preCrime simulator to mock sending lzReceive() messages,\n routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver."},"id":3238,"implemented":true,"kind":"function","modifiers":[],"name":"_lzReceiveSimulate","nameLocation":"15505:18:24","nodeType":"FunctionDefinition","overrides":{"id":3227,"nodeType":"OverrideSpecifier","overrides":[],"src":"15698:8:24"},"parameters":{"id":3226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3217,"mutability":"mutable","name":"_origin","nameLocation":"15549:7:24","nodeType":"VariableDeclaration","scope":3238,"src":"15533:23:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":3216,"nodeType":"UserDefinedTypeName","pathNode":{"id":3215,"name":"Origin","nameLocations":["15533:6:24"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"15533:6:24"},"referencedDeclaration":40,"src":"15533:6:24","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":3219,"mutability":"mutable","name":"_guid","nameLocation":"15574:5:24","nodeType":"VariableDeclaration","scope":3238,"src":"15566:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3218,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15566:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3221,"mutability":"mutable","name":"_message","nameLocation":"15604:8:24","nodeType":"VariableDeclaration","scope":3238,"src":"15589:23:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3220,"name":"bytes","nodeType":"ElementaryTypeName","src":"15589:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3223,"mutability":"mutable","name":"_executor","nameLocation":"15630:9:24","nodeType":"VariableDeclaration","scope":3238,"src":"15622:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3222,"name":"address","nodeType":"ElementaryTypeName","src":"15622:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3225,"mutability":"mutable","name":"_extraData","nameLocation":"15664:10:24","nodeType":"VariableDeclaration","scope":3238,"src":"15649:25:24","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3224,"name":"bytes","nodeType":"ElementaryTypeName","src":"15649:5:24","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15523:157:24"},"returnParameters":{"id":3228,"nodeType":"ParameterList","parameters":[],"src":"15707:0:24"},"scope":3365,"src":"15496:287:24","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[2322],"body":{"id":3255,"nodeType":"Block","src":"16239:44:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":3253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":3249,"name":"peers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"16256:5:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint32_$_t_bytes32_$","typeString":"mapping(uint32 => bytes32)"}},"id":3251,"indexExpression":{"id":3250,"name":"_eid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3241,"src":"16262:4:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16256:11:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3252,"name":"_peer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"16271:5:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16256:20:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3248,"id":3254,"nodeType":"Return","src":"16249:27:24"}]},"documentation":{"id":3239,"nodeType":"StructuredDocumentation","src":"15789:357:24","text":" @dev Check if the peer is considered 'trusted' by the OApp.\n @param _eid The endpoint ID to check.\n @param _peer The peer to check.\n @return Whether the peer passed is considered 'trusted' by the OApp.\n @dev Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source."},"functionSelector":"5a0dfe4d","id":3256,"implemented":true,"kind":"function","modifiers":[],"name":"isPeer","nameLocation":"16160:6:24","nodeType":"FunctionDefinition","overrides":{"id":3245,"nodeType":"OverrideSpecifier","overrides":[],"src":"16215:8:24"},"parameters":{"id":3244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3241,"mutability":"mutable","name":"_eid","nameLocation":"16174:4:24","nodeType":"VariableDeclaration","scope":3256,"src":"16167:11:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3240,"name":"uint32","nodeType":"ElementaryTypeName","src":"16167:6:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3243,"mutability":"mutable","name":"_peer","nameLocation":"16188:5:24","nodeType":"VariableDeclaration","scope":3256,"src":"16180:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3242,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16180:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16166:28:24"},"returnParameters":{"id":3248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3256,"src":"16233:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3246,"name":"bool","nodeType":"ElementaryTypeName","src":"16233:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16232:6:24"},"scope":3365,"src":"16151:132:24","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":3271,"nodeType":"Block","src":"16766:83:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3264,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3259,"src":"16784:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3265,"name":"decimalConversionRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2778,"src":"16796:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16784:33:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3267,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16783:35:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3268,"name":"decimalConversionRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2778,"src":"16821:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16783:59:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3263,"id":3270,"nodeType":"Return","src":"16776:66:24"}]},"documentation":{"id":3257,"nodeType":"StructuredDocumentation","src":"16289:383:24","text":" @dev Internal function to remove dust from the given local decimal amount.\n @param _amountLD The amount in local decimals.\n @return amountLD The amount after removing dust.\n @dev Prevents the loss of dust when moving amounts between chains with different decimals.\n @dev eg. uint(123) with a conversion rate of 100 becomes uint(100)."},"id":3272,"implemented":true,"kind":"function","modifiers":[],"name":"_removeDust","nameLocation":"16686:11:24","nodeType":"FunctionDefinition","parameters":{"id":3260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3259,"mutability":"mutable","name":"_amountLD","nameLocation":"16706:9:24","nodeType":"VariableDeclaration","scope":3272,"src":"16698:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3258,"name":"uint256","nodeType":"ElementaryTypeName","src":"16698:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16697:19:24"},"returnParameters":{"id":3263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3262,"mutability":"mutable","name":"amountLD","nameLocation":"16756:8:24","nodeType":"VariableDeclaration","scope":3272,"src":"16748:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3261,"name":"uint256","nodeType":"ElementaryTypeName","src":"16748:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16747:18:24"},"scope":3365,"src":"16677:172:24","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3284,"nodeType":"Block","src":"17155:57:24","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3280,"name":"_amountSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"17172:9:24","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3281,"name":"decimalConversionRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2778,"src":"17184:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17172:33:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3279,"id":3283,"nodeType":"Return","src":"17165:40:24"}]},"documentation":{"id":3273,"nodeType":"StructuredDocumentation","src":"16855:213:24","text":" @dev Internal function to convert an amount from shared decimals into local decimals.\n @param _amountSD The amount in shared decimals.\n @return amountLD The amount in local decimals."},"id":3285,"implemented":true,"kind":"function","modifiers":[],"name":"_toLD","nameLocation":"17082:5:24","nodeType":"FunctionDefinition","parameters":{"id":3276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3275,"mutability":"mutable","name":"_amountSD","nameLocation":"17095:9:24","nodeType":"VariableDeclaration","scope":3285,"src":"17088:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3274,"name":"uint64","nodeType":"ElementaryTypeName","src":"17088:6:24","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"17087:18:24"},"returnParameters":{"id":3279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3278,"mutability":"mutable","name":"amountLD","nameLocation":"17145:8:24","nodeType":"VariableDeclaration","scope":3285,"src":"17137:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3277,"name":"uint256","nodeType":"ElementaryTypeName","src":"17137:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17136:18:24"},"scope":3365,"src":"17073:139:24","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3300,"nodeType":"Block","src":"17518:65:24","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3295,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3288,"src":"17542:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3296,"name":"decimalConversionRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2778,"src":"17554:21:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17542:33:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17535:6:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3293,"name":"uint64","nodeType":"ElementaryTypeName","src":"17535:6:24","typeDescriptions":{}}},"id":3298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17535:41:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":3292,"id":3299,"nodeType":"Return","src":"17528:48:24"}]},"documentation":{"id":3286,"nodeType":"StructuredDocumentation","src":"17218:213:24","text":" @dev Internal function to convert an amount from local decimals into shared decimals.\n @param _amountLD The amount in local decimals.\n @return amountSD The amount in shared decimals."},"id":3301,"implemented":true,"kind":"function","modifiers":[],"name":"_toSD","nameLocation":"17445:5:24","nodeType":"FunctionDefinition","parameters":{"id":3289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3288,"mutability":"mutable","name":"_amountLD","nameLocation":"17459:9:24","nodeType":"VariableDeclaration","scope":3301,"src":"17451:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3287,"name":"uint256","nodeType":"ElementaryTypeName","src":"17451:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17450:19:24"},"returnParameters":{"id":3292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3291,"mutability":"mutable","name":"amountSD","nameLocation":"17508:8:24","nodeType":"VariableDeclaration","scope":3301,"src":"17501:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3290,"name":"uint64","nodeType":"ElementaryTypeName","src":"17501:6:24","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"17500:17:24"},"scope":3365,"src":"17436:147:24","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3335,"nodeType":"Block","src":"18358:478:24","statements":[{"expression":{"id":3319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3315,"name":"amountSentLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3311,"src":"18491:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3317,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3304,"src":"18518:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3316,"name":"_removeDust","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3272,"src":"18506:11:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":3318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18506:22:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18491:37:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3320,"nodeType":"ExpressionStatement","src":"18491:37:24"},{"expression":{"id":3323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3321,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3313,"src":"18635:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3322,"name":"amountSentLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3311,"src":"18654:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18635:31:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3324,"nodeType":"ExpressionStatement","src":"18635:31:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3325,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3313,"src":"18717:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3326,"name":"_minAmountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3306,"src":"18736:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18717:31:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3334,"nodeType":"IfStatement","src":"18713:117:24","trueBody":{"id":3333,"nodeType":"Block","src":"18750:80:24","statements":[{"errorCall":{"arguments":[{"id":3329,"name":"amountReceivedLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3313,"src":"18788:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3330,"name":"_minAmountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3306,"src":"18806:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3328,"name":"SlippageExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3413,"src":"18771:16:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":3331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18771:48:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3332,"nodeType":"RevertStatement","src":"18764:55:24"}]}}]},"documentation":{"id":3302,"nodeType":"StructuredDocumentation","src":"17589:574:24","text":" @dev Internal function to mock the amount mutation from a OFT debit() operation.\n @param _amountLD The amount to send in local decimals.\n @param _minAmountLD The minimum amount to send in local decimals.\n @dev _dstEid The destination endpoint ID.\n @return amountSentLD The amount sent, in local decimals.\n @return amountReceivedLD The amount to be received on the remote chain, in local decimals.\n @dev This is where things like fees would be calculated and deducted from the amount to be received on the remote."},"id":3336,"implemented":true,"kind":"function","modifiers":[],"name":"_debitView","nameLocation":"18177:10:24","nodeType":"FunctionDefinition","parameters":{"id":3309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3304,"mutability":"mutable","name":"_amountLD","nameLocation":"18205:9:24","nodeType":"VariableDeclaration","scope":3336,"src":"18197:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3303,"name":"uint256","nodeType":"ElementaryTypeName","src":"18197:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3306,"mutability":"mutable","name":"_minAmountLD","nameLocation":"18232:12:24","nodeType":"VariableDeclaration","scope":3336,"src":"18224:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3305,"name":"uint256","nodeType":"ElementaryTypeName","src":"18224:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3308,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3336,"src":"18254:6:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3307,"name":"uint32","nodeType":"ElementaryTypeName","src":"18254:6:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"18187:91:24"},"returnParameters":{"id":3314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3311,"mutability":"mutable","name":"amountSentLD","nameLocation":"18318:12:24","nodeType":"VariableDeclaration","scope":3336,"src":"18310:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3310,"name":"uint256","nodeType":"ElementaryTypeName","src":"18310:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3313,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"18340:16:24","nodeType":"VariableDeclaration","scope":3336,"src":"18332:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3312,"name":"uint256","nodeType":"ElementaryTypeName","src":"18332:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18309:48:24"},"scope":3365,"src":"18168:668:24","stateMutability":"view","virtual":true,"visibility":"internal"},{"documentation":{"id":3337,"nodeType":"StructuredDocumentation","src":"18842:647:24","text":" @dev Internal function to perform a debit operation.\n @param _from The address to debit.\n @param _amountLD The amount to send in local decimals.\n @param _minAmountLD The minimum amount to send in local decimals.\n @param _dstEid The destination endpoint ID.\n @return amountSentLD The amount sent in local decimals.\n @return amountReceivedLD The amount received in local decimals on the remote.\n @dev Defined here but are intended to be overriden depending on the OFT implementation.\n @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD."},"id":3352,"implemented":false,"kind":"function","modifiers":[],"name":"_debit","nameLocation":"19503:6:24","nodeType":"FunctionDefinition","parameters":{"id":3346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3339,"mutability":"mutable","name":"_from","nameLocation":"19527:5:24","nodeType":"VariableDeclaration","scope":3352,"src":"19519:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3338,"name":"address","nodeType":"ElementaryTypeName","src":"19519:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3341,"mutability":"mutable","name":"_amountLD","nameLocation":"19550:9:24","nodeType":"VariableDeclaration","scope":3352,"src":"19542:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3340,"name":"uint256","nodeType":"ElementaryTypeName","src":"19542:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3343,"mutability":"mutable","name":"_minAmountLD","nameLocation":"19577:12:24","nodeType":"VariableDeclaration","scope":3352,"src":"19569:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3342,"name":"uint256","nodeType":"ElementaryTypeName","src":"19569:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3345,"mutability":"mutable","name":"_dstEid","nameLocation":"19606:7:24","nodeType":"VariableDeclaration","scope":3352,"src":"19599:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3344,"name":"uint32","nodeType":"ElementaryTypeName","src":"19599:6:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"19509:110:24"},"returnParameters":{"id":3351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3348,"mutability":"mutable","name":"amountSentLD","nameLocation":"19654:12:24","nodeType":"VariableDeclaration","scope":3352,"src":"19646:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3347,"name":"uint256","nodeType":"ElementaryTypeName","src":"19646:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3350,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"19676:16:24","nodeType":"VariableDeclaration","scope":3352,"src":"19668:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3349,"name":"uint256","nodeType":"ElementaryTypeName","src":"19668:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19645:48:24"},"scope":3365,"src":"19494:200:24","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":3353,"nodeType":"StructuredDocumentation","src":"19700:503:24","text":" @dev Internal function to perform a credit operation.\n @param _to The address to credit.\n @param _amountLD The amount to credit in local decimals.\n @param _srcEid The source endpoint ID.\n @return amountReceivedLD The amount ACTUALLY received in local decimals.\n @dev Defined here but are intended to be overriden depending on the OFT implementation.\n @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD."},"id":3364,"implemented":false,"kind":"function","modifiers":[],"name":"_credit","nameLocation":"20217:7:24","nodeType":"FunctionDefinition","parameters":{"id":3360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3355,"mutability":"mutable","name":"_to","nameLocation":"20242:3:24","nodeType":"VariableDeclaration","scope":3364,"src":"20234:11:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3354,"name":"address","nodeType":"ElementaryTypeName","src":"20234:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3357,"mutability":"mutable","name":"_amountLD","nameLocation":"20263:9:24","nodeType":"VariableDeclaration","scope":3364,"src":"20255:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3356,"name":"uint256","nodeType":"ElementaryTypeName","src":"20255:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3359,"mutability":"mutable","name":"_srcEid","nameLocation":"20289:7:24","nodeType":"VariableDeclaration","scope":3364,"src":"20282:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3358,"name":"uint32","nodeType":"ElementaryTypeName","src":"20282:6:24","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"20224:78:24"},"returnParameters":{"id":3363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3362,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"20337:16:24","nodeType":"VariableDeclaration","scope":3364,"src":"20329:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3361,"name":"uint256","nodeType":"ElementaryTypeName","src":"20329:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20328:26:24"},"scope":3365,"src":"20208:147:24","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":3366,"src":"865:19492:24","usedErrors":[1517,1675,1677,1850,1854,1856,1858,1937,2333,2335,3407,3413,3846,3851,4880],"usedEvents":[1864,1943,2340,2790,3425,3435,3857]}],"src":"33:20325:24"},"id":24},"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol":{"ast":{"absolutePath":"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol","exportedSymbols":{"IOFT":[3509],"MessagingFee":[33],"MessagingReceipt":[28],"OFTFeeDetail":[3404],"OFTLimit":[3392],"OFTReceipt":[3398],"SendParam":[3386]},"id":3510,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3367,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:25"},{"absolutePath":"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol","file":"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol","id":3370,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3510,"sourceUnit":1840,"src":"59:103:25","symbolAliases":[{"foreign":{"id":3368,"name":"MessagingReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"68:16:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3369,"name":"MessagingFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"86:12:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"SendParam","documentation":{"id":3371,"nodeType":"StructuredDocumentation","src":"164:82:25","text":" @dev Struct representing token parameters for the OFT send() operation."},"id":3386,"members":[{"constant":false,"id":3373,"mutability":"mutable","name":"dstEid","nameLocation":"277:6:25","nodeType":"VariableDeclaration","scope":3386,"src":"270:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3372,"name":"uint32","nodeType":"ElementaryTypeName","src":"270:6:25","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3375,"mutability":"mutable","name":"to","nameLocation":"325:2:25","nodeType":"VariableDeclaration","scope":3386,"src":"317:10:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3374,"name":"bytes32","nodeType":"ElementaryTypeName","src":"317:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3377,"mutability":"mutable","name":"amountLD","nameLocation":"363:8:25","nodeType":"VariableDeclaration","scope":3386,"src":"355:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3376,"name":"uint256","nodeType":"ElementaryTypeName","src":"355:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3379,"mutability":"mutable","name":"minAmountLD","nameLocation":"422:11:25","nodeType":"VariableDeclaration","scope":3386,"src":"414:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3378,"name":"uint256","nodeType":"ElementaryTypeName","src":"414:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3381,"mutability":"mutable","name":"extraOptions","nameLocation":"490:12:25","nodeType":"VariableDeclaration","scope":3386,"src":"484:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3380,"name":"bytes","nodeType":"ElementaryTypeName","src":"484:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3383,"mutability":"mutable","name":"composeMsg","nameLocation":"596:10:25","nodeType":"VariableDeclaration","scope":3386,"src":"590:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3382,"name":"bytes","nodeType":"ElementaryTypeName","src":"590:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3385,"mutability":"mutable","name":"oftCmd","nameLocation":"668:6:25","nodeType":"VariableDeclaration","scope":3386,"src":"662:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3384,"name":"bytes","nodeType":"ElementaryTypeName","src":"662:5:25","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SendParam","nameLocation":"254:9:25","nodeType":"StructDefinition","scope":3510,"src":"247:504:25","visibility":"public"},{"canonicalName":"OFTLimit","documentation":{"id":3387,"nodeType":"StructuredDocumentation","src":"753:147:25","text":" @dev Struct representing OFT limit information.\n @dev These amounts can change dynamically and are up the specific oft implementation."},"id":3392,"members":[{"constant":false,"id":3389,"mutability":"mutable","name":"minAmountLD","nameLocation":"931:11:25","nodeType":"VariableDeclaration","scope":3392,"src":"923:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3388,"name":"uint256","nodeType":"ElementaryTypeName","src":"923:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3391,"mutability":"mutable","name":"maxAmountLD","nameLocation":"1027:11:25","nodeType":"VariableDeclaration","scope":3392,"src":"1019:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3390,"name":"uint256","nodeType":"ElementaryTypeName","src":"1019:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"OFTLimit","nameLocation":"908:8:25","nodeType":"StructDefinition","scope":3510,"src":"901:211:25","visibility":"public"},{"canonicalName":"OFTReceipt","documentation":{"id":3393,"nodeType":"StructuredDocumentation","src":"1114:60:25","text":" @dev Struct representing OFT receipt information."},"id":3398,"members":[{"constant":false,"id":3395,"mutability":"mutable","name":"amountSentLD","nameLocation":"1207:12:25","nodeType":"VariableDeclaration","scope":3398,"src":"1199:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3394,"name":"uint256","nodeType":"ElementaryTypeName","src":"1199:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3397,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"1400:16:25","nodeType":"VariableDeclaration","scope":3398,"src":"1392:24:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3396,"name":"uint256","nodeType":"ElementaryTypeName","src":"1392:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"OFTReceipt","nameLocation":"1182:10:25","nodeType":"StructDefinition","scope":3510,"src":"1175:299:25","visibility":"public"},{"canonicalName":"OFTFeeDetail","documentation":{"id":3399,"nodeType":"StructuredDocumentation","src":"1476:154:25","text":" @dev Struct representing OFT fee details.\n @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI."},"id":3404,"members":[{"constant":false,"id":3401,"mutability":"mutable","name":"feeAmountLD","nameLocation":"1664:11:25","nodeType":"VariableDeclaration","scope":3404,"src":"1657:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3400,"name":"int256","nodeType":"ElementaryTypeName","src":"1657:6:25","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3403,"mutability":"mutable","name":"description","nameLocation":"1728:11:25","nodeType":"VariableDeclaration","scope":3404,"src":"1721:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":3402,"name":"string","nodeType":"ElementaryTypeName","src":"1721:6:25","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"OFTFeeDetail","nameLocation":"1638:12:25","nodeType":"StructDefinition","scope":3510,"src":"1631:138:25","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"IOFT","contractDependencies":[],"contractKind":"interface","documentation":{"id":3405,"nodeType":"StructuredDocumentation","src":"1771:197:25","text":" @title IOFT\n @dev Interface for the OftChain (OFT) token.\n @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\n @dev This specific interface ID is '0x02e49c2c'."},"fullyImplemented":false,"id":3509,"linearizedBaseContracts":[3509],"name":"IOFT","nameLocation":"1979:4:25","nodeType":"ContractDefinition","nodes":[{"errorSelector":"1e9714b0","id":3407,"name":"InvalidLocalDecimals","nameLocation":"2025:20:25","nodeType":"ErrorDefinition","parameters":{"id":3406,"nodeType":"ParameterList","parameters":[],"src":"2045:2:25"},"src":"2019:29:25"},{"errorSelector":"71c4efed","id":3413,"name":"SlippageExceeded","nameLocation":"2059:16:25","nodeType":"ErrorDefinition","parameters":{"id":3412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3409,"mutability":"mutable","name":"amountLD","nameLocation":"2084:8:25","nodeType":"VariableDeclaration","scope":3413,"src":"2076:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3408,"name":"uint256","nodeType":"ElementaryTypeName","src":"2076:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3411,"mutability":"mutable","name":"minAmountLD","nameLocation":"2102:11:25","nodeType":"VariableDeclaration","scope":3413,"src":"2094:19:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3410,"name":"uint256","nodeType":"ElementaryTypeName","src":"2094:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2075:39:25"},"src":"2053:62:25"},{"anonymous":false,"eventSelector":"85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a","id":3425,"name":"OFTSent","nameLocation":"2141:7:25","nodeType":"EventDefinition","parameters":{"id":3424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3415,"indexed":true,"mutability":"mutable","name":"guid","nameLocation":"2174:4:25","nodeType":"VariableDeclaration","scope":3425,"src":"2158:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3414,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2158:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3417,"indexed":false,"mutability":"mutable","name":"dstEid","nameLocation":"2223:6:25","nodeType":"VariableDeclaration","scope":3425,"src":"2216:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3416,"name":"uint32","nodeType":"ElementaryTypeName","src":"2216:6:25","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3419,"indexed":true,"mutability":"mutable","name":"fromAddress","nameLocation":"2283:11:25","nodeType":"VariableDeclaration","scope":3425,"src":"2267:27:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3418,"name":"address","nodeType":"ElementaryTypeName","src":"2267:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3421,"indexed":false,"mutability":"mutable","name":"amountSentLD","nameLocation":"2355:12:25","nodeType":"VariableDeclaration","scope":3425,"src":"2347:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3420,"name":"uint256","nodeType":"ElementaryTypeName","src":"2347:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3423,"indexed":false,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"2429:16:25","nodeType":"VariableDeclaration","scope":3425,"src":"2421:24:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3422,"name":"uint256","nodeType":"ElementaryTypeName","src":"2421:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2148:351:25"},"src":"2135:365:25"},{"anonymous":false,"eventSelector":"efed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c","id":3435,"name":"OFTReceived","nameLocation":"2511:11:25","nodeType":"EventDefinition","parameters":{"id":3434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3427,"indexed":true,"mutability":"mutable","name":"guid","nameLocation":"2548:4:25","nodeType":"VariableDeclaration","scope":3435,"src":"2532:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3426,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2532:7:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3429,"indexed":false,"mutability":"mutable","name":"srcEid","nameLocation":"2597:6:25","nodeType":"VariableDeclaration","scope":3435,"src":"2590:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3428,"name":"uint32","nodeType":"ElementaryTypeName","src":"2590:6:25","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3431,"indexed":true,"mutability":"mutable","name":"toAddress","nameLocation":"2652:9:25","nodeType":"VariableDeclaration","scope":3435,"src":"2636:25:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3430,"name":"address","nodeType":"ElementaryTypeName","src":"2636:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3433,"indexed":false,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"2725:16:25","nodeType":"VariableDeclaration","scope":3435,"src":"2717:24:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3432,"name":"uint256","nodeType":"ElementaryTypeName","src":"2717:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2522:273:25"},"src":"2505:291:25"},{"documentation":{"id":3436,"nodeType":"StructuredDocumentation","src":"2802:504:25","text":" @notice Retrieves interfaceID and the version of the OFT.\n @return interfaceId The interface ID.\n @return version The version.\n @dev interfaceId: This specific interface ID is '0x02e49c2c'.\n @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\n @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\n ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)"},"functionSelector":"156a0d0f","id":3443,"implemented":false,"kind":"function","modifiers":[],"name":"oftVersion","nameLocation":"3320:10:25","nodeType":"FunctionDefinition","parameters":{"id":3437,"nodeType":"ParameterList","parameters":[],"src":"3330:2:25"},"returnParameters":{"id":3442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3439,"mutability":"mutable","name":"interfaceId","nameLocation":"3363:11:25","nodeType":"VariableDeclaration","scope":3443,"src":"3356:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3438,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3356:6:25","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":3441,"mutability":"mutable","name":"version","nameLocation":"3383:7:25","nodeType":"VariableDeclaration","scope":3443,"src":"3376:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3440,"name":"uint64","nodeType":"ElementaryTypeName","src":"3376:6:25","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3355:36:25"},"scope":3509,"src":"3311:81:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3444,"nodeType":"StructuredDocumentation","src":"3398:154:25","text":" @notice Retrieves the address of the token associated with the OFT.\n @return token The address of the ERC20 token implementation."},"functionSelector":"fc0c546a","id":3449,"implemented":false,"kind":"function","modifiers":[],"name":"token","nameLocation":"3566:5:25","nodeType":"FunctionDefinition","parameters":{"id":3445,"nodeType":"ParameterList","parameters":[],"src":"3571:2:25"},"returnParameters":{"id":3448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3447,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3449,"src":"3597:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3446,"name":"address","nodeType":"ElementaryTypeName","src":"3597:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3596:9:25"},"scope":3509,"src":"3557:49:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3450,"nodeType":"StructuredDocumentation","src":"3612:355:25","text":" @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\n @return requiresApproval Needs approval of the underlying token implementation.\n @dev Allows things like wallet implementers to determine integration requirements,\n without understanding the underlying token implementation."},"functionSelector":"9f68b964","id":3455,"implemented":false,"kind":"function","modifiers":[],"name":"approvalRequired","nameLocation":"3981:16:25","nodeType":"FunctionDefinition","parameters":{"id":3451,"nodeType":"ParameterList","parameters":[],"src":"3997:2:25"},"returnParameters":{"id":3454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3455,"src":"4023:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3452,"name":"bool","nodeType":"ElementaryTypeName","src":"4023:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4022:6:25"},"scope":3509,"src":"3972:57:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3456,"nodeType":"StructuredDocumentation","src":"4035:130:25","text":" @notice Retrieves the shared decimals of the OFT.\n @return sharedDecimals The shared decimals of the OFT."},"functionSelector":"857749b0","id":3461,"implemented":false,"kind":"function","modifiers":[],"name":"sharedDecimals","nameLocation":"4179:14:25","nodeType":"FunctionDefinition","parameters":{"id":3457,"nodeType":"ParameterList","parameters":[],"src":"4193:2:25"},"returnParameters":{"id":3460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3459,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3461,"src":"4219:5:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3458,"name":"uint8","nodeType":"ElementaryTypeName","src":"4219:5:25","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4218:7:25"},"scope":3509,"src":"4170:56:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3462,"nodeType":"StructuredDocumentation","src":"4232:339:25","text":" @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\n @param _sendParam The parameters for the send operation.\n @return limit The OFT limit information.\n @return oftFeeDetails The details of OFT fees.\n @return receipt The OFT receipt information."},"functionSelector":"0d35b415","id":3478,"implemented":false,"kind":"function","modifiers":[],"name":"quoteOFT","nameLocation":"4585:8:25","nodeType":"FunctionDefinition","parameters":{"id":3466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3465,"mutability":"mutable","name":"_sendParam","nameLocation":"4622:10:25","nodeType":"VariableDeclaration","scope":3478,"src":"4603:29:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":3464,"nodeType":"UserDefinedTypeName","pathNode":{"id":3463,"name":"SendParam","nameLocations":["4603:9:25"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"4603:9:25"},"referencedDeclaration":3386,"src":"4603:9:25","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"}],"src":"4593:45:25"},"returnParameters":{"id":3477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3469,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3478,"src":"4662:15:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$3392_memory_ptr","typeString":"struct OFTLimit"},"typeName":{"id":3468,"nodeType":"UserDefinedTypeName","pathNode":{"id":3467,"name":"OFTLimit","nameLocations":["4662:8:25"],"nodeType":"IdentifierPath","referencedDeclaration":3392,"src":"4662:8:25"},"referencedDeclaration":3392,"src":"4662:8:25","typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$3392_storage_ptr","typeString":"struct OFTLimit"}},"visibility":"internal"},{"constant":false,"id":3473,"mutability":"mutable","name":"oftFeeDetails","nameLocation":"4701:13:25","nodeType":"VariableDeclaration","scope":3478,"src":"4679:35:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr","typeString":"struct OFTFeeDetail[]"},"typeName":{"baseType":{"id":3471,"nodeType":"UserDefinedTypeName","pathNode":{"id":3470,"name":"OFTFeeDetail","nameLocations":["4679:12:25"],"nodeType":"IdentifierPath","referencedDeclaration":3404,"src":"4679:12:25"},"referencedDeclaration":3404,"src":"4679:12:25","typeDescriptions":{"typeIdentifier":"t_struct$_OFTFeeDetail_$3404_storage_ptr","typeString":"struct OFTFeeDetail"}},"id":3472,"nodeType":"ArrayTypeName","src":"4679:14:25","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$3404_storage_$dyn_storage_ptr","typeString":"struct OFTFeeDetail[]"}},"visibility":"internal"},{"constant":false,"id":3476,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3478,"src":"4716:17:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt"},"typeName":{"id":3475,"nodeType":"UserDefinedTypeName","pathNode":{"id":3474,"name":"OFTReceipt","nameLocations":["4716:10:25"],"nodeType":"IdentifierPath","referencedDeclaration":3398,"src":"4716:10:25"},"referencedDeclaration":3398,"src":"4716:10:25","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_storage_ptr","typeString":"struct OFTReceipt"}},"visibility":"internal"}],"src":"4661:73:25"},"scope":3509,"src":"4576:159:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3479,"nodeType":"StructuredDocumentation","src":"4741:437:25","text":" @notice Provides a quote for the send() operation.\n @param _sendParam The parameters for the send() operation.\n @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\n @return fee The calculated LayerZero messaging fee from the send() operation.\n @dev MessagingFee: LayerZero msg fee\n  - nativeFee: The native fee.\n  - lzTokenFee: The lzToken fee."},"functionSelector":"3b6f743b","id":3490,"implemented":false,"kind":"function","modifiers":[],"name":"quoteSend","nameLocation":"5192:9:25","nodeType":"FunctionDefinition","parameters":{"id":3485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3482,"mutability":"mutable","name":"_sendParam","nameLocation":"5221:10:25","nodeType":"VariableDeclaration","scope":3490,"src":"5202:29:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":3481,"nodeType":"UserDefinedTypeName","pathNode":{"id":3480,"name":"SendParam","nameLocations":["5202:9:25"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"5202:9:25"},"referencedDeclaration":3386,"src":"5202:9:25","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"},{"constant":false,"id":3484,"mutability":"mutable","name":"_payInLzToken","nameLocation":"5238:13:25","nodeType":"VariableDeclaration","scope":3490,"src":"5233:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3483,"name":"bool","nodeType":"ElementaryTypeName","src":"5233:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5201:51:25"},"returnParameters":{"id":3489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3488,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3490,"src":"5276:19:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":3487,"nodeType":"UserDefinedTypeName","pathNode":{"id":3486,"name":"MessagingFee","nameLocations":["5276:12:25"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"5276:12:25"},"referencedDeclaration":33,"src":"5276:12:25","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"}],"src":"5275:21:25"},"scope":3509,"src":"5183:114:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3491,"nodeType":"StructuredDocumentation","src":"5303:727:25","text":" @notice Executes the send() operation.\n @param _sendParam The parameters for the send operation.\n @param _fee The fee information supplied by the caller.\n      - nativeFee: The native fee.\n      - lzTokenFee: The lzToken fee.\n @param _refundAddress The address to receive any excess funds from fees etc. on the src.\n @return receipt The LayerZero messaging receipt from the send() operation.\n @return oftReceipt The OFT receipt information.\n @dev MessagingReceipt: LayerZero msg receipt\n  - guid: The unique identifier for the sent message.\n  - nonce: The nonce of the sent message.\n  - fee: The LayerZero fee incurred for the message."},"functionSelector":"c7c7f5b3","id":3508,"implemented":false,"kind":"function","modifiers":[],"name":"send","nameLocation":"6044:4:25","nodeType":"FunctionDefinition","parameters":{"id":3500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3494,"mutability":"mutable","name":"_sendParam","nameLocation":"6077:10:25","nodeType":"VariableDeclaration","scope":3508,"src":"6058:29:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":3493,"nodeType":"UserDefinedTypeName","pathNode":{"id":3492,"name":"SendParam","nameLocations":["6058:9:25"],"nodeType":"IdentifierPath","referencedDeclaration":3386,"src":"6058:9:25"},"referencedDeclaration":3386,"src":"6058:9:25","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$3386_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"},{"constant":false,"id":3497,"mutability":"mutable","name":"_fee","nameLocation":"6119:4:25","nodeType":"VariableDeclaration","scope":3508,"src":"6097:26:25","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_calldata_ptr","typeString":"struct MessagingFee"},"typeName":{"id":3496,"nodeType":"UserDefinedTypeName","pathNode":{"id":3495,"name":"MessagingFee","nameLocations":["6097:12:25"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"6097:12:25"},"referencedDeclaration":33,"src":"6097:12:25","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"},{"constant":false,"id":3499,"mutability":"mutable","name":"_refundAddress","nameLocation":"6141:14:25","nodeType":"VariableDeclaration","scope":3508,"src":"6133:22:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3498,"name":"address","nodeType":"ElementaryTypeName","src":"6133:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6048:113:25"},"returnParameters":{"id":3507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3503,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3508,"src":"6188:23:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt"},"typeName":{"id":3502,"nodeType":"UserDefinedTypeName","pathNode":{"id":3501,"name":"MessagingReceipt","nameLocations":["6188:16:25"],"nodeType":"IdentifierPath","referencedDeclaration":28,"src":"6188:16:25"},"referencedDeclaration":28,"src":"6188:16:25","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_storage_ptr","typeString":"struct MessagingReceipt"}},"visibility":"internal"},{"constant":false,"id":3506,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3508,"src":"6213:17:25","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_memory_ptr","typeString":"struct OFTReceipt"},"typeName":{"id":3505,"nodeType":"UserDefinedTypeName","pathNode":{"id":3504,"name":"OFTReceipt","nameLocations":["6213:10:25"],"nodeType":"IdentifierPath","referencedDeclaration":3398,"src":"6213:10:25"},"referencedDeclaration":3398,"src":"6213:10:25","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$3398_storage_ptr","typeString":"struct OFTReceipt"}},"visibility":"internal"}],"src":"6187:44:25"},"scope":3509,"src":"6035:197:25","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":3510,"src":"1969:4265:25","usedErrors":[3407,3413],"usedEvents":[3425,3435]}],"src":"33:6202:25"},"id":25},"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol":{"ast":{"absolutePath":"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol","exportedSymbols":{"OFTComposeMsgCodec":[3678]},"id":3679,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3511,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:26"},{"abstract":false,"baseContracts":[],"canonicalName":"OFTComposeMsgCodec","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":3678,"linearizedBaseContracts":[3678],"name":"OFTComposeMsgCodec","nameLocation":"67:18:26","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":3514,"mutability":"constant","name":"NONCE_OFFSET","nameLocation":"170:12:26","nodeType":"VariableDeclaration","scope":3678,"src":"147:39:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3512,"name":"uint8","nodeType":"ElementaryTypeName","src":"147:5:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"38","id":3513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"185:1:26","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"private"},{"constant":true,"id":3517,"mutability":"constant","name":"SRC_EID_OFFSET","nameLocation":"215:14:26","nodeType":"VariableDeclaration","scope":3678,"src":"192:42:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3515,"name":"uint8","nodeType":"ElementaryTypeName","src":"192:5:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3132","id":3516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"232:2:26","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"visibility":"private"},{"constant":true,"id":3520,"mutability":"constant","name":"AMOUNT_LD_OFFSET","nameLocation":"263:16:26","nodeType":"VariableDeclaration","scope":3678,"src":"240:44:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3518,"name":"uint8","nodeType":"ElementaryTypeName","src":"240:5:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3434","id":3519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"282:2:26","typeDescriptions":{"typeIdentifier":"t_rational_44_by_1","typeString":"int_const 44"},"value":"44"},"visibility":"private"},{"constant":true,"id":3523,"mutability":"constant","name":"COMPOSE_FROM_OFFSET","nameLocation":"313:19:26","nodeType":"VariableDeclaration","scope":3678,"src":"290:47:26","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3521,"name":"uint8","nodeType":"ElementaryTypeName","src":"290:5:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3736","id":3522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"335:2:26","typeDescriptions":{"typeIdentifier":"t_rational_76_by_1","typeString":"int_const 76"},"value":"76"},"visibility":"private"},{"body":{"id":3547,"nodeType":"Block","src":"843:81:26","statements":[{"expression":{"id":3545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3537,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3535,"src":"853:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3540,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3526,"src":"877:6:26","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":3541,"name":"_srcEid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3528,"src":"885:7:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3542,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3530,"src":"894:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3543,"name":"_composeMsg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3532,"src":"905:11:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3538,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"860:3:26","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3539,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"864:12:26","memberName":"encodePacked","nodeType":"MemberAccess","src":"860:16:26","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"860:57:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"853:64:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3546,"nodeType":"ExpressionStatement","src":"853:64:26"}]},"documentation":{"id":3524,"nodeType":"StructuredDocumentation","src":"344:291:26","text":" @dev Encodes a OFT composed message.\n @param _nonce The nonce value.\n @param _srcEid The source endpoint ID.\n @param _amountLD The amount in local decimals.\n @param _composeMsg The composed message.\n @return _msg The encoded Composed message."},"id":3548,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nameLocation":"649:6:26","nodeType":"FunctionDefinition","parameters":{"id":3533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3526,"mutability":"mutable","name":"_nonce","nameLocation":"672:6:26","nodeType":"VariableDeclaration","scope":3548,"src":"665:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3525,"name":"uint64","nodeType":"ElementaryTypeName","src":"665:6:26","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3528,"mutability":"mutable","name":"_srcEid","nameLocation":"695:7:26","nodeType":"VariableDeclaration","scope":3548,"src":"688:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3527,"name":"uint32","nodeType":"ElementaryTypeName","src":"688:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3530,"mutability":"mutable","name":"_amountLD","nameLocation":"720:9:26","nodeType":"VariableDeclaration","scope":3548,"src":"712:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3529,"name":"uint256","nodeType":"ElementaryTypeName","src":"712:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3532,"mutability":"mutable","name":"_composeMsg","nameLocation":"752:11:26","nodeType":"VariableDeclaration","scope":3548,"src":"739:24:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3531,"name":"bytes","nodeType":"ElementaryTypeName","src":"739:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"655:145:26"},"returnParameters":{"id":3536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3535,"mutability":"mutable","name":"_msg","nameLocation":"837:4:26","nodeType":"VariableDeclaration","scope":3548,"src":"824:17:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3534,"name":"bytes","nodeType":"ElementaryTypeName","src":"824:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"823:19:26"},"scope":3678,"src":"640:284:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3566,"nodeType":"Block","src":"1135:59:26","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":3560,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"1166:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3561,"name":"NONCE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3514,"src":"1172:12:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1166:19:26","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1159:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes8_$","typeString":"type(bytes8)"},"typeName":{"id":3558,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1159:6:26","typeDescriptions":{}}},"id":3563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1159:27:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes8","typeString":"bytes8"}],"id":3557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1152:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3556,"name":"uint64","nodeType":"ElementaryTypeName","src":"1152:6:26","typeDescriptions":{}}},"id":3564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1152:35:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":3555,"id":3565,"nodeType":"Return","src":"1145:42:26"}]},"documentation":{"id":3549,"nodeType":"StructuredDocumentation","src":"930:133:26","text":" @dev Retrieves the nonce for the composed message.\n @param _msg The message.\n @return The nonce value."},"id":3567,"implemented":true,"kind":"function","modifiers":[],"name":"nonce","nameLocation":"1077:5:26","nodeType":"FunctionDefinition","parameters":{"id":3552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3551,"mutability":"mutable","name":"_msg","nameLocation":"1098:4:26","nodeType":"VariableDeclaration","scope":3567,"src":"1083:19:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3550,"name":"bytes","nodeType":"ElementaryTypeName","src":"1083:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1082:21:26"},"returnParameters":{"id":3555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3554,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3567,"src":"1127:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3553,"name":"uint64","nodeType":"ElementaryTypeName","src":"1127:6:26","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1126:8:26"},"scope":3678,"src":"1068:126:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3586,"nodeType":"Block","src":"1426:73:26","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":3579,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3570,"src":"1457:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3581,"name":"SRC_EID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3517,"src":"1475:14:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1457:33:26","startExpression":{"id":3580,"name":"NONCE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3514,"src":"1462:12:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1450:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":3577,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1450:6:26","typeDescriptions":{}}},"id":3583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1450:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":3576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1443:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":3575,"name":"uint32","nodeType":"ElementaryTypeName","src":"1443:6:26","typeDescriptions":{}}},"id":3584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1443:49:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":3574,"id":3585,"nodeType":"Return","src":"1436:56:26"}]},"documentation":{"id":3568,"nodeType":"StructuredDocumentation","src":"1200:153:26","text":" @dev Retrieves the source endpoint ID for the composed message.\n @param _msg The message.\n @return The source endpoint ID."},"id":3587,"implemented":true,"kind":"function","modifiers":[],"name":"srcEid","nameLocation":"1367:6:26","nodeType":"FunctionDefinition","parameters":{"id":3571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3570,"mutability":"mutable","name":"_msg","nameLocation":"1389:4:26","nodeType":"VariableDeclaration","scope":3587,"src":"1374:19:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3569,"name":"bytes","nodeType":"ElementaryTypeName","src":"1374:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1373:21:26"},"returnParameters":{"id":3574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3573,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3587,"src":"1418:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3572,"name":"uint32","nodeType":"ElementaryTypeName","src":"1418:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1417:8:26"},"scope":3678,"src":"1358:141:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3606,"nodeType":"Block","src":"1747:79:26","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":3599,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3590,"src":"1780:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3601,"name":"AMOUNT_LD_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3520,"src":"1800:16:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1780:37:26","startExpression":{"id":3600,"name":"SRC_EID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3517,"src":"1785:14:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1772:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3597,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1772:7:26","typeDescriptions":{}}},"id":3603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1772:46:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1764:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3595,"name":"uint256","nodeType":"ElementaryTypeName","src":"1764:7:26","typeDescriptions":{}}},"id":3604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1764:55:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3594,"id":3605,"nodeType":"Return","src":"1757:62:26"}]},"documentation":{"id":3588,"nodeType":"StructuredDocumentation","src":"1505:166:26","text":" @dev Retrieves the amount in local decimals from the composed message.\n @param _msg The message.\n @return The amount in local decimals."},"id":3607,"implemented":true,"kind":"function","modifiers":[],"name":"amountLD","nameLocation":"1685:8:26","nodeType":"FunctionDefinition","parameters":{"id":3591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3590,"mutability":"mutable","name":"_msg","nameLocation":"1709:4:26","nodeType":"VariableDeclaration","scope":3607,"src":"1694:19:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3589,"name":"bytes","nodeType":"ElementaryTypeName","src":"1694:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1693:21:26"},"returnParameters":{"id":3594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3593,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3607,"src":"1738:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3592,"name":"uint256","nodeType":"ElementaryTypeName","src":"1738:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1737:9:26"},"scope":3678,"src":"1676:150:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3623,"nodeType":"Block","src":"2063:75:26","statements":[{"expression":{"arguments":[{"baseExpression":{"id":3617,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3610,"src":"2088:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3619,"name":"COMPOSE_FROM_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"2110:19:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2088:42:26","startExpression":{"id":3618,"name":"AMOUNT_LD_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3520,"src":"2093:16:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2080:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3615,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2080:7:26","typeDescriptions":{}}},"id":3621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2080:51:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3614,"id":3622,"nodeType":"Return","src":"2073:58:26"}]},"documentation":{"id":3608,"nodeType":"StructuredDocumentation","src":"1832:152:26","text":" @dev Retrieves the composeFrom value from the composed message.\n @param _msg The message.\n @return The composeFrom value."},"id":3624,"implemented":true,"kind":"function","modifiers":[],"name":"composeFrom","nameLocation":"1998:11:26","nodeType":"FunctionDefinition","parameters":{"id":3611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3610,"mutability":"mutable","name":"_msg","nameLocation":"2025:4:26","nodeType":"VariableDeclaration","scope":3624,"src":"2010:19:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3609,"name":"bytes","nodeType":"ElementaryTypeName","src":"2010:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2009:21:26"},"returnParameters":{"id":3614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3613,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3624,"src":"2054:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3612,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2054:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2053:9:26"},"scope":3678,"src":"1989:149:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3636,"nodeType":"Block","src":"2351:50:26","statements":[{"expression":{"baseExpression":{"id":3632,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3627,"src":"2368:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2368:26:26","startExpression":{"id":3633,"name":"COMPOSE_FROM_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"2373:19:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"functionReturnParameters":3631,"id":3635,"nodeType":"Return","src":"2361:33:26"}]},"documentation":{"id":3625,"nodeType":"StructuredDocumentation","src":"2144:124:26","text":" @dev Retrieves the composed message.\n @param _msg The message.\n @return The composed message."},"id":3637,"implemented":true,"kind":"function","modifiers":[],"name":"composeMsg","nameLocation":"2282:10:26","nodeType":"FunctionDefinition","parameters":{"id":3628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3627,"mutability":"mutable","name":"_msg","nameLocation":"2308:4:26","nodeType":"VariableDeclaration","scope":3637,"src":"2293:19:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3626,"name":"bytes","nodeType":"ElementaryTypeName","src":"2293:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2292:21:26"},"returnParameters":{"id":3631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3630,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3637,"src":"2337:12:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3629,"name":"bytes","nodeType":"ElementaryTypeName","src":"2337:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2336:14:26"},"scope":3678,"src":"2273:128:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3656,"nodeType":"Block","src":"2642:56:26","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":3651,"name":"_addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3640,"src":"2683:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3650,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2675:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3649,"name":"uint160","nodeType":"ElementaryTypeName","src":"2675:7:26","typeDescriptions":{}}},"id":3652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2675:14:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2667:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3647,"name":"uint256","nodeType":"ElementaryTypeName","src":"2667:7:26","typeDescriptions":{}}},"id":3653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2667:23:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2659:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3645,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2659:7:26","typeDescriptions":{}}},"id":3654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2659:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3644,"id":3655,"nodeType":"Return","src":"2652:39:26"}]},"documentation":{"id":3638,"nodeType":"StructuredDocumentation","src":"2407:157:26","text":" @dev Converts an address to bytes32.\n @param _addr The address to convert.\n @return The bytes32 representation of the address."},"id":3657,"implemented":true,"kind":"function","modifiers":[],"name":"addressToBytes32","nameLocation":"2578:16:26","nodeType":"FunctionDefinition","parameters":{"id":3641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3640,"mutability":"mutable","name":"_addr","nameLocation":"2603:5:26","nodeType":"VariableDeclaration","scope":3657,"src":"2595:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3639,"name":"address","nodeType":"ElementaryTypeName","src":"2595:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2594:15:26"},"returnParameters":{"id":3644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3643,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3657,"src":"2633:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3642,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2633:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2632:9:26"},"scope":3678,"src":"2569:129:26","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3676,"nodeType":"Block","src":"2935:53:26","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":3671,"name":"_b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3660,"src":"2976:2:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2968:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3669,"name":"uint256","nodeType":"ElementaryTypeName","src":"2968:7:26","typeDescriptions":{}}},"id":3672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2968:11:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2960:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3667,"name":"uint160","nodeType":"ElementaryTypeName","src":"2960:7:26","typeDescriptions":{}}},"id":3673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2960:20:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2952:7:26","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3665,"name":"address","nodeType":"ElementaryTypeName","src":"2952:7:26","typeDescriptions":{}}},"id":3674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2952:29:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3664,"id":3675,"nodeType":"Return","src":"2945:36:26"}]},"documentation":{"id":3658,"nodeType":"StructuredDocumentation","src":"2704:156:26","text":" @dev Converts bytes32 to an address.\n @param _b The bytes32 value to convert.\n @return The address representation of bytes32."},"id":3677,"implemented":true,"kind":"function","modifiers":[],"name":"bytes32ToAddress","nameLocation":"2874:16:26","nodeType":"FunctionDefinition","parameters":{"id":3661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3660,"mutability":"mutable","name":"_b","nameLocation":"2899:2:26","nodeType":"VariableDeclaration","scope":3677,"src":"2891:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3659,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2891:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2890:12:26"},"returnParameters":{"id":3664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3663,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3677,"src":"2926:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3662,"name":"address","nodeType":"ElementaryTypeName","src":"2926:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2925:9:26"},"scope":3678,"src":"2865:123:26","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3679,"src":"59:2931:26","usedErrors":[],"usedEvents":[]}],"src":"33:2958:26"},"id":26},"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol":{"ast":{"absolutePath":"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol","exportedSymbols":{"OFTMsgCodec":[3832]},"id":3833,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3680,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"33:24:27"},{"abstract":false,"baseContracts":[],"canonicalName":"OFTMsgCodec","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":3832,"linearizedBaseContracts":[3832],"name":"OFTMsgCodec","nameLocation":"67:11:27","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":3683,"mutability":"constant","name":"SEND_TO_OFFSET","nameLocation":"171:14:27","nodeType":"VariableDeclaration","scope":3832,"src":"148:42:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3681,"name":"uint8","nodeType":"ElementaryTypeName","src":"148:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3332","id":3682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"188:2:27","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"visibility":"private"},{"constant":true,"id":3686,"mutability":"constant","name":"SEND_AMOUNT_SD_OFFSET","nameLocation":"219:21:27","nodeType":"VariableDeclaration","scope":3832,"src":"196:49:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3684,"name":"uint8","nodeType":"ElementaryTypeName","src":"196:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3430","id":3685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"243:2:27","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},"visibility":"private"},{"body":{"id":3727,"nodeType":"Block","src":"768:336:27","statements":[{"expression":{"id":3705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3700,"name":"hasCompose","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"778:10:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3701,"name":"_composeMsg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3693,"src":"791:11:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"803:6:27","memberName":"length","nodeType":"MemberAccess","src":"791:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"812:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"791:22:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"778:35:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3706,"nodeType":"ExpressionStatement","src":"778:35:27"},{"expression":{"id":3725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3707,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3696,"src":"927:4:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":3708,"name":"hasCompose","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"934:10:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":3721,"name":"_sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3689,"src":"1074:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3722,"name":"_amountShared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3691,"src":"1083:13:27","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":3719,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1057:3:27","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1061:12:27","memberName":"encodePacked","nodeType":"MemberAccess","src":"1057:16:27","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1057:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"934:163:27","trueExpression":{"arguments":[{"id":3711,"name":"_sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3689,"src":"976:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3712,"name":"_amountShared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3691,"src":"985:13:27","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"arguments":[{"expression":{"id":3714,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1017:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1021:6:27","memberName":"sender","nodeType":"MemberAccess","src":"1017:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3713,"name":"addressToBytes32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3811,"src":"1000:16:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes32_$","typeString":"function (address) pure returns (bytes32)"}},"id":3716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1000:28:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3717,"name":"_composeMsg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3693,"src":"1030:11:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3709,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"959:3:27","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"963:12:27","memberName":"encodePacked","nodeType":"MemberAccess","src":"959:16:27","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"959:83:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"927:170:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3726,"nodeType":"ExpressionStatement","src":"927:170:27"}]},"documentation":{"id":3687,"nodeType":"StructuredDocumentation","src":"252:341:27","text":" @dev Encodes an OFT LayerZero message.\n @param _sendTo The recipient address.\n @param _amountShared The amount in shared decimals.\n @param _composeMsg The composed message.\n @return _msg The encoded message.\n @return hasCompose A boolean indicating whether the message has a composed payload."},"id":3728,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nameLocation":"607:6:27","nodeType":"FunctionDefinition","parameters":{"id":3694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3689,"mutability":"mutable","name":"_sendTo","nameLocation":"631:7:27","nodeType":"VariableDeclaration","scope":3728,"src":"623:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3688,"name":"bytes32","nodeType":"ElementaryTypeName","src":"623:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3691,"mutability":"mutable","name":"_amountShared","nameLocation":"655:13:27","nodeType":"VariableDeclaration","scope":3728,"src":"648:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3690,"name":"uint64","nodeType":"ElementaryTypeName","src":"648:6:27","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":3693,"mutability":"mutable","name":"_composeMsg","nameLocation":"691:11:27","nodeType":"VariableDeclaration","scope":3728,"src":"678:24:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3692,"name":"bytes","nodeType":"ElementaryTypeName","src":"678:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"613:95:27"},"returnParameters":{"id":3699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3696,"mutability":"mutable","name":"_msg","nameLocation":"745:4:27","nodeType":"VariableDeclaration","scope":3728,"src":"732:17:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3695,"name":"bytes","nodeType":"ElementaryTypeName","src":"732:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3698,"mutability":"mutable","name":"hasCompose","nameLocation":"756:10:27","nodeType":"VariableDeclaration","scope":3728,"src":"751:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3697,"name":"bool","nodeType":"ElementaryTypeName","src":"751:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"731:36:27"},"scope":3832,"src":"598:506:27","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3741,"nodeType":"Block","src":"1352:59:27","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3736,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3731,"src":"1369:4:27","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1374:6:27","memberName":"length","nodeType":"MemberAccess","src":"1369:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3738,"name":"SEND_AMOUNT_SD_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3686,"src":"1383:21:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1369:35:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3735,"id":3740,"nodeType":"Return","src":"1362:42:27"}]},"documentation":{"id":3729,"nodeType":"StructuredDocumentation","src":"1110:167:27","text":" @dev Checks if the OFT message is composed.\n @param _msg The OFT message.\n @return A boolean indicating whether the message is composed."},"id":3742,"implemented":true,"kind":"function","modifiers":[],"name":"isComposed","nameLocation":"1291:10:27","nodeType":"FunctionDefinition","parameters":{"id":3732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3731,"mutability":"mutable","name":"_msg","nameLocation":"1317:4:27","nodeType":"VariableDeclaration","scope":3742,"src":"1302:19:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3730,"name":"bytes","nodeType":"ElementaryTypeName","src":"1302:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1301:21:27"},"returnParameters":{"id":3735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3734,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3742,"src":"1346:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3733,"name":"bool","nodeType":"ElementaryTypeName","src":"1346:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1345:6:27"},"scope":3832,"src":"1282:129:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3757,"nodeType":"Block","src":"1642:54:27","statements":[{"expression":{"arguments":[{"baseExpression":{"id":3752,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3745,"src":"1667:4:27","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3753,"name":"SEND_TO_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3683,"src":"1673:14:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1667:21:27","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1659:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3750,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1659:7:27","typeDescriptions":{}}},"id":3755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1659:30:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3749,"id":3756,"nodeType":"Return","src":"1652:37:27"}]},"documentation":{"id":3743,"nodeType":"StructuredDocumentation","src":"1417:151:27","text":" @dev Retrieves the recipient address from the OFT message.\n @param _msg The OFT message.\n @return The recipient address."},"id":3758,"implemented":true,"kind":"function","modifiers":[],"name":"sendTo","nameLocation":"1582:6:27","nodeType":"FunctionDefinition","parameters":{"id":3746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3745,"mutability":"mutable","name":"_msg","nameLocation":"1604:4:27","nodeType":"VariableDeclaration","scope":3758,"src":"1589:19:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3744,"name":"bytes","nodeType":"ElementaryTypeName","src":"1589:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1588:21:27"},"returnParameters":{"id":3749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3748,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3758,"src":"1633:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3747,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1633:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1632:9:27"},"scope":3832,"src":"1573:123:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3777,"nodeType":"Block","src":"1944:82:27","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":3770,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"1975:4:27","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":3772,"name":"SEND_AMOUNT_SD_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3686,"src":"1995:21:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1975:42:27","startExpression":{"id":3771,"name":"SEND_TO_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3683,"src":"1980:14:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":3769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1968:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes8_$","typeString":"type(bytes8)"},"typeName":{"id":3768,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1968:6:27","typeDescriptions":{}}},"id":3774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1968:50:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes8","typeString":"bytes8"}],"id":3767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1961:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":3766,"name":"uint64","nodeType":"ElementaryTypeName","src":"1961:6:27","typeDescriptions":{}}},"id":3775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1961:58:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":3765,"id":3776,"nodeType":"Return","src":"1954:65:27"}]},"documentation":{"id":3759,"nodeType":"StructuredDocumentation","src":"1702:167:27","text":" @dev Retrieves the amount in shared decimals from the OFT message.\n @param _msg The OFT message.\n @return The amount in shared decimals."},"id":3778,"implemented":true,"kind":"function","modifiers":[],"name":"amountSD","nameLocation":"1883:8:27","nodeType":"FunctionDefinition","parameters":{"id":3762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3761,"mutability":"mutable","name":"_msg","nameLocation":"1907:4:27","nodeType":"VariableDeclaration","scope":3778,"src":"1892:19:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3760,"name":"bytes","nodeType":"ElementaryTypeName","src":"1892:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1891:21:27"},"returnParameters":{"id":3765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3778,"src":"1936:6:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":3763,"name":"uint64","nodeType":"ElementaryTypeName","src":"1936:6:27","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1935:8:27"},"scope":3832,"src":"1874:152:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3790,"nodeType":"Block","src":"2264:52:27","statements":[{"expression":{"baseExpression":{"id":3786,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3781,"src":"2281:4:27","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2281:28:27","startExpression":{"id":3787,"name":"SEND_AMOUNT_SD_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3686,"src":"2286:21:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"functionReturnParameters":3785,"id":3789,"nodeType":"Return","src":"2274:35:27"}]},"documentation":{"id":3779,"nodeType":"StructuredDocumentation","src":"2032:149:27","text":" @dev Retrieves the composed message from the OFT message.\n @param _msg The OFT message.\n @return The composed message."},"id":3791,"implemented":true,"kind":"function","modifiers":[],"name":"composeMsg","nameLocation":"2195:10:27","nodeType":"FunctionDefinition","parameters":{"id":3782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3781,"mutability":"mutable","name":"_msg","nameLocation":"2221:4:27","nodeType":"VariableDeclaration","scope":3791,"src":"2206:19:27","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3780,"name":"bytes","nodeType":"ElementaryTypeName","src":"2206:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2205:21:27"},"returnParameters":{"id":3785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3784,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3791,"src":"2250:12:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3783,"name":"bytes","nodeType":"ElementaryTypeName","src":"2250:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2249:14:27"},"scope":3832,"src":"2186:130:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3810,"nodeType":"Block","src":"2557:56:27","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":3805,"name":"_addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3794,"src":"2598:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2590:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3803,"name":"uint160","nodeType":"ElementaryTypeName","src":"2590:7:27","typeDescriptions":{}}},"id":3806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2590:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2582:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3801,"name":"uint256","nodeType":"ElementaryTypeName","src":"2582:7:27","typeDescriptions":{}}},"id":3807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2582:23:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2574:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3799,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2574:7:27","typeDescriptions":{}}},"id":3808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2574:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3798,"id":3809,"nodeType":"Return","src":"2567:39:27"}]},"documentation":{"id":3792,"nodeType":"StructuredDocumentation","src":"2322:157:27","text":" @dev Converts an address to bytes32.\n @param _addr The address to convert.\n @return The bytes32 representation of the address."},"id":3811,"implemented":true,"kind":"function","modifiers":[],"name":"addressToBytes32","nameLocation":"2493:16:27","nodeType":"FunctionDefinition","parameters":{"id":3795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3794,"mutability":"mutable","name":"_addr","nameLocation":"2518:5:27","nodeType":"VariableDeclaration","scope":3811,"src":"2510:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3793,"name":"address","nodeType":"ElementaryTypeName","src":"2510:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2509:15:27"},"returnParameters":{"id":3798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3797,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3811,"src":"2548:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3796,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2548:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2547:9:27"},"scope":3832,"src":"2484:129:27","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3830,"nodeType":"Block","src":"2850:53:27","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":3825,"name":"_b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"2891:2:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2883:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3823,"name":"uint256","nodeType":"ElementaryTypeName","src":"2883:7:27","typeDescriptions":{}}},"id":3826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2883:11:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2875:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":3821,"name":"uint160","nodeType":"ElementaryTypeName","src":"2875:7:27","typeDescriptions":{}}},"id":3827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2875:20:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":3820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2867:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3819,"name":"address","nodeType":"ElementaryTypeName","src":"2867:7:27","typeDescriptions":{}}},"id":3828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2867:29:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3818,"id":3829,"nodeType":"Return","src":"2860:36:27"}]},"documentation":{"id":3812,"nodeType":"StructuredDocumentation","src":"2619:156:27","text":" @dev Converts bytes32 to an address.\n @param _b The bytes32 value to convert.\n @return The address representation of bytes32."},"id":3831,"implemented":true,"kind":"function","modifiers":[],"name":"bytes32ToAddress","nameLocation":"2789:16:27","nodeType":"FunctionDefinition","parameters":{"id":3815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3814,"mutability":"mutable","name":"_b","nameLocation":"2814:2:27","nodeType":"VariableDeclaration","scope":3831,"src":"2806:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3813,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2806:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2805:12:27"},"returnParameters":{"id":3818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3817,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3831,"src":"2841:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3816,"name":"address","nodeType":"ElementaryTypeName","src":"2841:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2840:9:27"},"scope":3832,"src":"2780:123:27","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3833,"src":"59:2846:27","usedErrors":[],"usedEvents":[]}],"src":"33:2873:27"},"id":27},"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[6685],"Ownable":[3980]},"id":3981,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3834,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:28"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":3836,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3981,"sourceUnit":6686,"src":"128:45:28","symbolAliases":[{"foreign":{"id":3835,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6685,"src":"136:7:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3838,"name":"Context","nameLocations":["692:7:28"],"nodeType":"IdentifierPath","referencedDeclaration":6685,"src":"692:7:28"},"id":3839,"nodeType":"InheritanceSpecifier","src":"692:7:28"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3837,"nodeType":"StructuredDocumentation","src":"175:487:28","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n The initial owner is set to the address provided by the deployer. This can\n later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":3980,"linearizedBaseContracts":[3980,6685],"name":"Ownable","nameLocation":"681:7:28","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3841,"mutability":"mutable","name":"_owner","nameLocation":"722:6:28","nodeType":"VariableDeclaration","scope":3980,"src":"706:22:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3840,"name":"address","nodeType":"ElementaryTypeName","src":"706:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"documentation":{"id":3842,"nodeType":"StructuredDocumentation","src":"735:85:28","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","id":3846,"name":"OwnableUnauthorizedAccount","nameLocation":"831:26:28","nodeType":"ErrorDefinition","parameters":{"id":3845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3844,"mutability":"mutable","name":"account","nameLocation":"866:7:28","nodeType":"VariableDeclaration","scope":3846,"src":"858:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3843,"name":"address","nodeType":"ElementaryTypeName","src":"858:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"857:17:28"},"src":"825:50:28"},{"documentation":{"id":3847,"nodeType":"StructuredDocumentation","src":"881:82:28","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","id":3851,"name":"OwnableInvalidOwner","nameLocation":"974:19:28","nodeType":"ErrorDefinition","parameters":{"id":3850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3849,"mutability":"mutable","name":"owner","nameLocation":"1002:5:28","nodeType":"VariableDeclaration","scope":3851,"src":"994:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3848,"name":"address","nodeType":"ElementaryTypeName","src":"994:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"993:15:28"},"src":"968:41:28"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":3857,"name":"OwnershipTransferred","nameLocation":"1021:20:28","nodeType":"EventDefinition","parameters":{"id":3856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3853,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1058:13:28","nodeType":"VariableDeclaration","scope":3857,"src":"1042:29:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3852,"name":"address","nodeType":"ElementaryTypeName","src":"1042:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3855,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1089:8:28","nodeType":"VariableDeclaration","scope":3857,"src":"1073:24:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3854,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1041:57:28"},"src":"1015:84:28"},{"body":{"id":3882,"nodeType":"Block","src":"1259:153:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3863,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3860,"src":"1273:12:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1297:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3865,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1289:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3864,"name":"address","nodeType":"ElementaryTypeName","src":"1289:7:28","typeDescriptions":{}}},"id":3867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1289:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1273:26:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3877,"nodeType":"IfStatement","src":"1269:95:28","trueBody":{"id":3876,"nodeType":"Block","src":"1301:63:28","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1350:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1342:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3870,"name":"address","nodeType":"ElementaryTypeName","src":"1342:7:28","typeDescriptions":{}}},"id":3873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1342:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3869,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3851,"src":"1322:19:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1322:31:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3875,"nodeType":"RevertStatement","src":"1315:38:28"}]}},{"expression":{"arguments":[{"id":3879,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3860,"src":"1392:12:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3878,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3979,"src":"1373:18:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:32:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3881,"nodeType":"ExpressionStatement","src":"1373:32:28"}]},"documentation":{"id":3858,"nodeType":"StructuredDocumentation","src":"1105:115:28","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"id":3883,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3860,"mutability":"mutable","name":"initialOwner","nameLocation":"1245:12:28","nodeType":"VariableDeclaration","scope":3883,"src":"1237:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3859,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1236:22:28"},"returnParameters":{"id":3862,"nodeType":"ParameterList","parameters":[],"src":"1259:0:28"},"scope":3980,"src":"1225:187:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3890,"nodeType":"Block","src":"1521:41:28","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3886,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3917,"src":"1531:11:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1531:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3888,"nodeType":"ExpressionStatement","src":"1531:13:28"},{"id":3889,"nodeType":"PlaceholderStatement","src":"1554:1:28"}]},"documentation":{"id":3884,"nodeType":"StructuredDocumentation","src":"1418:77:28","text":" @dev Throws if called by any account other than the owner."},"id":3891,"name":"onlyOwner","nameLocation":"1509:9:28","nodeType":"ModifierDefinition","parameters":{"id":3885,"nodeType":"ParameterList","parameters":[],"src":"1518:2:28"},"src":"1500:62:28","virtual":false,"visibility":"internal"},{"body":{"id":3899,"nodeType":"Block","src":"1693:30:28","statements":[{"expression":{"id":3897,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"1710:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3896,"id":3898,"nodeType":"Return","src":"1703:13:28"}]},"documentation":{"id":3892,"nodeType":"StructuredDocumentation","src":"1568:65:28","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":3900,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1647:5:28","nodeType":"FunctionDefinition","parameters":{"id":3893,"nodeType":"ParameterList","parameters":[],"src":"1652:2:28"},"returnParameters":{"id":3896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3895,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3900,"src":"1684:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3894,"name":"address","nodeType":"ElementaryTypeName","src":"1684:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1683:9:28"},"scope":3980,"src":"1638:85:28","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":3916,"nodeType":"Block","src":"1841:117:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3904,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3900,"src":"1855:5:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1855:7:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3906,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"1866:10:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1866:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1855:23:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3915,"nodeType":"IfStatement","src":"1851:101:28","trueBody":{"id":3914,"nodeType":"Block","src":"1880:72:28","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3910,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"1928:10:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1928:12:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3909,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3846,"src":"1901:26:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3913,"nodeType":"RevertStatement","src":"1894:47:28"}]}}]},"documentation":{"id":3901,"nodeType":"StructuredDocumentation","src":"1729:62:28","text":" @dev Throws if the sender is not the owner."},"id":3917,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1805:11:28","nodeType":"FunctionDefinition","parameters":{"id":3902,"nodeType":"ParameterList","parameters":[],"src":"1816:2:28"},"returnParameters":{"id":3903,"nodeType":"ParameterList","parameters":[],"src":"1841:0:28"},"scope":3980,"src":"1796:162:28","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":3930,"nodeType":"Block","src":"2347:47:28","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":3926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2384:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2376:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3924,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:28","typeDescriptions":{}}},"id":3927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2376:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3923,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3979,"src":"2357:18:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2357:30:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3929,"nodeType":"ExpressionStatement","src":"2357:30:28"}]},"documentation":{"id":3918,"nodeType":"StructuredDocumentation","src":"1964:324:28","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby disabling any functionality that is only available to the owner."},"functionSelector":"715018a6","id":3931,"implemented":true,"kind":"function","modifiers":[{"id":3921,"kind":"modifierInvocation","modifierName":{"id":3920,"name":"onlyOwner","nameLocations":["2337:9:28"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"2337:9:28"},"nodeType":"ModifierInvocation","src":"2337:9:28"}],"name":"renounceOwnership","nameLocation":"2302:17:28","nodeType":"FunctionDefinition","parameters":{"id":3919,"nodeType":"ParameterList","parameters":[],"src":"2319:2:28"},"returnParameters":{"id":3922,"nodeType":"ParameterList","parameters":[],"src":"2347:0:28"},"scope":3980,"src":"2293:101:28","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":3958,"nodeType":"Block","src":"2613:145:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3939,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3934,"src":"2627:8:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2639:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3940,"name":"address","nodeType":"ElementaryTypeName","src":"2639:7:28","typeDescriptions":{}}},"id":3943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2627:22:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3953,"nodeType":"IfStatement","src":"2623:91:28","trueBody":{"id":3952,"nodeType":"Block","src":"2651:63:28","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2700:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3947,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2692:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3946,"name":"address","nodeType":"ElementaryTypeName","src":"2692:7:28","typeDescriptions":{}}},"id":3949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2692:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3945,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3851,"src":"2672:19:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":3950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2672:31:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3951,"nodeType":"RevertStatement","src":"2665:38:28"}]}},{"expression":{"arguments":[{"id":3955,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3934,"src":"2742:8:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3954,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3979,"src":"2723:18:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2723:28:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3957,"nodeType":"ExpressionStatement","src":"2723:28:28"}]},"documentation":{"id":3932,"nodeType":"StructuredDocumentation","src":"2400:138:28","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":3959,"implemented":true,"kind":"function","modifiers":[{"id":3937,"kind":"modifierInvocation","modifierName":{"id":3936,"name":"onlyOwner","nameLocations":["2603:9:28"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"2603:9:28"},"nodeType":"ModifierInvocation","src":"2603:9:28"}],"name":"transferOwnership","nameLocation":"2552:17:28","nodeType":"FunctionDefinition","parameters":{"id":3935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3934,"mutability":"mutable","name":"newOwner","nameLocation":"2578:8:28","nodeType":"VariableDeclaration","scope":3959,"src":"2570:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3933,"name":"address","nodeType":"ElementaryTypeName","src":"2570:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2569:18:28"},"returnParameters":{"id":3938,"nodeType":"ParameterList","parameters":[],"src":"2613:0:28"},"scope":3980,"src":"2543:215:28","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":3978,"nodeType":"Block","src":"2975:124:28","statements":[{"assignments":[3966],"declarations":[{"constant":false,"id":3966,"mutability":"mutable","name":"oldOwner","nameLocation":"2993:8:28","nodeType":"VariableDeclaration","scope":3978,"src":"2985:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3965,"name":"address","nodeType":"ElementaryTypeName","src":"2985:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3968,"initialValue":{"id":3967,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"3004:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2985:25:28"},{"expression":{"id":3971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3969,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"3020:6:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3970,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"3029:8:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3020:17:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3972,"nodeType":"ExpressionStatement","src":"3020:17:28"},{"eventCall":{"arguments":[{"id":3974,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3966,"src":"3073:8:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3975,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3962,"src":"3083:8:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3973,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3857,"src":"3052:20:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":3976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3052:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3977,"nodeType":"EmitStatement","src":"3047:45:28"}]},"documentation":{"id":3960,"nodeType":"StructuredDocumentation","src":"2764:143:28","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":3979,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2921:18:28","nodeType":"FunctionDefinition","parameters":{"id":3963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3962,"mutability":"mutable","name":"newOwner","nameLocation":"2948:8:28","nodeType":"VariableDeclaration","scope":3979,"src":"2940:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3961,"name":"address","nodeType":"ElementaryTypeName","src":"2940:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2939:18:28"},"returnParameters":{"id":3964,"nodeType":"ParameterList","parameters":[],"src":"2975:0:28"},"scope":3980,"src":"2912:187:28","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":3981,"src":"663:2438:28","usedErrors":[3846,3851],"usedEvents":[3857]}],"src":"102:3000:28"},"id":28},"@openzeppelin/contracts/interfaces/IERC1271.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1271.sol","exportedSymbols":{"IERC1271":[3994]},"id":3995,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3982,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:29"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1271","contractDependencies":[],"contractKind":"interface","documentation":{"id":3983,"nodeType":"StructuredDocumentation","src":"133:160:29","text":" @dev Interface of the ERC-1271 standard signature validation method for\n contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]."},"fullyImplemented":false,"id":3994,"linearizedBaseContracts":[3994],"name":"IERC1271","nameLocation":"304:8:29","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3984,"nodeType":"StructuredDocumentation","src":"319:221:29","text":" @dev Should return whether the signature provided is valid for the provided data\n @param hash      Hash of the data to be signed\n @param signature Signature byte array associated with `hash`"},"functionSelector":"1626ba7e","id":3993,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"554:16:29","nodeType":"FunctionDefinition","parameters":{"id":3989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3986,"mutability":"mutable","name":"hash","nameLocation":"579:4:29","nodeType":"VariableDeclaration","scope":3993,"src":"571:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3985,"name":"bytes32","nodeType":"ElementaryTypeName","src":"571:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3988,"mutability":"mutable","name":"signature","nameLocation":"598:9:29","nodeType":"VariableDeclaration","scope":3993,"src":"585:22:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3987,"name":"bytes","nodeType":"ElementaryTypeName","src":"585:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"570:38:29"},"returnParameters":{"id":3992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3991,"mutability":"mutable","name":"magicValue","nameLocation":"639:10:29","nodeType":"VariableDeclaration","scope":3993,"src":"632:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":3990,"name":"bytes4","nodeType":"ElementaryTypeName","src":"632:6:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"631:19:29"},"scope":3994,"src":"545:106:29","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3995,"src":"294:359:29","usedErrors":[],"usedEvents":[]}],"src":"107:547:29"},"id":29},"@openzeppelin/contracts/interfaces/IERC1363.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1363.sol","exportedSymbols":{"IERC1363":[4076],"IERC165":[8631],"IERC20":[4842]},"id":4077,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3996,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:30"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","file":"./IERC20.sol","id":3998,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4077,"sourceUnit":4085,"src":"133:36:30","symbolAliases":[{"foreign":{"id":3997,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4842,"src":"141:6:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC165.sol","file":"./IERC165.sol","id":4000,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4077,"sourceUnit":4081,"src":"170:38:30","symbolAliases":[{"foreign":{"id":3999,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8631,"src":"178:7:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4002,"name":"IERC20","nameLocations":["590:6:30"],"nodeType":"IdentifierPath","referencedDeclaration":4842,"src":"590:6:30"},"id":4003,"nodeType":"InheritanceSpecifier","src":"590:6:30"},{"baseName":{"id":4004,"name":"IERC165","nameLocations":["598:7:30"],"nodeType":"IdentifierPath","referencedDeclaration":8631,"src":"598:7:30"},"id":4005,"nodeType":"InheritanceSpecifier","src":"598:7:30"}],"canonicalName":"IERC1363","contractDependencies":[],"contractKind":"interface","documentation":{"id":4001,"nodeType":"StructuredDocumentation","src":"210:357:30","text":" @title IERC1363\n @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction."},"fullyImplemented":false,"id":4076,"linearizedBaseContracts":[4076,8631,4842],"name":"IERC1363","nameLocation":"578:8:30","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4006,"nodeType":"StructuredDocumentation","src":"1148:370:30","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"1296ee62","id":4015,"implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"1532:15:30","nodeType":"FunctionDefinition","parameters":{"id":4011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4008,"mutability":"mutable","name":"to","nameLocation":"1556:2:30","nodeType":"VariableDeclaration","scope":4015,"src":"1548:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4007,"name":"address","nodeType":"ElementaryTypeName","src":"1548:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4010,"mutability":"mutable","name":"value","nameLocation":"1568:5:30","nodeType":"VariableDeclaration","scope":4015,"src":"1560:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4009,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1547:27:30"},"returnParameters":{"id":4014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4013,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4015,"src":"1593:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4012,"name":"bool","nodeType":"ElementaryTypeName","src":"1593:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1592:6:30"},"scope":4076,"src":"1523:76:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4016,"nodeType":"StructuredDocumentation","src":"1605:453:30","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"4000aea0","id":4027,"implemented":false,"kind":"function","modifiers":[],"name":"transferAndCall","nameLocation":"2072:15:30","nodeType":"FunctionDefinition","parameters":{"id":4023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4018,"mutability":"mutable","name":"to","nameLocation":"2096:2:30","nodeType":"VariableDeclaration","scope":4027,"src":"2088:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4017,"name":"address","nodeType":"ElementaryTypeName","src":"2088:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4020,"mutability":"mutable","name":"value","nameLocation":"2108:5:30","nodeType":"VariableDeclaration","scope":4027,"src":"2100:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4019,"name":"uint256","nodeType":"ElementaryTypeName","src":"2100:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4022,"mutability":"mutable","name":"data","nameLocation":"2130:4:30","nodeType":"VariableDeclaration","scope":4027,"src":"2115:19:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4021,"name":"bytes","nodeType":"ElementaryTypeName","src":"2115:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2087:48:30"},"returnParameters":{"id":4026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4025,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4027,"src":"2154:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4024,"name":"bool","nodeType":"ElementaryTypeName","src":"2154:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2153:6:30"},"scope":4076,"src":"2063:97:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4028,"nodeType":"StructuredDocumentation","src":"2166:453:30","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"d8fbe994","id":4039,"implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"2633:19:30","nodeType":"FunctionDefinition","parameters":{"id":4035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4030,"mutability":"mutable","name":"from","nameLocation":"2661:4:30","nodeType":"VariableDeclaration","scope":4039,"src":"2653:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4029,"name":"address","nodeType":"ElementaryTypeName","src":"2653:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4032,"mutability":"mutable","name":"to","nameLocation":"2675:2:30","nodeType":"VariableDeclaration","scope":4039,"src":"2667:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4031,"name":"address","nodeType":"ElementaryTypeName","src":"2667:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4034,"mutability":"mutable","name":"value","nameLocation":"2687:5:30","nodeType":"VariableDeclaration","scope":4039,"src":"2679:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4033,"name":"uint256","nodeType":"ElementaryTypeName","src":"2679:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2652:41:30"},"returnParameters":{"id":4038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4037,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4039,"src":"2712:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4036,"name":"bool","nodeType":"ElementaryTypeName","src":"2712:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2711:6:30"},"scope":4076,"src":"2624:94:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4040,"nodeType":"StructuredDocumentation","src":"2724:536:30","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"c1d34b89","id":4053,"implemented":false,"kind":"function","modifiers":[],"name":"transferFromAndCall","nameLocation":"3274:19:30","nodeType":"FunctionDefinition","parameters":{"id":4049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4042,"mutability":"mutable","name":"from","nameLocation":"3302:4:30","nodeType":"VariableDeclaration","scope":4053,"src":"3294:12:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4041,"name":"address","nodeType":"ElementaryTypeName","src":"3294:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4044,"mutability":"mutable","name":"to","nameLocation":"3316:2:30","nodeType":"VariableDeclaration","scope":4053,"src":"3308:10:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4043,"name":"address","nodeType":"ElementaryTypeName","src":"3308:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4046,"mutability":"mutable","name":"value","nameLocation":"3328:5:30","nodeType":"VariableDeclaration","scope":4053,"src":"3320:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4045,"name":"uint256","nodeType":"ElementaryTypeName","src":"3320:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4048,"mutability":"mutable","name":"data","nameLocation":"3350:4:30","nodeType":"VariableDeclaration","scope":4053,"src":"3335:19:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4047,"name":"bytes","nodeType":"ElementaryTypeName","src":"3335:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3293:62:30"},"returnParameters":{"id":4052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4051,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4053,"src":"3374:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4050,"name":"bool","nodeType":"ElementaryTypeName","src":"3374:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3373:6:30"},"scope":4076,"src":"3265:115:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4054,"nodeType":"StructuredDocumentation","src":"3386:390:30","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"3177029f","id":4063,"implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"3790:14:30","nodeType":"FunctionDefinition","parameters":{"id":4059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4056,"mutability":"mutable","name":"spender","nameLocation":"3813:7:30","nodeType":"VariableDeclaration","scope":4063,"src":"3805:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4055,"name":"address","nodeType":"ElementaryTypeName","src":"3805:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4058,"mutability":"mutable","name":"value","nameLocation":"3830:5:30","nodeType":"VariableDeclaration","scope":4063,"src":"3822:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4057,"name":"uint256","nodeType":"ElementaryTypeName","src":"3822:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3804:32:30"},"returnParameters":{"id":4062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4061,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4063,"src":"3855:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4060,"name":"bool","nodeType":"ElementaryTypeName","src":"3855:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3854:6:30"},"scope":4076,"src":"3781:80:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4064,"nodeType":"StructuredDocumentation","src":"3867:478:30","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @param data Additional data with no specified format, sent in call to `spender`.\n @return A boolean value indicating whether the operation succeeded unless throwing."},"functionSelector":"cae9ca51","id":4075,"implemented":false,"kind":"function","modifiers":[],"name":"approveAndCall","nameLocation":"4359:14:30","nodeType":"FunctionDefinition","parameters":{"id":4071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4066,"mutability":"mutable","name":"spender","nameLocation":"4382:7:30","nodeType":"VariableDeclaration","scope":4075,"src":"4374:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4065,"name":"address","nodeType":"ElementaryTypeName","src":"4374:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4068,"mutability":"mutable","name":"value","nameLocation":"4399:5:30","nodeType":"VariableDeclaration","scope":4075,"src":"4391:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4067,"name":"uint256","nodeType":"ElementaryTypeName","src":"4391:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4070,"mutability":"mutable","name":"data","nameLocation":"4421:4:30","nodeType":"VariableDeclaration","scope":4075,"src":"4406:19:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4069,"name":"bytes","nodeType":"ElementaryTypeName","src":"4406:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4373:53:30"},"returnParameters":{"id":4074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4073,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4075,"src":"4445:4:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4072,"name":"bool","nodeType":"ElementaryTypeName","src":"4445:4:30","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4444:6:30"},"scope":4076,"src":"4350:101:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4077,"src":"568:3885:30","usedErrors":[],"usedEvents":[4776,4785]}],"src":"107:4347:30"},"id":30},"@openzeppelin/contracts/interfaces/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC165.sol","exportedSymbols":{"IERC165":[8631]},"id":4081,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4078,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:31"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../utils/introspection/IERC165.sol","id":4080,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4081,"sourceUnit":8632,"src":"132:59:31","symbolAliases":[{"foreign":{"id":4079,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8631,"src":"140:7:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"106:86:31"},"id":31},"@openzeppelin/contracts/interfaces/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC20.sol","exportedSymbols":{"IERC20":[4842]},"id":4085,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4082,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:32"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../token/ERC20/IERC20.sol","id":4084,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4085,"sourceUnit":4843,"src":"131:49:32","symbolAliases":[{"foreign":{"id":4083,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4842,"src":"139:6:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"105:76:32"},"id":32},"@openzeppelin/contracts/interfaces/IERC4906.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4906.sol","exportedSymbols":{"IERC165":[8631],"IERC4906":[4108],"IERC721":[6406]},"id":4109,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4086,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:33"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC165.sol","file":"./IERC165.sol","id":4088,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4109,"sourceUnit":4081,"src":"133:38:33","symbolAliases":[{"foreign":{"id":4087,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8631,"src":"141:7:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC721.sol","file":"./IERC721.sol","id":4090,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4109,"sourceUnit":4113,"src":"172:38:33","symbolAliases":[{"foreign":{"id":4089,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6406,"src":"180:7:33","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4092,"name":"IERC165","nameLocations":["279:7:33"],"nodeType":"IdentifierPath","referencedDeclaration":8631,"src":"279:7:33"},"id":4093,"nodeType":"InheritanceSpecifier","src":"279:7:33"},{"baseName":{"id":4094,"name":"IERC721","nameLocations":["288:7:33"],"nodeType":"IdentifierPath","referencedDeclaration":6406,"src":"288:7:33"},"id":4095,"nodeType":"InheritanceSpecifier","src":"288:7:33"}],"canonicalName":"IERC4906","contractDependencies":[],"contractKind":"interface","documentation":{"id":4091,"nodeType":"StructuredDocumentation","src":"212:45:33","text":"@title ERC-721 Metadata Update Extension"},"fullyImplemented":false,"id":4108,"linearizedBaseContracts":[4108,6406,8631],"name":"IERC4906","nameLocation":"267:8:33","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":4096,"nodeType":"StructuredDocumentation","src":"302:201:33","text":"@dev This event emits when the metadata of a token is changed.\n So that the third-party platforms such as NFT market could\n timely update the images and related attributes of the NFT."},"eventSelector":"f8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7","id":4100,"name":"MetadataUpdate","nameLocation":"514:14:33","nodeType":"EventDefinition","parameters":{"id":4099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4098,"indexed":false,"mutability":"mutable","name":"_tokenId","nameLocation":"537:8:33","nodeType":"VariableDeclaration","scope":4100,"src":"529:16:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4097,"name":"uint256","nodeType":"ElementaryTypeName","src":"529:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"528:18:33"},"src":"508:39:33"},{"anonymous":false,"documentation":{"id":4101,"nodeType":"StructuredDocumentation","src":"553:212:33","text":"@dev This event emits when the metadata of a range of tokens is changed.\n So that the third-party platforms such as NFT market could\n timely update the images and related attributes of the NFTs."},"eventSelector":"6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c","id":4107,"name":"BatchMetadataUpdate","nameLocation":"776:19:33","nodeType":"EventDefinition","parameters":{"id":4106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4103,"indexed":false,"mutability":"mutable","name":"_fromTokenId","nameLocation":"804:12:33","nodeType":"VariableDeclaration","scope":4107,"src":"796:20:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4102,"name":"uint256","nodeType":"ElementaryTypeName","src":"796:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4105,"indexed":false,"mutability":"mutable","name":"_toTokenId","nameLocation":"826:10:33","nodeType":"VariableDeclaration","scope":4107,"src":"818:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4104,"name":"uint256","nodeType":"ElementaryTypeName","src":"818:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"795:42:33"},"src":"770:68:33"}],"scope":4109,"src":"257:583:33","usedErrors":[],"usedEvents":[4100,4107,6305,6314,6323]}],"src":"107:734:33"},"id":33},"@openzeppelin/contracts/interfaces/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC721.sol","exportedSymbols":{"IERC721":[6406]},"id":4113,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4110,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:34"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../token/ERC721/IERC721.sol","id":4112,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4113,"sourceUnit":6407,"src":"132:52:34","symbolAliases":[{"foreign":{"id":4111,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6406,"src":"140:7:34","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""}],"src":"106:79:34"},"id":34},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","exportedSymbols":{"IERC1155Errors":[4249],"IERC20Errors":[4154],"IERC721Errors":[4202]},"id":4250,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4114,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"112:24:35"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":4115,"nodeType":"StructuredDocumentation","src":"138:141:35","text":" @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens."},"fullyImplemented":true,"id":4154,"linearizedBaseContracts":[4154],"name":"IERC20Errors","nameLocation":"290:12:35","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4116,"nodeType":"StructuredDocumentation","src":"309:309:35","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"e450d38c","id":4124,"name":"ERC20InsufficientBalance","nameLocation":"629:24:35","nodeType":"ErrorDefinition","parameters":{"id":4123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4118,"mutability":"mutable","name":"sender","nameLocation":"662:6:35","nodeType":"VariableDeclaration","scope":4124,"src":"654:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4117,"name":"address","nodeType":"ElementaryTypeName","src":"654:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4120,"mutability":"mutable","name":"balance","nameLocation":"678:7:35","nodeType":"VariableDeclaration","scope":4124,"src":"670:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4119,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4122,"mutability":"mutable","name":"needed","nameLocation":"695:6:35","nodeType":"VariableDeclaration","scope":4124,"src":"687:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4121,"name":"uint256","nodeType":"ElementaryTypeName","src":"687:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"653:49:35"},"src":"623:80:35"},{"documentation":{"id":4125,"nodeType":"StructuredDocumentation","src":"709:152:35","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","id":4129,"name":"ERC20InvalidSender","nameLocation":"872:18:35","nodeType":"ErrorDefinition","parameters":{"id":4128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4127,"mutability":"mutable","name":"sender","nameLocation":"899:6:35","nodeType":"VariableDeclaration","scope":4129,"src":"891:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4126,"name":"address","nodeType":"ElementaryTypeName","src":"891:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"890:16:35"},"src":"866:41:35"},{"documentation":{"id":4130,"nodeType":"StructuredDocumentation","src":"913:159:35","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"ec442f05","id":4134,"name":"ERC20InvalidReceiver","nameLocation":"1083:20:35","nodeType":"ErrorDefinition","parameters":{"id":4133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4132,"mutability":"mutable","name":"receiver","nameLocation":"1112:8:35","nodeType":"VariableDeclaration","scope":4134,"src":"1104:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4131,"name":"address","nodeType":"ElementaryTypeName","src":"1104:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1103:18:35"},"src":"1077:45:35"},{"documentation":{"id":4135,"nodeType":"StructuredDocumentation","src":"1128:345:35","text":" @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer."},"errorSelector":"fb8f41b2","id":4143,"name":"ERC20InsufficientAllowance","nameLocation":"1484:26:35","nodeType":"ErrorDefinition","parameters":{"id":4142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4137,"mutability":"mutable","name":"spender","nameLocation":"1519:7:35","nodeType":"VariableDeclaration","scope":4143,"src":"1511:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4136,"name":"address","nodeType":"ElementaryTypeName","src":"1511:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4139,"mutability":"mutable","name":"allowance","nameLocation":"1536:9:35","nodeType":"VariableDeclaration","scope":4143,"src":"1528:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4138,"name":"uint256","nodeType":"ElementaryTypeName","src":"1528:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4141,"mutability":"mutable","name":"needed","nameLocation":"1555:6:35","nodeType":"VariableDeclaration","scope":4143,"src":"1547:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4140,"name":"uint256","nodeType":"ElementaryTypeName","src":"1547:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1510:52:35"},"src":"1478:85:35"},{"documentation":{"id":4144,"nodeType":"StructuredDocumentation","src":"1569:174:35","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"e602df05","id":4148,"name":"ERC20InvalidApprover","nameLocation":"1754:20:35","nodeType":"ErrorDefinition","parameters":{"id":4147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4146,"mutability":"mutable","name":"approver","nameLocation":"1783:8:35","nodeType":"VariableDeclaration","scope":4148,"src":"1775:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4145,"name":"address","nodeType":"ElementaryTypeName","src":"1775:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1774:18:35"},"src":"1748:45:35"},{"documentation":{"id":4149,"nodeType":"StructuredDocumentation","src":"1799:195:35","text":" @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"94280d62","id":4153,"name":"ERC20InvalidSpender","nameLocation":"2005:19:35","nodeType":"ErrorDefinition","parameters":{"id":4152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4151,"mutability":"mutable","name":"spender","nameLocation":"2033:7:35","nodeType":"VariableDeclaration","scope":4153,"src":"2025:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4150,"name":"address","nodeType":"ElementaryTypeName","src":"2025:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2024:17:35"},"src":"1999:43:35"}],"scope":4250,"src":"280:1764:35","usedErrors":[4124,4129,4134,4143,4148,4153],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":4155,"nodeType":"StructuredDocumentation","src":"2046:143:35","text":" @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens."},"fullyImplemented":true,"id":4202,"linearizedBaseContracts":[4202],"name":"IERC721Errors","nameLocation":"2200:13:35","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4156,"nodeType":"StructuredDocumentation","src":"2220:219:35","text":" @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n Used in balance queries.\n @param owner Address of the current owner of a token."},"errorSelector":"89c62b64","id":4160,"name":"ERC721InvalidOwner","nameLocation":"2450:18:35","nodeType":"ErrorDefinition","parameters":{"id":4159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4158,"mutability":"mutable","name":"owner","nameLocation":"2477:5:35","nodeType":"VariableDeclaration","scope":4160,"src":"2469:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4157,"name":"address","nodeType":"ElementaryTypeName","src":"2469:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2468:15:35"},"src":"2444:40:35"},{"documentation":{"id":4161,"nodeType":"StructuredDocumentation","src":"2490:132:35","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","id":4165,"name":"ERC721NonexistentToken","nameLocation":"2633:22:35","nodeType":"ErrorDefinition","parameters":{"id":4164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4163,"mutability":"mutable","name":"tokenId","nameLocation":"2664:7:35","nodeType":"VariableDeclaration","scope":4165,"src":"2656:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4162,"name":"uint256","nodeType":"ElementaryTypeName","src":"2656:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2655:17:35"},"src":"2627:46:35"},{"documentation":{"id":4166,"nodeType":"StructuredDocumentation","src":"2679:289:35","text":" @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token."},"errorSelector":"64283d7b","id":4174,"name":"ERC721IncorrectOwner","nameLocation":"2979:20:35","nodeType":"ErrorDefinition","parameters":{"id":4173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4168,"mutability":"mutable","name":"sender","nameLocation":"3008:6:35","nodeType":"VariableDeclaration","scope":4174,"src":"3000:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4167,"name":"address","nodeType":"ElementaryTypeName","src":"3000:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4170,"mutability":"mutable","name":"tokenId","nameLocation":"3024:7:35","nodeType":"VariableDeclaration","scope":4174,"src":"3016:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4169,"name":"uint256","nodeType":"ElementaryTypeName","src":"3016:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4172,"mutability":"mutable","name":"owner","nameLocation":"3041:5:35","nodeType":"VariableDeclaration","scope":4174,"src":"3033:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4171,"name":"address","nodeType":"ElementaryTypeName","src":"3033:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2999:48:35"},"src":"2973:75:35"},{"documentation":{"id":4175,"nodeType":"StructuredDocumentation","src":"3054:152:35","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","id":4179,"name":"ERC721InvalidSender","nameLocation":"3217:19:35","nodeType":"ErrorDefinition","parameters":{"id":4178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4177,"mutability":"mutable","name":"sender","nameLocation":"3245:6:35","nodeType":"VariableDeclaration","scope":4179,"src":"3237:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4176,"name":"address","nodeType":"ElementaryTypeName","src":"3237:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3236:16:35"},"src":"3211:42:35"},{"documentation":{"id":4180,"nodeType":"StructuredDocumentation","src":"3259:159:35","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"64a0ae92","id":4184,"name":"ERC721InvalidReceiver","nameLocation":"3429:21:35","nodeType":"ErrorDefinition","parameters":{"id":4183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4182,"mutability":"mutable","name":"receiver","nameLocation":"3459:8:35","nodeType":"VariableDeclaration","scope":4184,"src":"3451:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4181,"name":"address","nodeType":"ElementaryTypeName","src":"3451:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3450:18:35"},"src":"3423:46:35"},{"documentation":{"id":4185,"nodeType":"StructuredDocumentation","src":"3475:247:35","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token."},"errorSelector":"177e802f","id":4191,"name":"ERC721InsufficientApproval","nameLocation":"3733:26:35","nodeType":"ErrorDefinition","parameters":{"id":4190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4187,"mutability":"mutable","name":"operator","nameLocation":"3768:8:35","nodeType":"VariableDeclaration","scope":4191,"src":"3760:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4186,"name":"address","nodeType":"ElementaryTypeName","src":"3760:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4189,"mutability":"mutable","name":"tokenId","nameLocation":"3786:7:35","nodeType":"VariableDeclaration","scope":4191,"src":"3778:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4188,"name":"uint256","nodeType":"ElementaryTypeName","src":"3778:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3759:35:35"},"src":"3727:68:35"},{"documentation":{"id":4192,"nodeType":"StructuredDocumentation","src":"3801:174:35","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"a9fbf51f","id":4196,"name":"ERC721InvalidApprover","nameLocation":"3986:21:35","nodeType":"ErrorDefinition","parameters":{"id":4195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4194,"mutability":"mutable","name":"approver","nameLocation":"4016:8:35","nodeType":"VariableDeclaration","scope":4196,"src":"4008:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4193,"name":"address","nodeType":"ElementaryTypeName","src":"4008:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4007:18:35"},"src":"3980:46:35"},{"documentation":{"id":4197,"nodeType":"StructuredDocumentation","src":"4032:197:35","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"5b08ba18","id":4201,"name":"ERC721InvalidOperator","nameLocation":"4240:21:35","nodeType":"ErrorDefinition","parameters":{"id":4200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4199,"mutability":"mutable","name":"operator","nameLocation":"4270:8:35","nodeType":"VariableDeclaration","scope":4201,"src":"4262:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4198,"name":"address","nodeType":"ElementaryTypeName","src":"4262:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4261:18:35"},"src":"4234:46:35"}],"scope":4250,"src":"2190:2092:35","usedErrors":[4160,4165,4174,4179,4184,4191,4196,4201],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":4203,"nodeType":"StructuredDocumentation","src":"4284:145:35","text":" @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens."},"fullyImplemented":true,"id":4249,"linearizedBaseContracts":[4249],"name":"IERC1155Errors","nameLocation":"4440:14:35","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4204,"nodeType":"StructuredDocumentation","src":"4461:361:35","text":" @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token."},"errorSelector":"03dee4c5","id":4214,"name":"ERC1155InsufficientBalance","nameLocation":"4833:26:35","nodeType":"ErrorDefinition","parameters":{"id":4213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4206,"mutability":"mutable","name":"sender","nameLocation":"4868:6:35","nodeType":"VariableDeclaration","scope":4214,"src":"4860:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4205,"name":"address","nodeType":"ElementaryTypeName","src":"4860:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4208,"mutability":"mutable","name":"balance","nameLocation":"4884:7:35","nodeType":"VariableDeclaration","scope":4214,"src":"4876:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4207,"name":"uint256","nodeType":"ElementaryTypeName","src":"4876:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4210,"mutability":"mutable","name":"needed","nameLocation":"4901:6:35","nodeType":"VariableDeclaration","scope":4214,"src":"4893:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4209,"name":"uint256","nodeType":"ElementaryTypeName","src":"4893:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4212,"mutability":"mutable","name":"tokenId","nameLocation":"4917:7:35","nodeType":"VariableDeclaration","scope":4214,"src":"4909:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4211,"name":"uint256","nodeType":"ElementaryTypeName","src":"4909:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4859:66:35"},"src":"4827:99:35"},{"documentation":{"id":4215,"nodeType":"StructuredDocumentation","src":"4932:152:35","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","id":4219,"name":"ERC1155InvalidSender","nameLocation":"5095:20:35","nodeType":"ErrorDefinition","parameters":{"id":4218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4217,"mutability":"mutable","name":"sender","nameLocation":"5124:6:35","nodeType":"VariableDeclaration","scope":4219,"src":"5116:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4216,"name":"address","nodeType":"ElementaryTypeName","src":"5116:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5115:16:35"},"src":"5089:43:35"},{"documentation":{"id":4220,"nodeType":"StructuredDocumentation","src":"5138:159:35","text":" @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred."},"errorSelector":"57f447ce","id":4224,"name":"ERC1155InvalidReceiver","nameLocation":"5308:22:35","nodeType":"ErrorDefinition","parameters":{"id":4223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4222,"mutability":"mutable","name":"receiver","nameLocation":"5339:8:35","nodeType":"VariableDeclaration","scope":4224,"src":"5331:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4221,"name":"address","nodeType":"ElementaryTypeName","src":"5331:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5330:18:35"},"src":"5302:47:35"},{"documentation":{"id":4225,"nodeType":"StructuredDocumentation","src":"5355:256:35","text":" @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token."},"errorSelector":"e237d922","id":4231,"name":"ERC1155MissingApprovalForAll","nameLocation":"5622:28:35","nodeType":"ErrorDefinition","parameters":{"id":4230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4227,"mutability":"mutable","name":"operator","nameLocation":"5659:8:35","nodeType":"VariableDeclaration","scope":4231,"src":"5651:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4226,"name":"address","nodeType":"ElementaryTypeName","src":"5651:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4229,"mutability":"mutable","name":"owner","nameLocation":"5677:5:35","nodeType":"VariableDeclaration","scope":4231,"src":"5669:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4228,"name":"address","nodeType":"ElementaryTypeName","src":"5669:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5650:33:35"},"src":"5616:68:35"},{"documentation":{"id":4232,"nodeType":"StructuredDocumentation","src":"5690:174:35","text":" @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation."},"errorSelector":"3e31884e","id":4236,"name":"ERC1155InvalidApprover","nameLocation":"5875:22:35","nodeType":"ErrorDefinition","parameters":{"id":4235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4234,"mutability":"mutable","name":"approver","nameLocation":"5906:8:35","nodeType":"VariableDeclaration","scope":4236,"src":"5898:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4233,"name":"address","nodeType":"ElementaryTypeName","src":"5898:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5897:18:35"},"src":"5869:47:35"},{"documentation":{"id":4237,"nodeType":"StructuredDocumentation","src":"5922:197:35","text":" @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner."},"errorSelector":"ced3e100","id":4241,"name":"ERC1155InvalidOperator","nameLocation":"6130:22:35","nodeType":"ErrorDefinition","parameters":{"id":4240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4239,"mutability":"mutable","name":"operator","nameLocation":"6161:8:35","nodeType":"VariableDeclaration","scope":4241,"src":"6153:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4238,"name":"address","nodeType":"ElementaryTypeName","src":"6153:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6152:18:35"},"src":"6124:47:35"},{"documentation":{"id":4242,"nodeType":"StructuredDocumentation","src":"6177:280:35","text":" @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts"},"errorSelector":"5b059991","id":4248,"name":"ERC1155InvalidArrayLength","nameLocation":"6468:25:35","nodeType":"ErrorDefinition","parameters":{"id":4247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4244,"mutability":"mutable","name":"idsLength","nameLocation":"6502:9:35","nodeType":"VariableDeclaration","scope":4248,"src":"6494:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4243,"name":"uint256","nodeType":"ElementaryTypeName","src":"6494:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4246,"mutability":"mutable","name":"valuesLength","nameLocation":"6521:12:35","nodeType":"VariableDeclaration","scope":4248,"src":"6513:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4245,"name":"uint256","nodeType":"ElementaryTypeName","src":"6513:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6493:41:35"},"src":"6462:73:35"}],"scope":4250,"src":"4430:2107:35","usedErrors":[4214,4219,4224,4231,4236,4241,4248],"usedEvents":[]}],"src":"112:6426:35"},"id":35},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[6685],"ERC20":[4764],"IERC20":[4842],"IERC20Errors":[4154],"IERC20Metadata":[4868]},"id":4765,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4251,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:36"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":4253,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4765,"sourceUnit":4843,"src":"131:36:36","symbolAliases":[{"foreign":{"id":4252,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4842,"src":"139:6:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":4255,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4765,"sourceUnit":4869,"src":"168:63:36","symbolAliases":[{"foreign":{"id":4254,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4868,"src":"176:14:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":4257,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4765,"sourceUnit":6686,"src":"232:48:36","symbolAliases":[{"foreign":{"id":4256,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6685,"src":"240:7:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","id":4259,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4765,"sourceUnit":4250,"src":"281:65:36","symbolAliases":[{"foreign":{"id":4258,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4154,"src":"289:12:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4261,"name":"Context","nameLocations":["1133:7:36"],"nodeType":"IdentifierPath","referencedDeclaration":6685,"src":"1133:7:36"},"id":4262,"nodeType":"InheritanceSpecifier","src":"1133:7:36"},{"baseName":{"id":4263,"name":"IERC20","nameLocations":["1142:6:36"],"nodeType":"IdentifierPath","referencedDeclaration":4842,"src":"1142:6:36"},"id":4264,"nodeType":"InheritanceSpecifier","src":"1142:6:36"},{"baseName":{"id":4265,"name":"IERC20Metadata","nameLocations":["1150:14:36"],"nodeType":"IdentifierPath","referencedDeclaration":4868,"src":"1150:14:36"},"id":4266,"nodeType":"InheritanceSpecifier","src":"1150:14:36"},{"baseName":{"id":4267,"name":"IERC20Errors","nameLocations":["1166:12:36"],"nodeType":"IdentifierPath","referencedDeclaration":4154,"src":"1166:12:36"},"id":4268,"nodeType":"InheritanceSpecifier","src":"1166:12:36"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":4260,"nodeType":"StructuredDocumentation","src":"348:757:36","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications."},"fullyImplemented":true,"id":4764,"linearizedBaseContracts":[4764,4154,4868,4842,6685],"name":"ERC20","nameLocation":"1124:5:36","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4272,"mutability":"mutable","name":"_balances","nameLocation":"1229:9:36","nodeType":"VariableDeclaration","scope":4764,"src":"1185:53:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":4271,"keyName":"account","keyNameLocation":"1201:7:36","keyType":{"id":4269,"name":"address","nodeType":"ElementaryTypeName","src":"1193:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1185:35:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4270,"name":"uint256","nodeType":"ElementaryTypeName","src":"1212:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":4278,"mutability":"mutable","name":"_allowances","nameLocation":"1317:11:36","nodeType":"VariableDeclaration","scope":4764,"src":"1245:83:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":4277,"keyName":"account","keyNameLocation":"1261:7:36","keyType":{"id":4273,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1245:63:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4276,"keyName":"spender","keyNameLocation":"1288:7:36","keyType":{"id":4274,"name":"address","nodeType":"ElementaryTypeName","src":"1280:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1272:35:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4275,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":4280,"mutability":"mutable","name":"_totalSupply","nameLocation":"1351:12:36","nodeType":"VariableDeclaration","scope":4764,"src":"1335:28:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4279,"name":"uint256","nodeType":"ElementaryTypeName","src":"1335:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":4282,"mutability":"mutable","name":"_name","nameLocation":"1385:5:36","nodeType":"VariableDeclaration","scope":4764,"src":"1370:20:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":4281,"name":"string","nodeType":"ElementaryTypeName","src":"1370:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":4284,"mutability":"mutable","name":"_symbol","nameLocation":"1411:7:36","nodeType":"VariableDeclaration","scope":4764,"src":"1396:22:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":4283,"name":"string","nodeType":"ElementaryTypeName","src":"1396:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":4300,"nodeType":"Block","src":"1638:57:36","statements":[{"expression":{"id":4294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4292,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"1648:5:36","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4293,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4287,"src":"1656:5:36","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1648:13:36","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":4295,"nodeType":"ExpressionStatement","src":"1648:13:36"},{"expression":{"id":4298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4296,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4284,"src":"1671:7:36","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4297,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4289,"src":"1681:7:36","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1671:17:36","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":4299,"nodeType":"ExpressionStatement","src":"1671:17:36"}]},"documentation":{"id":4285,"nodeType":"StructuredDocumentation","src":"1425:152:36","text":" @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction."},"id":4301,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":4290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4287,"mutability":"mutable","name":"name_","nameLocation":"1608:5:36","nodeType":"VariableDeclaration","scope":4301,"src":"1594:19:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4286,"name":"string","nodeType":"ElementaryTypeName","src":"1594:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":4289,"mutability":"mutable","name":"symbol_","nameLocation":"1629:7:36","nodeType":"VariableDeclaration","scope":4301,"src":"1615:21:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4288,"name":"string","nodeType":"ElementaryTypeName","src":"1615:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1593:44:36"},"returnParameters":{"id":4291,"nodeType":"ParameterList","parameters":[],"src":"1638:0:36"},"scope":4764,"src":"1582:113:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[4855],"body":{"id":4309,"nodeType":"Block","src":"1820:29:36","statements":[{"expression":{"id":4307,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4282,"src":"1837:5:36","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":4306,"id":4308,"nodeType":"Return","src":"1830:12:36"}]},"documentation":{"id":4302,"nodeType":"StructuredDocumentation","src":"1701:54:36","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":4310,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"1769:4:36","nodeType":"FunctionDefinition","parameters":{"id":4303,"nodeType":"ParameterList","parameters":[],"src":"1773:2:36"},"returnParameters":{"id":4306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4305,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4310,"src":"1805:13:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4304,"name":"string","nodeType":"ElementaryTypeName","src":"1805:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1804:15:36"},"scope":4764,"src":"1760:89:36","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4861],"body":{"id":4318,"nodeType":"Block","src":"2024:31:36","statements":[{"expression":{"id":4316,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4284,"src":"2041:7:36","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":4315,"id":4317,"nodeType":"Return","src":"2034:14:36"}]},"documentation":{"id":4311,"nodeType":"StructuredDocumentation","src":"1855:102:36","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":4319,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"1971:6:36","nodeType":"FunctionDefinition","parameters":{"id":4312,"nodeType":"ParameterList","parameters":[],"src":"1977:2:36"},"returnParameters":{"id":4315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4319,"src":"2009:13:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4313,"name":"string","nodeType":"ElementaryTypeName","src":"2009:6:36","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2008:15:36"},"scope":4764,"src":"1962:93:36","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4867],"body":{"id":4327,"nodeType":"Block","src":"2744:26:36","statements":[{"expression":{"hexValue":"3138","id":4325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2761:2:36","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":4324,"id":4326,"nodeType":"Return","src":"2754:9:36"}]},"documentation":{"id":4320,"nodeType":"StructuredDocumentation","src":"2061:622:36","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":4328,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"2697:8:36","nodeType":"FunctionDefinition","parameters":{"id":4321,"nodeType":"ParameterList","parameters":[],"src":"2705:2:36"},"returnParameters":{"id":4324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4323,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4328,"src":"2737:5:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4322,"name":"uint8","nodeType":"ElementaryTypeName","src":"2737:5:36","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2736:7:36"},"scope":4764,"src":"2688:82:36","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4791],"body":{"id":4336,"nodeType":"Block","src":"2891:36:36","statements":[{"expression":{"id":4334,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4280,"src":"2908:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4333,"id":4335,"nodeType":"Return","src":"2901:19:36"}]},"documentation":{"id":4329,"nodeType":"StructuredDocumentation","src":"2776:49:36","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":4337,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2839:11:36","nodeType":"FunctionDefinition","parameters":{"id":4330,"nodeType":"ParameterList","parameters":[],"src":"2850:2:36"},"returnParameters":{"id":4333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4332,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4337,"src":"2882:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4331,"name":"uint256","nodeType":"ElementaryTypeName","src":"2882:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2881:9:36"},"scope":4764,"src":"2830:97:36","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4799],"body":{"id":4349,"nodeType":"Block","src":"3059:42:36","statements":[{"expression":{"baseExpression":{"id":4345,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4272,"src":"3076:9:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4347,"indexExpression":{"id":4346,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4340,"src":"3086:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3076:18:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4344,"id":4348,"nodeType":"Return","src":"3069:25:36"}]},"documentation":{"id":4338,"nodeType":"StructuredDocumentation","src":"2933:47:36","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":4350,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2994:9:36","nodeType":"FunctionDefinition","parameters":{"id":4341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4340,"mutability":"mutable","name":"account","nameLocation":"3012:7:36","nodeType":"VariableDeclaration","scope":4350,"src":"3004:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4339,"name":"address","nodeType":"ElementaryTypeName","src":"3004:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3003:17:36"},"returnParameters":{"id":4344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4350,"src":"3050:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4342,"name":"uint256","nodeType":"ElementaryTypeName","src":"3050:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3049:9:36"},"scope":4764,"src":"2985:116:36","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4809],"body":{"id":4373,"nodeType":"Block","src":"3371:103:36","statements":[{"assignments":[4361],"declarations":[{"constant":false,"id":4361,"mutability":"mutable","name":"owner","nameLocation":"3389:5:36","nodeType":"VariableDeclaration","scope":4373,"src":"3381:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4360,"name":"address","nodeType":"ElementaryTypeName","src":"3381:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4364,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":4362,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"3397:10:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3397:12:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3381:28:36"},{"expression":{"arguments":[{"id":4366,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4361,"src":"3429:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4367,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4353,"src":"3436:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4368,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4355,"src":"3440:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4365,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4494,"src":"3419:9:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3419:27:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4370,"nodeType":"ExpressionStatement","src":"3419:27:36"},{"expression":{"hexValue":"74727565","id":4371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3463:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4359,"id":4372,"nodeType":"Return","src":"3456:11:36"}]},"documentation":{"id":4351,"nodeType":"StructuredDocumentation","src":"3107:184:36","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`."},"functionSelector":"a9059cbb","id":4374,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3305:8:36","nodeType":"FunctionDefinition","parameters":{"id":4356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4353,"mutability":"mutable","name":"to","nameLocation":"3322:2:36","nodeType":"VariableDeclaration","scope":4374,"src":"3314:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4352,"name":"address","nodeType":"ElementaryTypeName","src":"3314:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4355,"mutability":"mutable","name":"value","nameLocation":"3334:5:36","nodeType":"VariableDeclaration","scope":4374,"src":"3326:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4354,"name":"uint256","nodeType":"ElementaryTypeName","src":"3326:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3313:27:36"},"returnParameters":{"id":4359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4358,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4374,"src":"3365:4:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4357,"name":"bool","nodeType":"ElementaryTypeName","src":"3365:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3364:6:36"},"scope":4764,"src":"3296:178:36","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[4819],"body":{"id":4390,"nodeType":"Block","src":"3621:51:36","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":4384,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4278,"src":"3638:11:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":4386,"indexExpression":{"id":4385,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4377,"src":"3650:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3638:18:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4388,"indexExpression":{"id":4387,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4379,"src":"3657:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3638:27:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4383,"id":4389,"nodeType":"Return","src":"3631:34:36"}]},"documentation":{"id":4375,"nodeType":"StructuredDocumentation","src":"3480:47:36","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":4391,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3541:9:36","nodeType":"FunctionDefinition","parameters":{"id":4380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4377,"mutability":"mutable","name":"owner","nameLocation":"3559:5:36","nodeType":"VariableDeclaration","scope":4391,"src":"3551:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4376,"name":"address","nodeType":"ElementaryTypeName","src":"3551:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4379,"mutability":"mutable","name":"spender","nameLocation":"3574:7:36","nodeType":"VariableDeclaration","scope":4391,"src":"3566:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4378,"name":"address","nodeType":"ElementaryTypeName","src":"3566:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3550:32:36"},"returnParameters":{"id":4383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4382,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4391,"src":"3612:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4381,"name":"uint256","nodeType":"ElementaryTypeName","src":"3612:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3611:9:36"},"scope":4764,"src":"3532:140:36","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[4829],"body":{"id":4414,"nodeType":"Block","src":"4058:107:36","statements":[{"assignments":[4402],"declarations":[{"constant":false,"id":4402,"mutability":"mutable","name":"owner","nameLocation":"4076:5:36","nodeType":"VariableDeclaration","scope":4414,"src":"4068:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4401,"name":"address","nodeType":"ElementaryTypeName","src":"4068:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4405,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":4403,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"4084:10:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4084:12:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4068:28:36"},{"expression":{"arguments":[{"id":4407,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4402,"src":"4115:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4408,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4394,"src":"4122:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4409,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"4131:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4406,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[4655,4715],"referencedDeclaration":4655,"src":"4106:8:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4106:31:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4411,"nodeType":"ExpressionStatement","src":"4106:31:36"},{"expression":{"hexValue":"74727565","id":4412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4154:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4400,"id":4413,"nodeType":"Return","src":"4147:11:36"}]},"documentation":{"id":4392,"nodeType":"StructuredDocumentation","src":"3678:296:36","text":" @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":4415,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3988:7:36","nodeType":"FunctionDefinition","parameters":{"id":4397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4394,"mutability":"mutable","name":"spender","nameLocation":"4004:7:36","nodeType":"VariableDeclaration","scope":4415,"src":"3996:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4393,"name":"address","nodeType":"ElementaryTypeName","src":"3996:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4396,"mutability":"mutable","name":"value","nameLocation":"4021:5:36","nodeType":"VariableDeclaration","scope":4415,"src":"4013:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4395,"name":"uint256","nodeType":"ElementaryTypeName","src":"4013:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3995:32:36"},"returnParameters":{"id":4400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4399,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4415,"src":"4052:4:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4398,"name":"bool","nodeType":"ElementaryTypeName","src":"4052:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4051:6:36"},"scope":4764,"src":"3979:186:36","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[4841],"body":{"id":4446,"nodeType":"Block","src":"4850:151:36","statements":[{"assignments":[4428],"declarations":[{"constant":false,"id":4428,"mutability":"mutable","name":"spender","nameLocation":"4868:7:36","nodeType":"VariableDeclaration","scope":4446,"src":"4860:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4427,"name":"address","nodeType":"ElementaryTypeName","src":"4860:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4431,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":4429,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"4878:10:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":4430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4878:12:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4860:30:36"},{"expression":{"arguments":[{"id":4433,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4418,"src":"4916:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4434,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4428,"src":"4922:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4435,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4422,"src":"4931:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4432,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4763,"src":"4900:15:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4900:37:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4437,"nodeType":"ExpressionStatement","src":"4900:37:36"},{"expression":{"arguments":[{"id":4439,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4418,"src":"4957:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4440,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4420,"src":"4963:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4441,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4422,"src":"4967:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4438,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4494,"src":"4947:9:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4947:26:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4443,"nodeType":"ExpressionStatement","src":"4947:26:36"},{"expression":{"hexValue":"74727565","id":4444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4990:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4426,"id":4445,"nodeType":"Return","src":"4983:11:36"}]},"documentation":{"id":4416,"nodeType":"StructuredDocumentation","src":"4171:581:36","text":" @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`."},"functionSelector":"23b872dd","id":4447,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4766:12:36","nodeType":"FunctionDefinition","parameters":{"id":4423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4418,"mutability":"mutable","name":"from","nameLocation":"4787:4:36","nodeType":"VariableDeclaration","scope":4447,"src":"4779:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4417,"name":"address","nodeType":"ElementaryTypeName","src":"4779:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4420,"mutability":"mutable","name":"to","nameLocation":"4801:2:36","nodeType":"VariableDeclaration","scope":4447,"src":"4793:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4419,"name":"address","nodeType":"ElementaryTypeName","src":"4793:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4422,"mutability":"mutable","name":"value","nameLocation":"4813:5:36","nodeType":"VariableDeclaration","scope":4447,"src":"4805:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4421,"name":"uint256","nodeType":"ElementaryTypeName","src":"4805:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4778:41:36"},"returnParameters":{"id":4426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4425,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4447,"src":"4844:4:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4424,"name":"bool","nodeType":"ElementaryTypeName","src":"4844:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4843:6:36"},"scope":4764,"src":"4757:244:36","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":4493,"nodeType":"Block","src":"5443:231:36","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4457,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4450,"src":"5457:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5473:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5465:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4458,"name":"address","nodeType":"ElementaryTypeName","src":"5465:7:36","typeDescriptions":{}}},"id":4461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5465:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5457:18:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4471,"nodeType":"IfStatement","src":"5453:86:36","trueBody":{"id":4470,"nodeType":"Block","src":"5477:62:36","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":4466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5525:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5517:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4464,"name":"address","nodeType":"ElementaryTypeName","src":"5517:7:36","typeDescriptions":{}}},"id":4467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5517:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4463,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4129,"src":"5498:18:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":4468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:30:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4469,"nodeType":"RevertStatement","src":"5491:37:36"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4472,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"5552:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5566:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5558:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4473,"name":"address","nodeType":"ElementaryTypeName","src":"5558:7:36","typeDescriptions":{}}},"id":4476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5558:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5552:16:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4486,"nodeType":"IfStatement","src":"5548:86:36","trueBody":{"id":4485,"nodeType":"Block","src":"5570:64:36","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":4481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5620:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5612:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4479,"name":"address","nodeType":"ElementaryTypeName","src":"5612:7:36","typeDescriptions":{}}},"id":4482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5612:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4478,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4134,"src":"5591:20:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":4483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5591:32:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4484,"nodeType":"RevertStatement","src":"5584:39:36"}]}},{"expression":{"arguments":[{"id":4488,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4450,"src":"5651:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4489,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"5657:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4490,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4454,"src":"5661:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4487,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4571,"src":"5643:7:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5643:24:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4492,"nodeType":"ExpressionStatement","src":"5643:24:36"}]},"documentation":{"id":4448,"nodeType":"StructuredDocumentation","src":"5007:362:36","text":" @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":4494,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"5383:9:36","nodeType":"FunctionDefinition","parameters":{"id":4455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4450,"mutability":"mutable","name":"from","nameLocation":"5401:4:36","nodeType":"VariableDeclaration","scope":4494,"src":"5393:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4449,"name":"address","nodeType":"ElementaryTypeName","src":"5393:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4452,"mutability":"mutable","name":"to","nameLocation":"5415:2:36","nodeType":"VariableDeclaration","scope":4494,"src":"5407:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4451,"name":"address","nodeType":"ElementaryTypeName","src":"5407:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4454,"mutability":"mutable","name":"value","nameLocation":"5427:5:36","nodeType":"VariableDeclaration","scope":4494,"src":"5419:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4453,"name":"uint256","nodeType":"ElementaryTypeName","src":"5419:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5392:41:36"},"returnParameters":{"id":4456,"nodeType":"ParameterList","parameters":[],"src":"5443:0:36"},"scope":4764,"src":"5374:300:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4570,"nodeType":"Block","src":"6064:1032:36","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4504,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4497,"src":"6078:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6094:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6086:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4505,"name":"address","nodeType":"ElementaryTypeName","src":"6086:7:36","typeDescriptions":{}}},"id":4508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6086:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6078:18:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4541,"nodeType":"Block","src":"6252:362:36","statements":[{"assignments":[4516],"declarations":[{"constant":false,"id":4516,"mutability":"mutable","name":"fromBalance","nameLocation":"6274:11:36","nodeType":"VariableDeclaration","scope":4541,"src":"6266:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4515,"name":"uint256","nodeType":"ElementaryTypeName","src":"6266:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4520,"initialValue":{"baseExpression":{"id":4517,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4272,"src":"6288:9:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4519,"indexExpression":{"id":4518,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4497,"src":"6298:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6288:15:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6266:37:36"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4521,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4516,"src":"6321:11:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4522,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4501,"src":"6335:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6321:19:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4531,"nodeType":"IfStatement","src":"6317:115:36","trueBody":{"id":4530,"nodeType":"Block","src":"6342:90:36","statements":[{"errorCall":{"arguments":[{"id":4525,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4497,"src":"6392:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4526,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4516,"src":"6398:11:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4527,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4501,"src":"6411:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4524,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4124,"src":"6367:24:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":4528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6367:50:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4529,"nodeType":"RevertStatement","src":"6360:57:36"}]}},{"id":4540,"nodeType":"UncheckedBlock","src":"6445:159:36","statements":[{"expression":{"id":4538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4532,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4272,"src":"6552:9:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4534,"indexExpression":{"id":4533,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4497,"src":"6562:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6552:15:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4535,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4516,"src":"6570:11:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4536,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4501,"src":"6584:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6570:19:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6552:37:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4539,"nodeType":"ExpressionStatement","src":"6552:37:36"}]}]},"id":4542,"nodeType":"IfStatement","src":"6074:540:36","trueBody":{"id":4514,"nodeType":"Block","src":"6098:148:36","statements":[{"expression":{"id":4512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4510,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4280,"src":"6214:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4511,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4501,"src":"6230:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6214:21:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4513,"nodeType":"ExpressionStatement","src":"6214:21:36"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4543,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4499,"src":"6628:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6642:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6634:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4544,"name":"address","nodeType":"ElementaryTypeName","src":"6634:7:36","typeDescriptions":{}}},"id":4547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6634:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6628:16:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4562,"nodeType":"Block","src":"6843:206:36","statements":[{"id":4561,"nodeType":"UncheckedBlock","src":"6857:182:36","statements":[{"expression":{"id":4559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4555,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4272,"src":"7002:9:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4557,"indexExpression":{"id":4556,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4499,"src":"7012:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7002:13:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":4558,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4501,"src":"7019:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7002:22:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4560,"nodeType":"ExpressionStatement","src":"7002:22:36"}]}]},"id":4563,"nodeType":"IfStatement","src":"6624:425:36","trueBody":{"id":4554,"nodeType":"Block","src":"6646:191:36","statements":[{"id":4553,"nodeType":"UncheckedBlock","src":"6660:167:36","statements":[{"expression":{"id":4551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4549,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4280,"src":"6791:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":4550,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4501,"src":"6807:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6791:21:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4552,"nodeType":"ExpressionStatement","src":"6791:21:36"}]}]}},{"eventCall":{"arguments":[{"id":4565,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4497,"src":"7073:4:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4566,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4499,"src":"7079:2:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4567,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4501,"src":"7083:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4564,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4776,"src":"7064:8:36","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7064:25:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4569,"nodeType":"EmitStatement","src":"7059:30:36"}]},"documentation":{"id":4495,"nodeType":"StructuredDocumentation","src":"5680:304:36","text":" @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event."},"id":4571,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"5998:7:36","nodeType":"FunctionDefinition","parameters":{"id":4502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4497,"mutability":"mutable","name":"from","nameLocation":"6014:4:36","nodeType":"VariableDeclaration","scope":4571,"src":"6006:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4496,"name":"address","nodeType":"ElementaryTypeName","src":"6006:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4499,"mutability":"mutable","name":"to","nameLocation":"6028:2:36","nodeType":"VariableDeclaration","scope":4571,"src":"6020:10:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4498,"name":"address","nodeType":"ElementaryTypeName","src":"6020:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4501,"mutability":"mutable","name":"value","nameLocation":"6040:5:36","nodeType":"VariableDeclaration","scope":4571,"src":"6032:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4500,"name":"uint256","nodeType":"ElementaryTypeName","src":"6032:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6005:41:36"},"returnParameters":{"id":4503,"nodeType":"ParameterList","parameters":[],"src":"6064:0:36"},"scope":4764,"src":"5989:1107:36","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4603,"nodeType":"Block","src":"7495:152:36","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4579,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4574,"src":"7509:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7528:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7520:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4580,"name":"address","nodeType":"ElementaryTypeName","src":"7520:7:36","typeDescriptions":{}}},"id":4583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7520:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7509:21:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4593,"nodeType":"IfStatement","src":"7505:91:36","trueBody":{"id":4592,"nodeType":"Block","src":"7532:64:36","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":4588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7582:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7574:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4586,"name":"address","nodeType":"ElementaryTypeName","src":"7574:7:36","typeDescriptions":{}}},"id":4589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7574:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4585,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4134,"src":"7553:20:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":4590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7553:32:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4591,"nodeType":"RevertStatement","src":"7546:39:36"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":4597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7621:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7613:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4595,"name":"address","nodeType":"ElementaryTypeName","src":"7613:7:36","typeDescriptions":{}}},"id":4598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7613:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4599,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4574,"src":"7625:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4600,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4576,"src":"7634:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4594,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4571,"src":"7605:7:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7605:35:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4602,"nodeType":"ExpressionStatement","src":"7605:35:36"}]},"documentation":{"id":4572,"nodeType":"StructuredDocumentation","src":"7102:332:36","text":" @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead."},"id":4604,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"7448:5:36","nodeType":"FunctionDefinition","parameters":{"id":4577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4574,"mutability":"mutable","name":"account","nameLocation":"7462:7:36","nodeType":"VariableDeclaration","scope":4604,"src":"7454:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4573,"name":"address","nodeType":"ElementaryTypeName","src":"7454:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4576,"mutability":"mutable","name":"value","nameLocation":"7479:5:36","nodeType":"VariableDeclaration","scope":4604,"src":"7471:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4575,"name":"uint256","nodeType":"ElementaryTypeName","src":"7471:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7453:32:36"},"returnParameters":{"id":4578,"nodeType":"ParameterList","parameters":[],"src":"7495:0:36"},"scope":4764,"src":"7439:208:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4636,"nodeType":"Block","src":"8021:150:36","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4612,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4607,"src":"8035:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8054:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8046:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4613,"name":"address","nodeType":"ElementaryTypeName","src":"8046:7:36","typeDescriptions":{}}},"id":4616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8046:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8035:21:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4626,"nodeType":"IfStatement","src":"8031:89:36","trueBody":{"id":4625,"nodeType":"Block","src":"8058:62:36","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":4621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8106:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8098:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4619,"name":"address","nodeType":"ElementaryTypeName","src":"8098:7:36","typeDescriptions":{}}},"id":4622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8098:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4618,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4129,"src":"8079:18:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":4623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8079:30:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4624,"nodeType":"RevertStatement","src":"8072:37:36"}]}},{"expression":{"arguments":[{"id":4628,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4607,"src":"8137:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8154:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8146:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4629,"name":"address","nodeType":"ElementaryTypeName","src":"8146:7:36","typeDescriptions":{}}},"id":4632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8146:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4633,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4609,"src":"8158:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4627,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4571,"src":"8129:7:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8129:35:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4635,"nodeType":"ExpressionStatement","src":"8129:35:36"}]},"documentation":{"id":4605,"nodeType":"StructuredDocumentation","src":"7653:307:36","text":" @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead"},"id":4637,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"7974:5:36","nodeType":"FunctionDefinition","parameters":{"id":4610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4607,"mutability":"mutable","name":"account","nameLocation":"7988:7:36","nodeType":"VariableDeclaration","scope":4637,"src":"7980:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4606,"name":"address","nodeType":"ElementaryTypeName","src":"7980:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4609,"mutability":"mutable","name":"value","nameLocation":"8005:5:36","nodeType":"VariableDeclaration","scope":4637,"src":"7997:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4608,"name":"uint256","nodeType":"ElementaryTypeName","src":"7997:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7979:32:36"},"returnParameters":{"id":4611,"nodeType":"ParameterList","parameters":[],"src":"8021:0:36"},"scope":4764,"src":"7965:206:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4654,"nodeType":"Block","src":"8781:54:36","statements":[{"expression":{"arguments":[{"id":4648,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4640,"src":"8800:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4649,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4642,"src":"8807:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4650,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"8816:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":4651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8823:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4647,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[4655,4715],"referencedDeclaration":4715,"src":"8791:8:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":4652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8791:37:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4653,"nodeType":"ExpressionStatement","src":"8791:37:36"}]},"documentation":{"id":4638,"nodeType":"StructuredDocumentation","src":"8177:525:36","text":" @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"id":4655,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"8716:8:36","nodeType":"FunctionDefinition","parameters":{"id":4645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4640,"mutability":"mutable","name":"owner","nameLocation":"8733:5:36","nodeType":"VariableDeclaration","scope":4655,"src":"8725:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4639,"name":"address","nodeType":"ElementaryTypeName","src":"8725:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4642,"mutability":"mutable","name":"spender","nameLocation":"8748:7:36","nodeType":"VariableDeclaration","scope":4655,"src":"8740:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4641,"name":"address","nodeType":"ElementaryTypeName","src":"8740:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4644,"mutability":"mutable","name":"value","nameLocation":"8765:5:36","nodeType":"VariableDeclaration","scope":4655,"src":"8757:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4643,"name":"uint256","nodeType":"ElementaryTypeName","src":"8757:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8724:47:36"},"returnParameters":{"id":4646,"nodeType":"ParameterList","parameters":[],"src":"8781:0:36"},"scope":4764,"src":"8707:128:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4714,"nodeType":"Block","src":"9780:334:36","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4667,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4658,"src":"9794:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9811:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9803:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4668,"name":"address","nodeType":"ElementaryTypeName","src":"9803:7:36","typeDescriptions":{}}},"id":4671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9803:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9794:19:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4681,"nodeType":"IfStatement","src":"9790:89:36","trueBody":{"id":4680,"nodeType":"Block","src":"9815:64:36","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":4676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9865:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9857:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4674,"name":"address","nodeType":"ElementaryTypeName","src":"9857:7:36","typeDescriptions":{}}},"id":4677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9857:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4673,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4148,"src":"9836:20:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":4678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9836:32:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4679,"nodeType":"RevertStatement","src":"9829:39:36"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4682,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4660,"src":"9892:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9911:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9903:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4683,"name":"address","nodeType":"ElementaryTypeName","src":"9903:7:36","typeDescriptions":{}}},"id":4686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9903:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9892:21:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4696,"nodeType":"IfStatement","src":"9888:90:36","trueBody":{"id":4695,"nodeType":"Block","src":"9915:63:36","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":4691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9964:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9956:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4689,"name":"address","nodeType":"ElementaryTypeName","src":"9956:7:36","typeDescriptions":{}}},"id":4692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9956:10:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4688,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4153,"src":"9936:19:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":4693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9936:31:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4694,"nodeType":"RevertStatement","src":"9929:38:36"}]}},{"expression":{"id":4703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":4697,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4278,"src":"9987:11:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":4700,"indexExpression":{"id":4698,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4658,"src":"9999:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9987:18:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4701,"indexExpression":{"id":4699,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4660,"src":"10006:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9987:27:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4702,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4662,"src":"10017:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9987:35:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4704,"nodeType":"ExpressionStatement","src":"9987:35:36"},{"condition":{"id":4705,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4664,"src":"10036:9:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4713,"nodeType":"IfStatement","src":"10032:76:36","trueBody":{"id":4712,"nodeType":"Block","src":"10047:61:36","statements":[{"eventCall":{"arguments":[{"id":4707,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4658,"src":"10075:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4708,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4660,"src":"10082:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4709,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4662,"src":"10091:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4706,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4785,"src":"10066:8:36","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10066:31:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4711,"nodeType":"EmitStatement","src":"10061:36:36"}]}}]},"documentation":{"id":4656,"nodeType":"StructuredDocumentation","src":"8841:836:36","text":" @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n     super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}."},"id":4715,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"9691:8:36","nodeType":"FunctionDefinition","parameters":{"id":4665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4658,"mutability":"mutable","name":"owner","nameLocation":"9708:5:36","nodeType":"VariableDeclaration","scope":4715,"src":"9700:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4657,"name":"address","nodeType":"ElementaryTypeName","src":"9700:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4660,"mutability":"mutable","name":"spender","nameLocation":"9723:7:36","nodeType":"VariableDeclaration","scope":4715,"src":"9715:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4659,"name":"address","nodeType":"ElementaryTypeName","src":"9715:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4662,"mutability":"mutable","name":"value","nameLocation":"9740:5:36","nodeType":"VariableDeclaration","scope":4715,"src":"9732:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4661,"name":"uint256","nodeType":"ElementaryTypeName","src":"9732:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4664,"mutability":"mutable","name":"emitEvent","nameLocation":"9752:9:36","nodeType":"VariableDeclaration","scope":4715,"src":"9747:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4663,"name":"bool","nodeType":"ElementaryTypeName","src":"9747:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9699:63:36"},"returnParameters":{"id":4666,"nodeType":"ParameterList","parameters":[],"src":"9780:0:36"},"scope":4764,"src":"9682:432:36","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4762,"nodeType":"Block","src":"10485:387:36","statements":[{"assignments":[4726],"declarations":[{"constant":false,"id":4726,"mutability":"mutable","name":"currentAllowance","nameLocation":"10503:16:36","nodeType":"VariableDeclaration","scope":4762,"src":"10495:24:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4725,"name":"uint256","nodeType":"ElementaryTypeName","src":"10495:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4731,"initialValue":{"arguments":[{"id":4728,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4718,"src":"10532:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4729,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"10539:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":4727,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4391,"src":"10522:9:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":4730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10522:25:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10495:52:36"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4732,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4726,"src":"10561:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":4735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10585:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4734,"name":"uint256","nodeType":"ElementaryTypeName","src":"10585:7:36","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":4733,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10580:4:36","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10580:13:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":4737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10594:3:36","memberName":"max","nodeType":"MemberAccess","src":"10580:17:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10561:36:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4761,"nodeType":"IfStatement","src":"10557:309:36","trueBody":{"id":4760,"nodeType":"Block","src":"10599:267:36","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4739,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4726,"src":"10617:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4740,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4722,"src":"10636:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10617:24:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4749,"nodeType":"IfStatement","src":"10613:130:36","trueBody":{"id":4748,"nodeType":"Block","src":"10643:100:36","statements":[{"errorCall":{"arguments":[{"id":4743,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"10695:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4744,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4726,"src":"10704:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4745,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4722,"src":"10722:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4742,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4143,"src":"10668:26:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":4746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10668:60:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4747,"nodeType":"RevertStatement","src":"10661:67:36"}]}},{"id":4759,"nodeType":"UncheckedBlock","src":"10756:100:36","statements":[{"expression":{"arguments":[{"id":4751,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4718,"src":"10793:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4752,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4720,"src":"10800:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4753,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4726,"src":"10809:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4754,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4722,"src":"10828:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10809:24:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":4756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10835:5:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4750,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[4655,4715],"referencedDeclaration":4715,"src":"10784:8:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":4757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10784:57:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4758,"nodeType":"ExpressionStatement","src":"10784:57:36"}]}]}}]},"documentation":{"id":4716,"nodeType":"StructuredDocumentation","src":"10120:271:36","text":" @dev Updates `owner`'s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event."},"id":4763,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"10405:15:36","nodeType":"FunctionDefinition","parameters":{"id":4723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4718,"mutability":"mutable","name":"owner","nameLocation":"10429:5:36","nodeType":"VariableDeclaration","scope":4763,"src":"10421:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4717,"name":"address","nodeType":"ElementaryTypeName","src":"10421:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4720,"mutability":"mutable","name":"spender","nameLocation":"10444:7:36","nodeType":"VariableDeclaration","scope":4763,"src":"10436:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4719,"name":"address","nodeType":"ElementaryTypeName","src":"10436:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4722,"mutability":"mutable","name":"value","nameLocation":"10461:5:36","nodeType":"VariableDeclaration","scope":4763,"src":"10453:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4721,"name":"uint256","nodeType":"ElementaryTypeName","src":"10453:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10420:47:36"},"returnParameters":{"id":4724,"nodeType":"ParameterList","parameters":[],"src":"10485:0:36"},"scope":4764,"src":"10396:476:36","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":4765,"src":"1106:9768:36","usedErrors":[4124,4129,4134,4143,4148,4153],"usedEvents":[4776,4785]}],"src":"105:10770:36"},"id":36},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[4842]},"id":4843,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4766,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:37"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":4767,"nodeType":"StructuredDocumentation","src":"132:71:37","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"id":4842,"linearizedBaseContracts":[4842],"name":"IERC20","nameLocation":"214:6:37","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":4768,"nodeType":"StructuredDocumentation","src":"227:158:37","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":4776,"name":"Transfer","nameLocation":"396:8:37","nodeType":"EventDefinition","parameters":{"id":4775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4770,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"421:4:37","nodeType":"VariableDeclaration","scope":4776,"src":"405:20:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4769,"name":"address","nodeType":"ElementaryTypeName","src":"405:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4772,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"443:2:37","nodeType":"VariableDeclaration","scope":4776,"src":"427:18:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4771,"name":"address","nodeType":"ElementaryTypeName","src":"427:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4774,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"455:5:37","nodeType":"VariableDeclaration","scope":4776,"src":"447:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4773,"name":"uint256","nodeType":"ElementaryTypeName","src":"447:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"404:57:37"},"src":"390:72:37"},{"anonymous":false,"documentation":{"id":4777,"nodeType":"StructuredDocumentation","src":"468:148:37","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":4785,"name":"Approval","nameLocation":"627:8:37","nodeType":"EventDefinition","parameters":{"id":4784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4779,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"652:5:37","nodeType":"VariableDeclaration","scope":4785,"src":"636:21:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4778,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4781,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"675:7:37","nodeType":"VariableDeclaration","scope":4785,"src":"659:23:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4780,"name":"address","nodeType":"ElementaryTypeName","src":"659:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4783,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"692:5:37","nodeType":"VariableDeclaration","scope":4785,"src":"684:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4782,"name":"uint256","nodeType":"ElementaryTypeName","src":"684:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"635:63:37"},"src":"621:78:37"},{"documentation":{"id":4786,"nodeType":"StructuredDocumentation","src":"705:65:37","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":4791,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"784:11:37","nodeType":"FunctionDefinition","parameters":{"id":4787,"nodeType":"ParameterList","parameters":[],"src":"795:2:37"},"returnParameters":{"id":4790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4789,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4791,"src":"821:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4788,"name":"uint256","nodeType":"ElementaryTypeName","src":"821:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"820:9:37"},"scope":4842,"src":"775:55:37","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4792,"nodeType":"StructuredDocumentation","src":"836:71:37","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":4799,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:37","nodeType":"FunctionDefinition","parameters":{"id":4795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4794,"mutability":"mutable","name":"account","nameLocation":"939:7:37","nodeType":"VariableDeclaration","scope":4799,"src":"931:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4793,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:37"},"returnParameters":{"id":4798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4797,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4799,"src":"971:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4796,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:37"},"scope":4842,"src":"912:68:37","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4800,"nodeType":"StructuredDocumentation","src":"986:213:37","text":" @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":4809,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1213:8:37","nodeType":"FunctionDefinition","parameters":{"id":4805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4802,"mutability":"mutable","name":"to","nameLocation":"1230:2:37","nodeType":"VariableDeclaration","scope":4809,"src":"1222:10:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4801,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4804,"mutability":"mutable","name":"value","nameLocation":"1242:5:37","nodeType":"VariableDeclaration","scope":4809,"src":"1234:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4803,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1221:27:37"},"returnParameters":{"id":4808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4807,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4809,"src":"1267:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4806,"name":"bool","nodeType":"ElementaryTypeName","src":"1267:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1266:6:37"},"scope":4842,"src":"1204:69:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4810,"nodeType":"StructuredDocumentation","src":"1279:264:37","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":4819,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1557:9:37","nodeType":"FunctionDefinition","parameters":{"id":4815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4812,"mutability":"mutable","name":"owner","nameLocation":"1575:5:37","nodeType":"VariableDeclaration","scope":4819,"src":"1567:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4811,"name":"address","nodeType":"ElementaryTypeName","src":"1567:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4814,"mutability":"mutable","name":"spender","nameLocation":"1590:7:37","nodeType":"VariableDeclaration","scope":4819,"src":"1582:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4813,"name":"address","nodeType":"ElementaryTypeName","src":"1582:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1566:32:37"},"returnParameters":{"id":4818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4817,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4819,"src":"1622:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4816,"name":"uint256","nodeType":"ElementaryTypeName","src":"1622:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1621:9:37"},"scope":4842,"src":"1548:83:37","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4820,"nodeType":"StructuredDocumentation","src":"1637:667:37","text":" @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":4829,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2318:7:37","nodeType":"FunctionDefinition","parameters":{"id":4825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4822,"mutability":"mutable","name":"spender","nameLocation":"2334:7:37","nodeType":"VariableDeclaration","scope":4829,"src":"2326:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4821,"name":"address","nodeType":"ElementaryTypeName","src":"2326:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4824,"mutability":"mutable","name":"value","nameLocation":"2351:5:37","nodeType":"VariableDeclaration","scope":4829,"src":"2343:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4823,"name":"uint256","nodeType":"ElementaryTypeName","src":"2343:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2325:32:37"},"returnParameters":{"id":4828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4827,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4829,"src":"2376:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4826,"name":"bool","nodeType":"ElementaryTypeName","src":"2376:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2375:6:37"},"scope":4842,"src":"2309:73:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":4830,"nodeType":"StructuredDocumentation","src":"2388:297:37","text":" @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":4841,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2699:12:37","nodeType":"FunctionDefinition","parameters":{"id":4837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4832,"mutability":"mutable","name":"from","nameLocation":"2720:4:37","nodeType":"VariableDeclaration","scope":4841,"src":"2712:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4831,"name":"address","nodeType":"ElementaryTypeName","src":"2712:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4834,"mutability":"mutable","name":"to","nameLocation":"2734:2:37","nodeType":"VariableDeclaration","scope":4841,"src":"2726:10:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4833,"name":"address","nodeType":"ElementaryTypeName","src":"2726:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4836,"mutability":"mutable","name":"value","nameLocation":"2746:5:37","nodeType":"VariableDeclaration","scope":4841,"src":"2738:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4835,"name":"uint256","nodeType":"ElementaryTypeName","src":"2738:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2711:41:37"},"returnParameters":{"id":4840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4839,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4841,"src":"2771:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4838,"name":"bool","nodeType":"ElementaryTypeName","src":"2771:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2770:6:37"},"scope":4842,"src":"2690:87:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4843,"src":"204:2575:37","usedErrors":[],"usedEvents":[4776,4785]}],"src":"106:2674:37"},"id":37},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[4842],"IERC20Metadata":[4868]},"id":4869,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4844,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"125:24:38"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":4846,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4869,"sourceUnit":4843,"src":"151:37:38","symbolAliases":[{"foreign":{"id":4845,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4842,"src":"159:6:38","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4848,"name":"IERC20","nameLocations":["306:6:38"],"nodeType":"IdentifierPath","referencedDeclaration":4842,"src":"306:6:38"},"id":4849,"nodeType":"InheritanceSpecifier","src":"306:6:38"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":4847,"nodeType":"StructuredDocumentation","src":"190:87:38","text":" @dev Interface for the optional metadata functions from the ERC-20 standard."},"fullyImplemented":false,"id":4868,"linearizedBaseContracts":[4868,4842],"name":"IERC20Metadata","nameLocation":"288:14:38","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4850,"nodeType":"StructuredDocumentation","src":"319:54:38","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":4855,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"387:4:38","nodeType":"FunctionDefinition","parameters":{"id":4851,"nodeType":"ParameterList","parameters":[],"src":"391:2:38"},"returnParameters":{"id":4854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4853,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4855,"src":"417:13:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4852,"name":"string","nodeType":"ElementaryTypeName","src":"417:6:38","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"416:15:38"},"scope":4868,"src":"378:54:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4856,"nodeType":"StructuredDocumentation","src":"438:56:38","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":4861,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"508:6:38","nodeType":"FunctionDefinition","parameters":{"id":4857,"nodeType":"ParameterList","parameters":[],"src":"514:2:38"},"returnParameters":{"id":4860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4859,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4861,"src":"540:13:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":4858,"name":"string","nodeType":"ElementaryTypeName","src":"540:6:38","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"539:15:38"},"scope":4868,"src":"499:56:38","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":4862,"nodeType":"StructuredDocumentation","src":"561:65:38","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":4867,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"640:8:38","nodeType":"FunctionDefinition","parameters":{"id":4863,"nodeType":"ParameterList","parameters":[],"src":"648:2:38"},"returnParameters":{"id":4866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4865,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4867,"src":"674:5:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4864,"name":"uint8","nodeType":"ElementaryTypeName","src":"674:5:38","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"673:7:38"},"scope":4868,"src":"631:50:38","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4869,"src":"278:405:38","usedErrors":[],"usedEvents":[4776,4785]}],"src":"125:559:38"},"id":38},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","exportedSymbols":{"IERC1363":[4076],"IERC20":[4842],"SafeERC20":[5332]},"id":5333,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4870,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:39"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":4872,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5333,"sourceUnit":4843,"src":"141:37:39","symbolAliases":[{"foreign":{"id":4871,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4842,"src":"149:6:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1363.sol","file":"../../../interfaces/IERC1363.sol","id":4874,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5333,"sourceUnit":4077,"src":"179:58:39","symbolAliases":[{"foreign":{"id":4873,"name":"IERC1363","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4076,"src":"187:8:39","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20","contractDependencies":[],"contractKind":"library","documentation":{"id":4875,"nodeType":"StructuredDocumentation","src":"239:458:39","text":" @title SafeERC20\n @dev Wrappers around ERC-20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":5332,"linearizedBaseContracts":[5332],"name":"SafeERC20","nameLocation":"706:9:39","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":4876,"nodeType":"StructuredDocumentation","src":"722:65:39","text":" @dev An operation with an ERC-20 token failed."},"errorSelector":"5274afe7","id":4880,"name":"SafeERC20FailedOperation","nameLocation":"798:24:39","nodeType":"ErrorDefinition","parameters":{"id":4879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4878,"mutability":"mutable","name":"token","nameLocation":"831:5:39","nodeType":"VariableDeclaration","scope":4880,"src":"823:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4877,"name":"address","nodeType":"ElementaryTypeName","src":"823:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"822:15:39"},"src":"792:46:39"},{"documentation":{"id":4881,"nodeType":"StructuredDocumentation","src":"844:71:39","text":" @dev Indicates a failed `decreaseAllowance` request."},"errorSelector":"e570110f","id":4889,"name":"SafeERC20FailedDecreaseAllowance","nameLocation":"926:32:39","nodeType":"ErrorDefinition","parameters":{"id":4888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4883,"mutability":"mutable","name":"spender","nameLocation":"967:7:39","nodeType":"VariableDeclaration","scope":4889,"src":"959:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4882,"name":"address","nodeType":"ElementaryTypeName","src":"959:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4885,"mutability":"mutable","name":"currentAllowance","nameLocation":"984:16:39","nodeType":"VariableDeclaration","scope":4889,"src":"976:24:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4884,"name":"uint256","nodeType":"ElementaryTypeName","src":"976:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4887,"mutability":"mutable","name":"requestedDecrease","nameLocation":"1010:17:39","nodeType":"VariableDeclaration","scope":4889,"src":"1002:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4886,"name":"uint256","nodeType":"ElementaryTypeName","src":"1002:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"958:70:39"},"src":"920:109:39"},{"body":{"id":4912,"nodeType":"Block","src":"1291:88:39","statements":[{"expression":{"arguments":[{"id":4901,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4893,"src":"1321:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":4904,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4893,"src":"1343:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"id":4905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1349:8:39","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":4809,"src":"1343:14:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":4906,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"1360:2:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4907,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4897,"src":"1364:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4908,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1359:11:39","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":4902,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1328:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1332:10:39","memberName":"encodeCall","nodeType":"MemberAccess","src":"1328:14:39","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1328:43:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4900,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5290,"src":"1301:19:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4842_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":4910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1301:71:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4911,"nodeType":"ExpressionStatement","src":"1301:71:39"}]},"documentation":{"id":4890,"nodeType":"StructuredDocumentation","src":"1035:179:39","text":" @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful."},"id":4913,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"1228:12:39","nodeType":"FunctionDefinition","parameters":{"id":4898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4893,"mutability":"mutable","name":"token","nameLocation":"1248:5:39","nodeType":"VariableDeclaration","scope":4913,"src":"1241:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},"typeName":{"id":4892,"nodeType":"UserDefinedTypeName","pathNode":{"id":4891,"name":"IERC20","nameLocations":["1241:6:39"],"nodeType":"IdentifierPath","referencedDeclaration":4842,"src":"1241:6:39"},"referencedDeclaration":4842,"src":"1241:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4895,"mutability":"mutable","name":"to","nameLocation":"1263:2:39","nodeType":"VariableDeclaration","scope":4913,"src":"1255:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4894,"name":"address","nodeType":"ElementaryTypeName","src":"1255:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4897,"mutability":"mutable","name":"value","nameLocation":"1275:5:39","nodeType":"VariableDeclaration","scope":4913,"src":"1267:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4896,"name":"uint256","nodeType":"ElementaryTypeName","src":"1267:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1240:41:39"},"returnParameters":{"id":4899,"nodeType":"ParameterList","parameters":[],"src":"1291:0:39"},"scope":5332,"src":"1219:160:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4939,"nodeType":"Block","src":"1708:98:39","statements":[{"expression":{"arguments":[{"id":4927,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"1738:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":4930,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4917,"src":"1760:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"id":4931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1766:12:39","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":4841,"src":"1760:18:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},{"components":[{"id":4932,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4919,"src":"1781:4:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4933,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4921,"src":"1787:2:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4923,"src":"1791:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4935,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1780:17:39","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}],"expression":{"id":4928,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1745:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1749:10:39","memberName":"encodeCall","nodeType":"MemberAccess","src":"1745:14:39","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1745:53:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4926,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5290,"src":"1718:19:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4842_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":4937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1718:81:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4938,"nodeType":"ExpressionStatement","src":"1718:81:39"}]},"documentation":{"id":4914,"nodeType":"StructuredDocumentation","src":"1385:228:39","text":" @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful."},"id":4940,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1627:16:39","nodeType":"FunctionDefinition","parameters":{"id":4924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4917,"mutability":"mutable","name":"token","nameLocation":"1651:5:39","nodeType":"VariableDeclaration","scope":4940,"src":"1644:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},"typeName":{"id":4916,"nodeType":"UserDefinedTypeName","pathNode":{"id":4915,"name":"IERC20","nameLocations":["1644:6:39"],"nodeType":"IdentifierPath","referencedDeclaration":4842,"src":"1644:6:39"},"referencedDeclaration":4842,"src":"1644:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4919,"mutability":"mutable","name":"from","nameLocation":"1666:4:39","nodeType":"VariableDeclaration","scope":4940,"src":"1658:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4918,"name":"address","nodeType":"ElementaryTypeName","src":"1658:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4921,"mutability":"mutable","name":"to","nameLocation":"1680:2:39","nodeType":"VariableDeclaration","scope":4940,"src":"1672:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4920,"name":"address","nodeType":"ElementaryTypeName","src":"1672:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4923,"mutability":"mutable","name":"value","nameLocation":"1692:5:39","nodeType":"VariableDeclaration","scope":4940,"src":"1684:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4922,"name":"uint256","nodeType":"ElementaryTypeName","src":"1684:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1643:55:39"},"returnParameters":{"id":4925,"nodeType":"ParameterList","parameters":[],"src":"1708:0:39"},"scope":5332,"src":"1618:188:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4965,"nodeType":"Block","src":"2033:99:39","statements":[{"expression":{"arguments":[{"id":4954,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4944,"src":"2074:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":4957,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4944,"src":"2096:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"id":4958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2102:8:39","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":4809,"src":"2096:14:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":4959,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4946,"src":"2113:2:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4960,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4948,"src":"2117:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4961,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2112:11:39","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":4955,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2081:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2085:10:39","memberName":"encodeCall","nodeType":"MemberAccess","src":"2081:14:39","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2081:43:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4953,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5331,"src":"2050:23:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4842_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20,bytes memory) returns (bool)"}},"id":4963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2050:75:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4952,"id":4964,"nodeType":"Return","src":"2043:82:39"}]},"documentation":{"id":4941,"nodeType":"StructuredDocumentation","src":"1812:126:39","text":" @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful."},"id":4966,"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransfer","nameLocation":"1952:15:39","nodeType":"FunctionDefinition","parameters":{"id":4949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4944,"mutability":"mutable","name":"token","nameLocation":"1975:5:39","nodeType":"VariableDeclaration","scope":4966,"src":"1968:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},"typeName":{"id":4943,"nodeType":"UserDefinedTypeName","pathNode":{"id":4942,"name":"IERC20","nameLocations":["1968:6:39"],"nodeType":"IdentifierPath","referencedDeclaration":4842,"src":"1968:6:39"},"referencedDeclaration":4842,"src":"1968:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4946,"mutability":"mutable","name":"to","nameLocation":"1990:2:39","nodeType":"VariableDeclaration","scope":4966,"src":"1982:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4945,"name":"address","nodeType":"ElementaryTypeName","src":"1982:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4948,"mutability":"mutable","name":"value","nameLocation":"2002:5:39","nodeType":"VariableDeclaration","scope":4966,"src":"1994:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4947,"name":"uint256","nodeType":"ElementaryTypeName","src":"1994:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1967:41:39"},"returnParameters":{"id":4952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4951,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4966,"src":"2027:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4950,"name":"bool","nodeType":"ElementaryTypeName","src":"2027:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2026:6:39"},"scope":5332,"src":"1943:189:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4994,"nodeType":"Block","src":"2381:109:39","statements":[{"expression":{"arguments":[{"id":4982,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4970,"src":"2422:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":4985,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4970,"src":"2444:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"id":4986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2450:12:39","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":4841,"src":"2444:18:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},{"components":[{"id":4987,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4972,"src":"2465:4:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4988,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4974,"src":"2471:2:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4989,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4976,"src":"2475:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4990,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2464:17:39","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_uint256_$","typeString":"tuple(address,address,uint256)"}],"expression":{"id":4983,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2429:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4984,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2433:10:39","memberName":"encodeCall","nodeType":"MemberAccess","src":"2429:14:39","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2429:53:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4981,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5331,"src":"2398:23:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4842_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20,bytes memory) returns (bool)"}},"id":4992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2398:85:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4980,"id":4993,"nodeType":"Return","src":"2391:92:39"}]},"documentation":{"id":4967,"nodeType":"StructuredDocumentation","src":"2138:130:39","text":" @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful."},"id":4995,"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransferFrom","nameLocation":"2282:19:39","nodeType":"FunctionDefinition","parameters":{"id":4977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4970,"mutability":"mutable","name":"token","nameLocation":"2309:5:39","nodeType":"VariableDeclaration","scope":4995,"src":"2302:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},"typeName":{"id":4969,"nodeType":"UserDefinedTypeName","pathNode":{"id":4968,"name":"IERC20","nameLocations":["2302:6:39"],"nodeType":"IdentifierPath","referencedDeclaration":4842,"src":"2302:6:39"},"referencedDeclaration":4842,"src":"2302:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4972,"mutability":"mutable","name":"from","nameLocation":"2324:4:39","nodeType":"VariableDeclaration","scope":4995,"src":"2316:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4971,"name":"address","nodeType":"ElementaryTypeName","src":"2316:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4974,"mutability":"mutable","name":"to","nameLocation":"2338:2:39","nodeType":"VariableDeclaration","scope":4995,"src":"2330:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4973,"name":"address","nodeType":"ElementaryTypeName","src":"2330:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4976,"mutability":"mutable","name":"value","nameLocation":"2350:5:39","nodeType":"VariableDeclaration","scope":4995,"src":"2342:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4975,"name":"uint256","nodeType":"ElementaryTypeName","src":"2342:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2301:55:39"},"returnParameters":{"id":4980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4979,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4995,"src":"2375:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4978,"name":"bool","nodeType":"ElementaryTypeName","src":"2375:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2374:6:39"},"scope":5332,"src":"2273:217:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5025,"nodeType":"Block","src":"3232:139:39","statements":[{"assignments":[5007],"declarations":[{"constant":false,"id":5007,"mutability":"mutable","name":"oldAllowance","nameLocation":"3250:12:39","nodeType":"VariableDeclaration","scope":5025,"src":"3242:20:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5006,"name":"uint256","nodeType":"ElementaryTypeName","src":"3242:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5016,"initialValue":{"arguments":[{"arguments":[{"id":5012,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3289:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$5332","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$5332","typeString":"library SafeERC20"}],"id":5011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3281:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5010,"name":"address","nodeType":"ElementaryTypeName","src":"3281:7:39","typeDescriptions":{}}},"id":5013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3281:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5014,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"3296:7:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5008,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4999,"src":"3265:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"id":5009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3271:9:39","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":4819,"src":"3265:15:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":5015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3265:39:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3242:62:39"},{"expression":{"arguments":[{"id":5018,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4999,"src":"3327:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},{"id":5019,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"3334:7:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5020,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5007,"src":"3343:12:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":5021,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5003,"src":"3358:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3343:20:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5017,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5116,"src":"3314:12:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4842_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":5023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3314:50:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5024,"nodeType":"ExpressionStatement","src":"3314:50:39"}]},"documentation":{"id":4996,"nodeType":"StructuredDocumentation","src":"2496:645:39","text":" @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior."},"id":5026,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"3155:21:39","nodeType":"FunctionDefinition","parameters":{"id":5004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4999,"mutability":"mutable","name":"token","nameLocation":"3184:5:39","nodeType":"VariableDeclaration","scope":5026,"src":"3177:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},"typeName":{"id":4998,"nodeType":"UserDefinedTypeName","pathNode":{"id":4997,"name":"IERC20","nameLocations":["3177:6:39"],"nodeType":"IdentifierPath","referencedDeclaration":4842,"src":"3177:6:39"},"referencedDeclaration":4842,"src":"3177:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":5001,"mutability":"mutable","name":"spender","nameLocation":"3199:7:39","nodeType":"VariableDeclaration","scope":5026,"src":"3191:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5000,"name":"address","nodeType":"ElementaryTypeName","src":"3191:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5003,"mutability":"mutable","name":"value","nameLocation":"3216:5:39","nodeType":"VariableDeclaration","scope":5026,"src":"3208:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5002,"name":"uint256","nodeType":"ElementaryTypeName","src":"3208:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3176:46:39"},"returnParameters":{"id":5005,"nodeType":"ParameterList","parameters":[],"src":"3232:0:39"},"scope":5332,"src":"3146:225:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5068,"nodeType":"Block","src":"4137:370:39","statements":[{"id":5067,"nodeType":"UncheckedBlock","src":"4147:354:39","statements":[{"assignments":[5038],"declarations":[{"constant":false,"id":5038,"mutability":"mutable","name":"currentAllowance","nameLocation":"4179:16:39","nodeType":"VariableDeclaration","scope":5067,"src":"4171:24:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5037,"name":"uint256","nodeType":"ElementaryTypeName","src":"4171:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5047,"initialValue":{"arguments":[{"arguments":[{"id":5043,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4222:4:39","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$5332","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$5332","typeString":"library SafeERC20"}],"id":5042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4214:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5041,"name":"address","nodeType":"ElementaryTypeName","src":"4214:7:39","typeDescriptions":{}}},"id":5044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4214:13:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5045,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5032,"src":"4229:7:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":5039,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5030,"src":"4198:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"id":5040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4204:9:39","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":4819,"src":"4198:15:39","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":5046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4198:39:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4171:66:39"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5048,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5038,"src":"4255:16:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5049,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"4274:17:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4255:36:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5058,"nodeType":"IfStatement","src":"4251:160:39","trueBody":{"id":5057,"nodeType":"Block","src":"4293:118:39","statements":[{"errorCall":{"arguments":[{"id":5052,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5032,"src":"4351:7:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5053,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5038,"src":"4360:16:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5054,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"4378:17:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5051,"name":"SafeERC20FailedDecreaseAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4889,"src":"4318:32:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":5055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4318:78:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5056,"nodeType":"RevertStatement","src":"4311:85:39"}]}},{"expression":{"arguments":[{"id":5060,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5030,"src":"4437:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},{"id":5061,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5032,"src":"4444:7:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5062,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5038,"src":"4453:16:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":5063,"name":"requestedDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"4472:17:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4453:36:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5059,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5116,"src":"4424:12:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4842_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":5065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4424:66:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5066,"nodeType":"ExpressionStatement","src":"4424:66:39"}]}]},"documentation":{"id":5027,"nodeType":"StructuredDocumentation","src":"3377:657:39","text":" @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n value, non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior."},"id":5069,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"4048:21:39","nodeType":"FunctionDefinition","parameters":{"id":5035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5030,"mutability":"mutable","name":"token","nameLocation":"4077:5:39","nodeType":"VariableDeclaration","scope":5069,"src":"4070:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},"typeName":{"id":5029,"nodeType":"UserDefinedTypeName","pathNode":{"id":5028,"name":"IERC20","nameLocations":["4070:6:39"],"nodeType":"IdentifierPath","referencedDeclaration":4842,"src":"4070:6:39"},"referencedDeclaration":4842,"src":"4070:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":5032,"mutability":"mutable","name":"spender","nameLocation":"4092:7:39","nodeType":"VariableDeclaration","scope":5069,"src":"4084:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5031,"name":"address","nodeType":"ElementaryTypeName","src":"4084:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5034,"mutability":"mutable","name":"requestedDecrease","nameLocation":"4109:17:39","nodeType":"VariableDeclaration","scope":5069,"src":"4101:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5033,"name":"uint256","nodeType":"ElementaryTypeName","src":"4101:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4069:58:39"},"returnParameters":{"id":5036,"nodeType":"ParameterList","parameters":[],"src":"4137:0:39"},"scope":5332,"src":"4039:468:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5115,"nodeType":"Block","src":"5161:303:39","statements":[{"assignments":[5081],"declarations":[{"constant":false,"id":5081,"mutability":"mutable","name":"approvalCall","nameLocation":"5184:12:39","nodeType":"VariableDeclaration","scope":5115,"src":"5171:25:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5080,"name":"bytes","nodeType":"ElementaryTypeName","src":"5171:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":5090,"initialValue":{"arguments":[{"expression":{"id":5084,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5073,"src":"5214:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"id":5085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5220:7:39","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":4829,"src":"5214:13:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":5086,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5075,"src":"5230:7:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5087,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"5239:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5088,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5229:16:39","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":5082,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5199:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5083,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5203:10:39","memberName":"encodeCall","nodeType":"MemberAccess","src":"5199:14:39","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5199:47:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5171:75:39"},{"condition":{"id":5095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5261:45:39","subExpression":{"arguments":[{"id":5092,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5073,"src":"5286:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},{"id":5093,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5081,"src":"5293:12:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5091,"name":"_callOptionalReturnBool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5331,"src":"5262:23:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4842_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20,bytes memory) returns (bool)"}},"id":5094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5262:44:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5114,"nodeType":"IfStatement","src":"5257:201:39","trueBody":{"id":5113,"nodeType":"Block","src":"5308:150:39","statements":[{"expression":{"arguments":[{"id":5097,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5073,"src":"5342:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},{"arguments":[{"expression":{"id":5100,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5073,"src":"5364:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"id":5101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5370:7:39","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":4829,"src":"5364:13:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},{"components":[{"id":5102,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5075,"src":"5380:7:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":5103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5389:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":5104,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5379:12:39","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_rational_0_by_1_$","typeString":"tuple(address,int_const 0)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"},{"typeIdentifier":"t_tuple$_t_address_$_t_rational_0_by_1_$","typeString":"tuple(address,int_const 0)"}],"expression":{"id":5098,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5349:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5099,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5353:10:39","memberName":"encodeCall","nodeType":"MemberAccess","src":"5349:14:39","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5349:43:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5096,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5290,"src":"5322:19:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4842_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":5106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5322:71:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5107,"nodeType":"ExpressionStatement","src":"5322:71:39"},{"expression":{"arguments":[{"id":5109,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5073,"src":"5427:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},{"id":5110,"name":"approvalCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5081,"src":"5434:12:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5108,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5290,"src":"5407:19:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4842_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":5111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5407:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5112,"nodeType":"ExpressionStatement","src":"5407:40:39"}]}}]},"documentation":{"id":5070,"nodeType":"StructuredDocumentation","src":"4513:566:39","text":" @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT.\n NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n set here."},"id":5116,"implemented":true,"kind":"function","modifiers":[],"name":"forceApprove","nameLocation":"5093:12:39","nodeType":"FunctionDefinition","parameters":{"id":5078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5073,"mutability":"mutable","name":"token","nameLocation":"5113:5:39","nodeType":"VariableDeclaration","scope":5116,"src":"5106:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},"typeName":{"id":5072,"nodeType":"UserDefinedTypeName","pathNode":{"id":5071,"name":"IERC20","nameLocations":["5106:6:39"],"nodeType":"IdentifierPath","referencedDeclaration":4842,"src":"5106:6:39"},"referencedDeclaration":4842,"src":"5106:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":5075,"mutability":"mutable","name":"spender","nameLocation":"5128:7:39","nodeType":"VariableDeclaration","scope":5116,"src":"5120:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5074,"name":"address","nodeType":"ElementaryTypeName","src":"5120:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5077,"mutability":"mutable","name":"value","nameLocation":"5145:5:39","nodeType":"VariableDeclaration","scope":5116,"src":"5137:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5076,"name":"uint256","nodeType":"ElementaryTypeName","src":"5137:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5105:46:39"},"returnParameters":{"id":5079,"nodeType":"ParameterList","parameters":[],"src":"5161:0:39"},"scope":5332,"src":"5084:380:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5158,"nodeType":"Block","src":"5911:219:39","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":5129,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5122,"src":"5925:2:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5928:4:39","memberName":"code","nodeType":"MemberAccess","src":"5925:7:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5933:6:39","memberName":"length","nodeType":"MemberAccess","src":"5925:14:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5943:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5925:19:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":5147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6011:39:39","subExpression":{"arguments":[{"id":5143,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5122,"src":"6034:2:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5144,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5124,"src":"6038:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5145,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5126,"src":"6045:4:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5141,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5120,"src":"6012:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"}},"id":5142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6018:15:39","memberName":"transferAndCall","nodeType":"MemberAccess","referencedDeclaration":4027,"src":"6012:21:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) external returns (bool)"}},"id":5146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6012:38:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5156,"nodeType":"IfStatement","src":"6007:117:39","trueBody":{"id":5155,"nodeType":"Block","src":"6052:72:39","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":5151,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5120,"src":"6106:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"}],"id":5150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6098:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5149,"name":"address","nodeType":"ElementaryTypeName","src":"6098:7:39","typeDescriptions":{}}},"id":5152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6098:14:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5148,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4880,"src":"6073:24:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":5153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6073:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5154,"nodeType":"RevertStatement","src":"6066:47:39"}]}},"id":5157,"nodeType":"IfStatement","src":"5921:203:39","trueBody":{"id":5140,"nodeType":"Block","src":"5946:55:39","statements":[{"expression":{"arguments":[{"id":5135,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5120,"src":"5973:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"}},{"id":5136,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5122,"src":"5980:2:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5137,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5124,"src":"5984:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5134,"name":"safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4913,"src":"5960:12:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4842_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":5138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5960:30:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5139,"nodeType":"ExpressionStatement","src":"5960:30:39"}]}}]},"documentation":{"id":5117,"nodeType":"StructuredDocumentation","src":"5470:333:39","text":" @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"id":5159,"implemented":true,"kind":"function","modifiers":[],"name":"transferAndCallRelaxed","nameLocation":"5817:22:39","nodeType":"FunctionDefinition","parameters":{"id":5127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5120,"mutability":"mutable","name":"token","nameLocation":"5849:5:39","nodeType":"VariableDeclaration","scope":5159,"src":"5840:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"},"typeName":{"id":5119,"nodeType":"UserDefinedTypeName","pathNode":{"id":5118,"name":"IERC1363","nameLocations":["5840:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":4076,"src":"5840:8:39"},"referencedDeclaration":4076,"src":"5840:8:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":5122,"mutability":"mutable","name":"to","nameLocation":"5864:2:39","nodeType":"VariableDeclaration","scope":5159,"src":"5856:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5121,"name":"address","nodeType":"ElementaryTypeName","src":"5856:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5124,"mutability":"mutable","name":"value","nameLocation":"5876:5:39","nodeType":"VariableDeclaration","scope":5159,"src":"5868:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5123,"name":"uint256","nodeType":"ElementaryTypeName","src":"5868:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5126,"mutability":"mutable","name":"data","nameLocation":"5896:4:39","nodeType":"VariableDeclaration","scope":5159,"src":"5883:17:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5125,"name":"bytes","nodeType":"ElementaryTypeName","src":"5883:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5839:62:39"},"returnParameters":{"id":5128,"nodeType":"ParameterList","parameters":[],"src":"5911:0:39"},"scope":5332,"src":"5808:322:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5205,"nodeType":"Block","src":"6649:239:39","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":5174,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"6663:2:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6666:4:39","memberName":"code","nodeType":"MemberAccess","src":"6663:7:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6671:6:39","memberName":"length","nodeType":"MemberAccess","src":"6663:14:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6681:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6663:19:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":5194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6759:49:39","subExpression":{"arguments":[{"id":5189,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5165,"src":"6786:4:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5190,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"6792:2:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5191,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5169,"src":"6796:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5192,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5171,"src":"6803:4:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5187,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"6760:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"}},"id":5188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6766:19:39","memberName":"transferFromAndCall","nodeType":"MemberAccess","referencedDeclaration":4053,"src":"6760:25:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) external returns (bool)"}},"id":5193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6760:48:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5203,"nodeType":"IfStatement","src":"6755:127:39","trueBody":{"id":5202,"nodeType":"Block","src":"6810:72:39","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":5198,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"6864:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"}],"id":5197,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6856:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5196,"name":"address","nodeType":"ElementaryTypeName","src":"6856:7:39","typeDescriptions":{}}},"id":5199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6856:14:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5195,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4880,"src":"6831:24:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":5200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6831:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5201,"nodeType":"RevertStatement","src":"6824:47:39"}]}},"id":5204,"nodeType":"IfStatement","src":"6659:223:39","trueBody":{"id":5186,"nodeType":"Block","src":"6684:65:39","statements":[{"expression":{"arguments":[{"id":5180,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5163,"src":"6715:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"}},{"id":5181,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5165,"src":"6722:4:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5182,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"6728:2:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5183,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5169,"src":"6732:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5179,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4940,"src":"6698:16:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4842_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":5184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6698:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5185,"nodeType":"ExpressionStatement","src":"6698:40:39"}]}}]},"documentation":{"id":5160,"nodeType":"StructuredDocumentation","src":"6136:341:39","text":" @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`."},"id":5206,"implemented":true,"kind":"function","modifiers":[],"name":"transferFromAndCallRelaxed","nameLocation":"6491:26:39","nodeType":"FunctionDefinition","parameters":{"id":5172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5163,"mutability":"mutable","name":"token","nameLocation":"6536:5:39","nodeType":"VariableDeclaration","scope":5206,"src":"6527:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"},"typeName":{"id":5162,"nodeType":"UserDefinedTypeName","pathNode":{"id":5161,"name":"IERC1363","nameLocations":["6527:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":4076,"src":"6527:8:39"},"referencedDeclaration":4076,"src":"6527:8:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":5165,"mutability":"mutable","name":"from","nameLocation":"6559:4:39","nodeType":"VariableDeclaration","scope":5206,"src":"6551:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5164,"name":"address","nodeType":"ElementaryTypeName","src":"6551:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5167,"mutability":"mutable","name":"to","nameLocation":"6581:2:39","nodeType":"VariableDeclaration","scope":5206,"src":"6573:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5166,"name":"address","nodeType":"ElementaryTypeName","src":"6573:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5169,"mutability":"mutable","name":"value","nameLocation":"6601:5:39","nodeType":"VariableDeclaration","scope":5206,"src":"6593:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5168,"name":"uint256","nodeType":"ElementaryTypeName","src":"6593:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5171,"mutability":"mutable","name":"data","nameLocation":"6629:4:39","nodeType":"VariableDeclaration","scope":5206,"src":"6616:17:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5170,"name":"bytes","nodeType":"ElementaryTypeName","src":"6616:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6517:122:39"},"returnParameters":{"id":5173,"nodeType":"ParameterList","parameters":[],"src":"6649:0:39"},"scope":5332,"src":"6482:406:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5248,"nodeType":"Block","src":"7655:218:39","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":5219,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5212,"src":"7669:2:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7672:4:39","memberName":"code","nodeType":"MemberAccess","src":"7669:7:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7677:6:39","memberName":"length","nodeType":"MemberAccess","src":"7669:14:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7687:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7669:19:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"id":5237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7755:38:39","subExpression":{"arguments":[{"id":5233,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5212,"src":"7777:2:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5234,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5214,"src":"7781:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5235,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5216,"src":"7788:4:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5231,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5210,"src":"7756:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"}},"id":5232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7762:14:39","memberName":"approveAndCall","nodeType":"MemberAccess","referencedDeclaration":4075,"src":"7756:20:39","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,bytes memory) external returns (bool)"}},"id":5236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7756:37:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5246,"nodeType":"IfStatement","src":"7751:116:39","trueBody":{"id":5245,"nodeType":"Block","src":"7795:72:39","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":5241,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5210,"src":"7849:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"}],"id":5240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7841:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5239,"name":"address","nodeType":"ElementaryTypeName","src":"7841:7:39","typeDescriptions":{}}},"id":5242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7841:14:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5238,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4880,"src":"7816:24:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":5243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7816:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5244,"nodeType":"RevertStatement","src":"7809:47:39"}]}},"id":5247,"nodeType":"IfStatement","src":"7665:202:39","trueBody":{"id":5230,"nodeType":"Block","src":"7690:55:39","statements":[{"expression":{"arguments":[{"id":5225,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5210,"src":"7717:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"}},{"id":5226,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5212,"src":"7724:2:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5227,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5214,"src":"7728:5:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5224,"name":"forceApprove","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5116,"src":"7704:12:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$4842_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":5228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7704:30:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5229,"nodeType":"ExpressionStatement","src":"7704:30:39"}]}}]},"documentation":{"id":5207,"nodeType":"StructuredDocumentation","src":"6894:654:39","text":" @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n once without retrying, and relies on the returned value to be true.\n Reverts if the returned value is other than `true`."},"id":5249,"implemented":true,"kind":"function","modifiers":[],"name":"approveAndCallRelaxed","nameLocation":"7562:21:39","nodeType":"FunctionDefinition","parameters":{"id":5217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5210,"mutability":"mutable","name":"token","nameLocation":"7593:5:39","nodeType":"VariableDeclaration","scope":5249,"src":"7584:14:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"},"typeName":{"id":5209,"nodeType":"UserDefinedTypeName","pathNode":{"id":5208,"name":"IERC1363","nameLocations":["7584:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":4076,"src":"7584:8:39"},"referencedDeclaration":4076,"src":"7584:8:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC1363_$4076","typeString":"contract IERC1363"}},"visibility":"internal"},{"constant":false,"id":5212,"mutability":"mutable","name":"to","nameLocation":"7608:2:39","nodeType":"VariableDeclaration","scope":5249,"src":"7600:10:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5211,"name":"address","nodeType":"ElementaryTypeName","src":"7600:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5214,"mutability":"mutable","name":"value","nameLocation":"7620:5:39","nodeType":"VariableDeclaration","scope":5249,"src":"7612:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5213,"name":"uint256","nodeType":"ElementaryTypeName","src":"7612:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5216,"mutability":"mutable","name":"data","nameLocation":"7640:4:39","nodeType":"VariableDeclaration","scope":5249,"src":"7627:17:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5215,"name":"bytes","nodeType":"ElementaryTypeName","src":"7627:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7583:62:39"},"returnParameters":{"id":5218,"nodeType":"ParameterList","parameters":[],"src":"7655:0:39"},"scope":5332,"src":"7553:320:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5289,"nodeType":"Block","src":"8440:650:39","statements":[{"assignments":[5259],"declarations":[{"constant":false,"id":5259,"mutability":"mutable","name":"returnSize","nameLocation":"8458:10:39","nodeType":"VariableDeclaration","scope":5289,"src":"8450:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5258,"name":"uint256","nodeType":"ElementaryTypeName","src":"8450:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5260,"nodeType":"VariableDeclarationStatement","src":"8450:18:39"},{"assignments":[5262],"declarations":[{"constant":false,"id":5262,"mutability":"mutable","name":"returnValue","nameLocation":"8486:11:39","nodeType":"VariableDeclaration","scope":5289,"src":"8478:19:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5261,"name":"uint256","nodeType":"ElementaryTypeName","src":"8478:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5263,"nodeType":"VariableDeclarationStatement","src":"8478:19:39"},{"AST":{"nativeSrc":"8532:396:39","nodeType":"YulBlock","src":"8532:396:39","statements":[{"nativeSrc":"8546:75:39","nodeType":"YulVariableDeclaration","src":"8546:75:39","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"8566:3:39","nodeType":"YulIdentifier","src":"8566:3:39"},"nativeSrc":"8566:5:39","nodeType":"YulFunctionCall","src":"8566:5:39"},{"name":"token","nativeSrc":"8573:5:39","nodeType":"YulIdentifier","src":"8573:5:39"},{"kind":"number","nativeSrc":"8580:1:39","nodeType":"YulLiteral","src":"8580:1:39","type":"","value":"0"},{"arguments":[{"name":"data","nativeSrc":"8587:4:39","nodeType":"YulIdentifier","src":"8587:4:39"},{"kind":"number","nativeSrc":"8593:4:39","nodeType":"YulLiteral","src":"8593:4:39","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8583:3:39","nodeType":"YulIdentifier","src":"8583:3:39"},"nativeSrc":"8583:15:39","nodeType":"YulFunctionCall","src":"8583:15:39"},{"arguments":[{"name":"data","nativeSrc":"8606:4:39","nodeType":"YulIdentifier","src":"8606:4:39"}],"functionName":{"name":"mload","nativeSrc":"8600:5:39","nodeType":"YulIdentifier","src":"8600:5:39"},"nativeSrc":"8600:11:39","nodeType":"YulFunctionCall","src":"8600:11:39"},{"kind":"number","nativeSrc":"8613:1:39","nodeType":"YulLiteral","src":"8613:1:39","type":"","value":"0"},{"kind":"number","nativeSrc":"8616:4:39","nodeType":"YulLiteral","src":"8616:4:39","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"8561:4:39","nodeType":"YulIdentifier","src":"8561:4:39"},"nativeSrc":"8561:60:39","nodeType":"YulFunctionCall","src":"8561:60:39"},"variables":[{"name":"success","nativeSrc":"8550:7:39","nodeType":"YulTypedName","src":"8550:7:39","type":""}]},{"body":{"nativeSrc":"8682:157:39","nodeType":"YulBlock","src":"8682:157:39","statements":[{"nativeSrc":"8700:22:39","nodeType":"YulVariableDeclaration","src":"8700:22:39","value":{"arguments":[{"kind":"number","nativeSrc":"8717:4:39","nodeType":"YulLiteral","src":"8717:4:39","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"8711:5:39","nodeType":"YulIdentifier","src":"8711:5:39"},"nativeSrc":"8711:11:39","nodeType":"YulFunctionCall","src":"8711:11:39"},"variables":[{"name":"ptr","nativeSrc":"8704:3:39","nodeType":"YulTypedName","src":"8704:3:39","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"8754:3:39","nodeType":"YulIdentifier","src":"8754:3:39"},{"kind":"number","nativeSrc":"8759:1:39","nodeType":"YulLiteral","src":"8759:1:39","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8762:14:39","nodeType":"YulIdentifier","src":"8762:14:39"},"nativeSrc":"8762:16:39","nodeType":"YulFunctionCall","src":"8762:16:39"}],"functionName":{"name":"returndatacopy","nativeSrc":"8739:14:39","nodeType":"YulIdentifier","src":"8739:14:39"},"nativeSrc":"8739:40:39","nodeType":"YulFunctionCall","src":"8739:40:39"},"nativeSrc":"8739:40:39","nodeType":"YulExpressionStatement","src":"8739:40:39"},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"8803:3:39","nodeType":"YulIdentifier","src":"8803:3:39"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8808:14:39","nodeType":"YulIdentifier","src":"8808:14:39"},"nativeSrc":"8808:16:39","nodeType":"YulFunctionCall","src":"8808:16:39"}],"functionName":{"name":"revert","nativeSrc":"8796:6:39","nodeType":"YulIdentifier","src":"8796:6:39"},"nativeSrc":"8796:29:39","nodeType":"YulFunctionCall","src":"8796:29:39"},"nativeSrc":"8796:29:39","nodeType":"YulExpressionStatement","src":"8796:29:39"}]},"condition":{"arguments":[{"name":"success","nativeSrc":"8673:7:39","nodeType":"YulIdentifier","src":"8673:7:39"}],"functionName":{"name":"iszero","nativeSrc":"8666:6:39","nodeType":"YulIdentifier","src":"8666:6:39"},"nativeSrc":"8666:15:39","nodeType":"YulFunctionCall","src":"8666:15:39"},"nativeSrc":"8663:176:39","nodeType":"YulIf","src":"8663:176:39"},{"nativeSrc":"8852:30:39","nodeType":"YulAssignment","src":"8852:30:39","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8866:14:39","nodeType":"YulIdentifier","src":"8866:14:39"},"nativeSrc":"8866:16:39","nodeType":"YulFunctionCall","src":"8866:16:39"},"variableNames":[{"name":"returnSize","nativeSrc":"8852:10:39","nodeType":"YulIdentifier","src":"8852:10:39"}]},{"nativeSrc":"8895:23:39","nodeType":"YulAssignment","src":"8895:23:39","value":{"arguments":[{"kind":"number","nativeSrc":"8916:1:39","nodeType":"YulLiteral","src":"8916:1:39","type":"","value":"0"}],"functionName":{"name":"mload","nativeSrc":"8910:5:39","nodeType":"YulIdentifier","src":"8910:5:39"},"nativeSrc":"8910:8:39","nodeType":"YulFunctionCall","src":"8910:8:39"},"variableNames":[{"name":"returnValue","nativeSrc":"8895:11:39","nodeType":"YulIdentifier","src":"8895:11:39"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":5255,"isOffset":false,"isSlot":false,"src":"8587:4:39","valueSize":1},{"declaration":5255,"isOffset":false,"isSlot":false,"src":"8606:4:39","valueSize":1},{"declaration":5259,"isOffset":false,"isSlot":false,"src":"8852:10:39","valueSize":1},{"declaration":5262,"isOffset":false,"isSlot":false,"src":"8895:11:39","valueSize":1},{"declaration":5253,"isOffset":false,"isSlot":false,"src":"8573:5:39","valueSize":1}],"flags":["memory-safe"],"id":5264,"nodeType":"InlineAssembly","src":"8507:421:39"},{"condition":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5265,"name":"returnSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5259,"src":"8942:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8956:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8942:15:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5276,"name":"returnValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5262,"src":"8994:11:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":5277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9009:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8994:16:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8942:68:39","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":5270,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5253,"src":"8968:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}],"id":5269,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8960:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5268,"name":"address","nodeType":"ElementaryTypeName","src":"8960:7:39","typeDescriptions":{}}},"id":5271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8960:14:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8975:4:39","memberName":"code","nodeType":"MemberAccess","src":"8960:19:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8980:6:39","memberName":"length","nodeType":"MemberAccess","src":"8960:26:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8990:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8960:31:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5288,"nodeType":"IfStatement","src":"8938:146:39","trueBody":{"id":5287,"nodeType":"Block","src":"9012:72:39","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":5283,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5253,"src":"9066:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}],"id":5282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9058:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5281,"name":"address","nodeType":"ElementaryTypeName","src":"9058:7:39","typeDescriptions":{}}},"id":5284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9058:14:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5280,"name":"SafeERC20FailedOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4880,"src":"9033:24:39","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":5285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9033:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5286,"nodeType":"RevertStatement","src":"9026:47:39"}]}}]},"documentation":{"id":5250,"nodeType":"StructuredDocumentation","src":"7879:486:39","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements."},"id":5290,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"8379:19:39","nodeType":"FunctionDefinition","parameters":{"id":5256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5253,"mutability":"mutable","name":"token","nameLocation":"8406:5:39","nodeType":"VariableDeclaration","scope":5290,"src":"8399:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},"typeName":{"id":5252,"nodeType":"UserDefinedTypeName","pathNode":{"id":5251,"name":"IERC20","nameLocations":["8399:6:39"],"nodeType":"IdentifierPath","referencedDeclaration":4842,"src":"8399:6:39"},"referencedDeclaration":4842,"src":"8399:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":5255,"mutability":"mutable","name":"data","nameLocation":"8426:4:39","nodeType":"VariableDeclaration","scope":5290,"src":"8413:17:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5254,"name":"bytes","nodeType":"ElementaryTypeName","src":"8413:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8398:33:39"},"returnParameters":{"id":5257,"nodeType":"ParameterList","parameters":[],"src":"8440:0:39"},"scope":5332,"src":"8370:720:39","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5330,"nodeType":"Block","src":"9681:391:39","statements":[{"assignments":[5302],"declarations":[{"constant":false,"id":5302,"mutability":"mutable","name":"success","nameLocation":"9696:7:39","nodeType":"VariableDeclaration","scope":5330,"src":"9691:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5301,"name":"bool","nodeType":"ElementaryTypeName","src":"9691:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":5303,"nodeType":"VariableDeclarationStatement","src":"9691:12:39"},{"assignments":[5305],"declarations":[{"constant":false,"id":5305,"mutability":"mutable","name":"returnSize","nameLocation":"9721:10:39","nodeType":"VariableDeclaration","scope":5330,"src":"9713:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5304,"name":"uint256","nodeType":"ElementaryTypeName","src":"9713:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5306,"nodeType":"VariableDeclarationStatement","src":"9713:18:39"},{"assignments":[5308],"declarations":[{"constant":false,"id":5308,"mutability":"mutable","name":"returnValue","nameLocation":"9749:11:39","nodeType":"VariableDeclaration","scope":5330,"src":"9741:19:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5307,"name":"uint256","nodeType":"ElementaryTypeName","src":"9741:7:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5309,"nodeType":"VariableDeclarationStatement","src":"9741:19:39"},{"AST":{"nativeSrc":"9795:174:39","nodeType":"YulBlock","src":"9795:174:39","statements":[{"nativeSrc":"9809:71:39","nodeType":"YulAssignment","src":"9809:71:39","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"9825:3:39","nodeType":"YulIdentifier","src":"9825:3:39"},"nativeSrc":"9825:5:39","nodeType":"YulFunctionCall","src":"9825:5:39"},{"name":"token","nativeSrc":"9832:5:39","nodeType":"YulIdentifier","src":"9832:5:39"},{"kind":"number","nativeSrc":"9839:1:39","nodeType":"YulLiteral","src":"9839:1:39","type":"","value":"0"},{"arguments":[{"name":"data","nativeSrc":"9846:4:39","nodeType":"YulIdentifier","src":"9846:4:39"},{"kind":"number","nativeSrc":"9852:4:39","nodeType":"YulLiteral","src":"9852:4:39","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9842:3:39","nodeType":"YulIdentifier","src":"9842:3:39"},"nativeSrc":"9842:15:39","nodeType":"YulFunctionCall","src":"9842:15:39"},{"arguments":[{"name":"data","nativeSrc":"9865:4:39","nodeType":"YulIdentifier","src":"9865:4:39"}],"functionName":{"name":"mload","nativeSrc":"9859:5:39","nodeType":"YulIdentifier","src":"9859:5:39"},"nativeSrc":"9859:11:39","nodeType":"YulFunctionCall","src":"9859:11:39"},{"kind":"number","nativeSrc":"9872:1:39","nodeType":"YulLiteral","src":"9872:1:39","type":"","value":"0"},{"kind":"number","nativeSrc":"9875:4:39","nodeType":"YulLiteral","src":"9875:4:39","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"9820:4:39","nodeType":"YulIdentifier","src":"9820:4:39"},"nativeSrc":"9820:60:39","nodeType":"YulFunctionCall","src":"9820:60:39"},"variableNames":[{"name":"success","nativeSrc":"9809:7:39","nodeType":"YulIdentifier","src":"9809:7:39"}]},{"nativeSrc":"9893:30:39","nodeType":"YulAssignment","src":"9893:30:39","value":{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"9907:14:39","nodeType":"YulIdentifier","src":"9907:14:39"},"nativeSrc":"9907:16:39","nodeType":"YulFunctionCall","src":"9907:16:39"},"variableNames":[{"name":"returnSize","nativeSrc":"9893:10:39","nodeType":"YulIdentifier","src":"9893:10:39"}]},{"nativeSrc":"9936:23:39","nodeType":"YulAssignment","src":"9936:23:39","value":{"arguments":[{"kind":"number","nativeSrc":"9957:1:39","nodeType":"YulLiteral","src":"9957:1:39","type":"","value":"0"}],"functionName":{"name":"mload","nativeSrc":"9951:5:39","nodeType":"YulIdentifier","src":"9951:5:39"},"nativeSrc":"9951:8:39","nodeType":"YulFunctionCall","src":"9951:8:39"},"variableNames":[{"name":"returnValue","nativeSrc":"9936:11:39","nodeType":"YulIdentifier","src":"9936:11:39"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":5296,"isOffset":false,"isSlot":false,"src":"9846:4:39","valueSize":1},{"declaration":5296,"isOffset":false,"isSlot":false,"src":"9865:4:39","valueSize":1},{"declaration":5305,"isOffset":false,"isSlot":false,"src":"9893:10:39","valueSize":1},{"declaration":5308,"isOffset":false,"isSlot":false,"src":"9936:11:39","valueSize":1},{"declaration":5302,"isOffset":false,"isSlot":false,"src":"9809:7:39","valueSize":1},{"declaration":5294,"isOffset":false,"isSlot":false,"src":"9832:5:39","valueSize":1}],"flags":["memory-safe"],"id":5310,"nodeType":"InlineAssembly","src":"9770:199:39"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5311,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5302,"src":"9985:7:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5312,"name":"returnSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5305,"src":"9997:10:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10011:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9997:15:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5323,"name":"returnValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5308,"src":"10048:11:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":5324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10063:1:39","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10048:16:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9997:67:39","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":5317,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5294,"src":"10023:5:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}],"id":5316,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10015:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5315,"name":"address","nodeType":"ElementaryTypeName","src":"10015:7:39","typeDescriptions":{}}},"id":5318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10015:14:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10030:4:39","memberName":"code","nodeType":"MemberAccess","src":"10015:19:39","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10035:6:39","memberName":"length","nodeType":"MemberAccess","src":"10015:26:39","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10044:1:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10015:30:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5327,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9996:69:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9985:80:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5300,"id":5329,"nodeType":"Return","src":"9978:87:39"}]},"documentation":{"id":5291,"nodeType":"StructuredDocumentation","src":"9096:491:39","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead."},"id":5331,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturnBool","nameLocation":"9601:23:39","nodeType":"FunctionDefinition","parameters":{"id":5297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5294,"mutability":"mutable","name":"token","nameLocation":"9632:5:39","nodeType":"VariableDeclaration","scope":5331,"src":"9625:12:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"},"typeName":{"id":5293,"nodeType":"UserDefinedTypeName","pathNode":{"id":5292,"name":"IERC20","nameLocations":["9625:6:39"],"nodeType":"IdentifierPath","referencedDeclaration":4842,"src":"9625:6:39"},"referencedDeclaration":4842,"src":"9625:6:39","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$4842","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":5296,"mutability":"mutable","name":"data","nameLocation":"9652:4:39","nodeType":"VariableDeclaration","scope":5331,"src":"9639:17:39","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5295,"name":"bytes","nodeType":"ElementaryTypeName","src":"9639:5:39","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9624:33:39"},"returnParameters":{"id":5300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5299,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5331,"src":"9675:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5298,"name":"bool","nodeType":"ElementaryTypeName","src":"9675:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9674:6:39"},"scope":5332,"src":"9592:480:39","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":5333,"src":"698:9376:39","usedErrors":[4880,4889],"usedEvents":[]}],"src":"115:9960:39"},"id":39},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","exportedSymbols":{"Context":[6685],"ERC165":[8619],"ERC721":[6289],"ERC721Utils":[6655],"IERC165":[8631],"IERC721":[6406],"IERC721Errors":[4202],"IERC721Metadata":[6578],"Strings":[8139]},"id":6290,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5334,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:40"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":5336,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6290,"sourceUnit":6407,"src":"133:38:40","symbolAliases":[{"foreign":{"id":5335,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6406,"src":"141:7:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"./extensions/IERC721Metadata.sol","id":5338,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6290,"sourceUnit":6579,"src":"172:65:40","symbolAliases":[{"foreign":{"id":5337,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6578,"src":"180:15:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol","file":"./utils/ERC721Utils.sol","id":5340,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6290,"sourceUnit":6656,"src":"238:52:40","symbolAliases":[{"foreign":{"id":5339,"name":"ERC721Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6655,"src":"246:11:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":5342,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6290,"sourceUnit":6686,"src":"291:48:40","symbolAliases":[{"foreign":{"id":5341,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6685,"src":"299:7:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../../utils/Strings.sol","id":5344,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6290,"sourceUnit":8140,"src":"340:48:40","symbolAliases":[{"foreign":{"id":5343,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8139,"src":"348:7:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","id":5347,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6290,"sourceUnit":8620,"src":"389:69:40","symbolAliases":[{"foreign":{"id":5345,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8631,"src":"397:7:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":5346,"name":"ERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8619,"src":"406:6:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","id":5349,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6290,"sourceUnit":4250,"src":"459:66:40","symbolAliases":[{"foreign":{"id":5348,"name":"IERC721Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"467:13:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5351,"name":"Context","nameLocations":["803:7:40"],"nodeType":"IdentifierPath","referencedDeclaration":6685,"src":"803:7:40"},"id":5352,"nodeType":"InheritanceSpecifier","src":"803:7:40"},{"baseName":{"id":5353,"name":"ERC165","nameLocations":["812:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":8619,"src":"812:6:40"},"id":5354,"nodeType":"InheritanceSpecifier","src":"812:6:40"},{"baseName":{"id":5355,"name":"IERC721","nameLocations":["820:7:40"],"nodeType":"IdentifierPath","referencedDeclaration":6406,"src":"820:7:40"},"id":5356,"nodeType":"InheritanceSpecifier","src":"820:7:40"},{"baseName":{"id":5357,"name":"IERC721Metadata","nameLocations":["829:15:40"],"nodeType":"IdentifierPath","referencedDeclaration":6578,"src":"829:15:40"},"id":5358,"nodeType":"InheritanceSpecifier","src":"829:15:40"},{"baseName":{"id":5359,"name":"IERC721Errors","nameLocations":["846:13:40"],"nodeType":"IdentifierPath","referencedDeclaration":4202,"src":"846:13:40"},"id":5360,"nodeType":"InheritanceSpecifier","src":"846:13:40"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":5350,"nodeType":"StructuredDocumentation","src":"527:247:40","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"id":6289,"linearizedBaseContracts":[6289,4202,6578,6406,8619,8631,6685],"name":"ERC721","nameLocation":"793:6:40","nodeType":"ContractDefinition","nodes":[{"global":false,"id":5363,"libraryName":{"id":5361,"name":"Strings","nameLocations":["872:7:40"],"nodeType":"IdentifierPath","referencedDeclaration":8139,"src":"872:7:40"},"nodeType":"UsingForDirective","src":"866:26:40","typeName":{"id":5362,"name":"uint256","nodeType":"ElementaryTypeName","src":"884:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":5365,"mutability":"mutable","name":"_name","nameLocation":"931:5:40","nodeType":"VariableDeclaration","scope":6289,"src":"916:20:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":5364,"name":"string","nodeType":"ElementaryTypeName","src":"916:6:40","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":5367,"mutability":"mutable","name":"_symbol","nameLocation":"978:7:40","nodeType":"VariableDeclaration","scope":6289,"src":"963:22:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":5366,"name":"string","nodeType":"ElementaryTypeName","src":"963:6:40","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":5371,"mutability":"mutable","name":"_owners","nameLocation":"1036:7:40","nodeType":"VariableDeclaration","scope":6289,"src":"992:51:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":5370,"keyName":"tokenId","keyNameLocation":"1008:7:40","keyType":{"id":5368,"name":"uint256","nodeType":"ElementaryTypeName","src":"1000:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"992:35:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":5369,"name":"address","nodeType":"ElementaryTypeName","src":"1019:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":5375,"mutability":"mutable","name":"_balances","nameLocation":"1092:9:40","nodeType":"VariableDeclaration","scope":6289,"src":"1050:51:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":5374,"keyName":"owner","keyNameLocation":"1066:5:40","keyType":{"id":5372,"name":"address","nodeType":"ElementaryTypeName","src":"1058:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1050:33:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":5373,"name":"uint256","nodeType":"ElementaryTypeName","src":"1075:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":5379,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1152:15:40","nodeType":"VariableDeclaration","scope":6289,"src":"1108:59:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":5378,"keyName":"tokenId","keyNameLocation":"1124:7:40","keyType":{"id":5376,"name":"uint256","nodeType":"ElementaryTypeName","src":"1116:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1108:35:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":5377,"name":"address","nodeType":"ElementaryTypeName","src":"1135:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":5385,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"1242:18:40","nodeType":"VariableDeclaration","scope":6289,"src":"1174:86:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":5384,"keyName":"owner","keyNameLocation":"1190:5:40","keyType":{"id":5380,"name":"address","nodeType":"ElementaryTypeName","src":"1182:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1174:59:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":5383,"keyName":"operator","keyNameLocation":"1215:8:40","keyType":{"id":5381,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1199:33:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":5382,"name":"bool","nodeType":"ElementaryTypeName","src":"1227:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"body":{"id":5401,"nodeType":"Block","src":"1436:57:40","statements":[{"expression":{"id":5395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5393,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5365,"src":"1446:5:40","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5394,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5388,"src":"1454:5:40","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1446:13:40","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":5396,"nodeType":"ExpressionStatement","src":"1446:13:40"},{"expression":{"id":5399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5397,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5367,"src":"1469:7:40","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5398,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5390,"src":"1479:7:40","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1469:17:40","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":5400,"nodeType":"ExpressionStatement","src":"1469:17:40"}]},"documentation":{"id":5386,"nodeType":"StructuredDocumentation","src":"1267:108:40","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":5402,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":5391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5388,"mutability":"mutable","name":"name_","nameLocation":"1406:5:40","nodeType":"VariableDeclaration","scope":5402,"src":"1392:19:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5387,"name":"string","nodeType":"ElementaryTypeName","src":"1392:6:40","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":5390,"mutability":"mutable","name":"symbol_","nameLocation":"1427:7:40","nodeType":"VariableDeclaration","scope":5402,"src":"1413:21:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5389,"name":"string","nodeType":"ElementaryTypeName","src":"1413:6:40","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1391:44:40"},"returnParameters":{"id":5392,"nodeType":"ParameterList","parameters":[],"src":"1436:0:40"},"scope":6289,"src":"1380:113:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[8618,8630],"body":{"id":5432,"nodeType":"Block","src":"1668:192:40","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5413,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"1697:11:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":5415,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6406,"src":"1717:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$6406_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$6406_$","typeString":"type(contract IERC721)"}],"id":5414,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1712:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1712:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$6406","typeString":"type(contract IERC721)"}},"id":5417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1726:11:40","memberName":"interfaceId","nodeType":"MemberAccess","src":"1712:25:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1697:40:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":5424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5419,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"1753:11:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":5421,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6578,"src":"1773:15:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$6578_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$6578_$","typeString":"type(contract IERC721Metadata)"}],"id":5420,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1768:4:40","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1768:21:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$6578","typeString":"type(contract IERC721Metadata)"}},"id":5423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1790:11:40","memberName":"interfaceId","nodeType":"MemberAccess","src":"1768:33:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1753:48:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1697:104:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":5428,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"1841:11:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":5426,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1817:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$6289_$","typeString":"type(contract super ERC721)"}},"id":5427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1823:17:40","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":8618,"src":"1817:23:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":5429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1817:36:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1697:156:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5412,"id":5431,"nodeType":"Return","src":"1678:175:40"}]},"documentation":{"id":5403,"nodeType":"StructuredDocumentation","src":"1499:56:40","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":5433,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1569:17:40","nodeType":"FunctionDefinition","overrides":{"id":5409,"nodeType":"OverrideSpecifier","overrides":[{"id":5407,"name":"ERC165","nameLocations":["1636:6:40"],"nodeType":"IdentifierPath","referencedDeclaration":8619,"src":"1636:6:40"},{"id":5408,"name":"IERC165","nameLocations":["1644:7:40"],"nodeType":"IdentifierPath","referencedDeclaration":8631,"src":"1644:7:40"}],"src":"1627:25:40"},"parameters":{"id":5406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5405,"mutability":"mutable","name":"interfaceId","nameLocation":"1594:11:40","nodeType":"VariableDeclaration","scope":5433,"src":"1587:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":5404,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1587:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1586:20:40"},"returnParameters":{"id":5412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5411,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5433,"src":"1662:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5410,"name":"bool","nodeType":"ElementaryTypeName","src":"1662:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1661:6:40"},"scope":6289,"src":"1560:300:40","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6331],"body":{"id":5460,"nodeType":"Block","src":"1991:136:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5441,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5436,"src":"2005:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2022:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2014:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5442,"name":"address","nodeType":"ElementaryTypeName","src":"2014:7:40","typeDescriptions":{}}},"id":5445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2014:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2005:19:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5455,"nodeType":"IfStatement","src":"2001:87:40","trueBody":{"id":5454,"nodeType":"Block","src":"2026:62:40","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":5450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2074:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2066:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5448,"name":"address","nodeType":"ElementaryTypeName","src":"2066:7:40","typeDescriptions":{}}},"id":5451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2066:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5447,"name":"ERC721InvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4160,"src":"2047:18:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":5452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2047:30:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5453,"nodeType":"RevertStatement","src":"2040:37:40"}]}},{"expression":{"baseExpression":{"id":5456,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5375,"src":"2104:9:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5458,"indexExpression":{"id":5457,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5436,"src":"2114:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2104:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5440,"id":5459,"nodeType":"Return","src":"2097:23:40"}]},"documentation":{"id":5434,"nodeType":"StructuredDocumentation","src":"1866:48:40","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","id":5461,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1928:9:40","nodeType":"FunctionDefinition","parameters":{"id":5437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5436,"mutability":"mutable","name":"owner","nameLocation":"1946:5:40","nodeType":"VariableDeclaration","scope":5461,"src":"1938:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5435,"name":"address","nodeType":"ElementaryTypeName","src":"1938:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1937:15:40"},"returnParameters":{"id":5440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5439,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5461,"src":"1982:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5438,"name":"uint256","nodeType":"ElementaryTypeName","src":"1982:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1981:9:40"},"scope":6289,"src":"1919:208:40","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6339],"body":{"id":5473,"nodeType":"Block","src":"2256:46:40","statements":[{"expression":{"arguments":[{"id":5470,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5464,"src":"2287:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5469,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6288,"src":"2273:13:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":5471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2273:22:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5468,"id":5472,"nodeType":"Return","src":"2266:29:40"}]},"documentation":{"id":5462,"nodeType":"StructuredDocumentation","src":"2133:46:40","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","id":5474,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"2193:7:40","nodeType":"FunctionDefinition","parameters":{"id":5465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5464,"mutability":"mutable","name":"tokenId","nameLocation":"2209:7:40","nodeType":"VariableDeclaration","scope":5474,"src":"2201:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5463,"name":"uint256","nodeType":"ElementaryTypeName","src":"2201:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2200:17:40"},"returnParameters":{"id":5468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5467,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5474,"src":"2247:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5466,"name":"address","nodeType":"ElementaryTypeName","src":"2247:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2246:9:40"},"scope":6289,"src":"2184:118:40","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6563],"body":{"id":5482,"nodeType":"Block","src":"2424:29:40","statements":[{"expression":{"id":5480,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5365,"src":"2441:5:40","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":5479,"id":5481,"nodeType":"Return","src":"2434:12:40"}]},"documentation":{"id":5475,"nodeType":"StructuredDocumentation","src":"2308:51:40","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","id":5483,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2373:4:40","nodeType":"FunctionDefinition","parameters":{"id":5476,"nodeType":"ParameterList","parameters":[],"src":"2377:2:40"},"returnParameters":{"id":5479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5478,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5483,"src":"2409:13:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5477,"name":"string","nodeType":"ElementaryTypeName","src":"2409:6:40","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2408:15:40"},"scope":6289,"src":"2364:89:40","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6569],"body":{"id":5491,"nodeType":"Block","src":"2579:31:40","statements":[{"expression":{"id":5489,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5367,"src":"2596:7:40","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":5488,"id":5490,"nodeType":"Return","src":"2589:14:40"}]},"documentation":{"id":5484,"nodeType":"StructuredDocumentation","src":"2459:53:40","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","id":5492,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2526:6:40","nodeType":"FunctionDefinition","parameters":{"id":5485,"nodeType":"ParameterList","parameters":[],"src":"2532:2:40"},"returnParameters":{"id":5488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5487,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5492,"src":"2564:13:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5486,"name":"string","nodeType":"ElementaryTypeName","src":"2564:6:40","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2563:15:40"},"scope":6289,"src":"2517:93:40","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6577],"body":{"id":5527,"nodeType":"Block","src":"2755:176:40","statements":[{"expression":{"arguments":[{"id":5501,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5495,"src":"2779:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5500,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6288,"src":"2765:13:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":5502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2765:22:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5503,"nodeType":"ExpressionStatement","src":"2765:22:40"},{"assignments":[5505],"declarations":[{"constant":false,"id":5505,"mutability":"mutable","name":"baseURI","nameLocation":"2812:7:40","nodeType":"VariableDeclaration","scope":5527,"src":"2798:21:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5504,"name":"string","nodeType":"ElementaryTypeName","src":"2798:6:40","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":5508,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":5506,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5537,"src":"2822:8:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":5507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2822:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"2798:34:40"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":5511,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5505,"src":"2855:7:40","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":5510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2849:5:40","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":5509,"name":"bytes","nodeType":"ElementaryTypeName","src":"2849:5:40","typeDescriptions":{}}},"id":5512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2849:14:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":5513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2864:6:40","memberName":"length","nodeType":"MemberAccess","src":"2849:21:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2873:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2849:25:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":5524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2922:2:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":5525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2849:75:40","trueExpression":{"arguments":[{"id":5519,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5505,"src":"2891:7:40","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5520,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5495,"src":"2900:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2908:8:40","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":6851,"src":"2900:16:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":5522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2900:18:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":5517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2877:6:40","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":5516,"name":"string","nodeType":"ElementaryTypeName","src":"2877:6:40","typeDescriptions":{}}},"id":5518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2884:6:40","memberName":"concat","nodeType":"MemberAccess","src":"2877:13:40","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":5523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2877:42:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":5499,"id":5526,"nodeType":"Return","src":"2842:82:40"}]},"documentation":{"id":5493,"nodeType":"StructuredDocumentation","src":"2616:55:40","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":5528,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"2685:8:40","nodeType":"FunctionDefinition","parameters":{"id":5496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5495,"mutability":"mutable","name":"tokenId","nameLocation":"2702:7:40","nodeType":"VariableDeclaration","scope":5528,"src":"2694:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5494,"name":"uint256","nodeType":"ElementaryTypeName","src":"2694:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2693:17:40"},"returnParameters":{"id":5499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5498,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5528,"src":"2740:13:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5497,"name":"string","nodeType":"ElementaryTypeName","src":"2740:6:40","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2739:15:40"},"scope":6289,"src":"2676:255:40","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":5536,"nodeType":"Block","src":"3239:26:40","statements":[{"expression":{"hexValue":"","id":5534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3256:2:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":5533,"id":5535,"nodeType":"Return","src":"3249:9:40"}]},"documentation":{"id":5529,"nodeType":"StructuredDocumentation","src":"2937:231:40","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"id":5537,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"3182:8:40","nodeType":"FunctionDefinition","parameters":{"id":5530,"nodeType":"ParameterList","parameters":[],"src":"3190:2:40"},"returnParameters":{"id":5533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5532,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5537,"src":"3224:13:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5531,"name":"string","nodeType":"ElementaryTypeName","src":"3224:6:40","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3223:15:40"},"scope":6289,"src":"3173:92:40","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[6379],"body":{"id":5552,"nodeType":"Block","src":"3383:52:40","statements":[{"expression":{"arguments":[{"id":5546,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5540,"src":"3402:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5547,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5542,"src":"3406:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":5548,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"3415:10:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3415:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5545,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[6156,6222],"referencedDeclaration":6156,"src":"3393:8:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":5550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3393:35:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5551,"nodeType":"ExpressionStatement","src":"3393:35:40"}]},"documentation":{"id":5538,"nodeType":"StructuredDocumentation","src":"3271:46:40","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","id":5553,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3331:7:40","nodeType":"FunctionDefinition","parameters":{"id":5543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5540,"mutability":"mutable","name":"to","nameLocation":"3347:2:40","nodeType":"VariableDeclaration","scope":5553,"src":"3339:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5539,"name":"address","nodeType":"ElementaryTypeName","src":"3339:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5542,"mutability":"mutable","name":"tokenId","nameLocation":"3359:7:40","nodeType":"VariableDeclaration","scope":5553,"src":"3351:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5541,"name":"uint256","nodeType":"ElementaryTypeName","src":"3351:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3338:29:40"},"returnParameters":{"id":5544,"nodeType":"ParameterList","parameters":[],"src":"3383:0:40"},"scope":6289,"src":"3322:113:40","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[6395],"body":{"id":5569,"nodeType":"Block","src":"3572:78:40","statements":[{"expression":{"arguments":[{"id":5562,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5556,"src":"3596:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5561,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6288,"src":"3582:13:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":5563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3582:22:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5564,"nodeType":"ExpressionStatement","src":"3582:22:40"},{"expression":{"arguments":[{"id":5566,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5556,"src":"3635:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5565,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5723,"src":"3622:12:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":5567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3622:21:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5560,"id":5568,"nodeType":"Return","src":"3615:28:40"}]},"documentation":{"id":5554,"nodeType":"StructuredDocumentation","src":"3441:50:40","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","id":5570,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"3505:11:40","nodeType":"FunctionDefinition","parameters":{"id":5557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5556,"mutability":"mutable","name":"tokenId","nameLocation":"3525:7:40","nodeType":"VariableDeclaration","scope":5570,"src":"3517:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5555,"name":"uint256","nodeType":"ElementaryTypeName","src":"3517:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3516:17:40"},"returnParameters":{"id":5560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5559,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5570,"src":"3563:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5558,"name":"address","nodeType":"ElementaryTypeName","src":"3563:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3562:9:40"},"scope":6289,"src":"3496:154:40","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6387],"body":{"id":5585,"nodeType":"Block","src":"3792:69:40","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5579,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"3821:10:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3821:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5581,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5573,"src":"3835:8:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5582,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5575,"src":"3845:8:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5578,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6259,"src":"3802:18:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":5583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3802:52:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5584,"nodeType":"ExpressionStatement","src":"3802:52:40"}]},"documentation":{"id":5571,"nodeType":"StructuredDocumentation","src":"3656:56:40","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","id":5586,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"3726:17:40","nodeType":"FunctionDefinition","parameters":{"id":5576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5573,"mutability":"mutable","name":"operator","nameLocation":"3752:8:40","nodeType":"VariableDeclaration","scope":5586,"src":"3744:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5572,"name":"address","nodeType":"ElementaryTypeName","src":"3744:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5575,"mutability":"mutable","name":"approved","nameLocation":"3767:8:40","nodeType":"VariableDeclaration","scope":5586,"src":"3762:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5574,"name":"bool","nodeType":"ElementaryTypeName","src":"3762:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3743:33:40"},"returnParameters":{"id":5577,"nodeType":"ParameterList","parameters":[],"src":"3792:0:40"},"scope":6289,"src":"3717:144:40","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[6405],"body":{"id":5602,"nodeType":"Block","src":"4021:59:40","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":5596,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5385,"src":"4038:18:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":5598,"indexExpression":{"id":5597,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5589,"src":"4057:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4038:25:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":5600,"indexExpression":{"id":5599,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5591,"src":"4064:8:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4038:35:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5595,"id":5601,"nodeType":"Return","src":"4031:42:40"}]},"documentation":{"id":5587,"nodeType":"StructuredDocumentation","src":"3867:55:40","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","id":5603,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"3936:16:40","nodeType":"FunctionDefinition","parameters":{"id":5592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5589,"mutability":"mutable","name":"owner","nameLocation":"3961:5:40","nodeType":"VariableDeclaration","scope":5603,"src":"3953:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5588,"name":"address","nodeType":"ElementaryTypeName","src":"3953:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5591,"mutability":"mutable","name":"operator","nameLocation":"3976:8:40","nodeType":"VariableDeclaration","scope":5603,"src":"3968:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5590,"name":"address","nodeType":"ElementaryTypeName","src":"3968:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3952:33:40"},"returnParameters":{"id":5595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5594,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5603,"src":"4015:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5593,"name":"bool","nodeType":"ElementaryTypeName","src":"4015:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4014:6:40"},"scope":6289,"src":"3927:153:40","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[6371],"body":{"id":5648,"nodeType":"Block","src":"4222:498:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5613,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5608,"src":"4236:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5616,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4250:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4242:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5614,"name":"address","nodeType":"ElementaryTypeName","src":"4242:7:40","typeDescriptions":{}}},"id":5617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4242:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4236:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5627,"nodeType":"IfStatement","src":"4232:87:40","trueBody":{"id":5626,"nodeType":"Block","src":"4254:65:40","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":5622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4305:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5621,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4297:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5620,"name":"address","nodeType":"ElementaryTypeName","src":"4297:7:40","typeDescriptions":{}}},"id":5623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4297:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5619,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"4275:21:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":5624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4275:33:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5625,"nodeType":"RevertStatement","src":"4268:40:40"}]}},{"assignments":[5629],"declarations":[{"constant":false,"id":5629,"mutability":"mutable","name":"previousOwner","nameLocation":"4545:13:40","nodeType":"VariableDeclaration","scope":5648,"src":"4537:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5628,"name":"address","nodeType":"ElementaryTypeName","src":"4537:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5636,"initialValue":{"arguments":[{"id":5631,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5608,"src":"4569:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5632,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"4573:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"id":5633,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"4582:10:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4582:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5630,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5902,"src":"4561:7:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":5635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4561:34:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4537:58:40"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5637,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5629,"src":"4609:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":5638,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5606,"src":"4626:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4609:21:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5647,"nodeType":"IfStatement","src":"4605:109:40","trueBody":{"id":5646,"nodeType":"Block","src":"4632:82:40","statements":[{"errorCall":{"arguments":[{"id":5641,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5606,"src":"4674:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5642,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"4680:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5643,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5629,"src":"4689:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5640,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4174,"src":"4653:20:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (address,uint256,address) pure returns (error)"}},"id":5644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4653:50:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5645,"nodeType":"RevertStatement","src":"4646:57:40"}]}}]},"documentation":{"id":5604,"nodeType":"StructuredDocumentation","src":"4086:51:40","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","id":5649,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4151:12:40","nodeType":"FunctionDefinition","parameters":{"id":5611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5606,"mutability":"mutable","name":"from","nameLocation":"4172:4:40","nodeType":"VariableDeclaration","scope":5649,"src":"4164:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5605,"name":"address","nodeType":"ElementaryTypeName","src":"4164:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5608,"mutability":"mutable","name":"to","nameLocation":"4186:2:40","nodeType":"VariableDeclaration","scope":5649,"src":"4178:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5607,"name":"address","nodeType":"ElementaryTypeName","src":"4178:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5610,"mutability":"mutable","name":"tokenId","nameLocation":"4198:7:40","nodeType":"VariableDeclaration","scope":5649,"src":"4190:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5609,"name":"uint256","nodeType":"ElementaryTypeName","src":"4190:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4163:43:40"},"returnParameters":{"id":5612,"nodeType":"ParameterList","parameters":[],"src":"4222:0:40"},"scope":6289,"src":"4142:578:40","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[6361],"body":{"id":5666,"nodeType":"Block","src":"4862:56:40","statements":[{"expression":{"arguments":[{"id":5660,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5652,"src":"4889:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5661,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5654,"src":"4895:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5662,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5656,"src":"4899:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":5663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4908:2:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":5659,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[5667,5697],"referencedDeclaration":5697,"src":"4872:16:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":5664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4872:39:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5665,"nodeType":"ExpressionStatement","src":"4872:39:40"}]},"documentation":{"id":5650,"nodeType":"StructuredDocumentation","src":"4726:55:40","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","id":5667,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4795:16:40","nodeType":"FunctionDefinition","parameters":{"id":5657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5652,"mutability":"mutable","name":"from","nameLocation":"4820:4:40","nodeType":"VariableDeclaration","scope":5667,"src":"4812:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5651,"name":"address","nodeType":"ElementaryTypeName","src":"4812:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5654,"mutability":"mutable","name":"to","nameLocation":"4834:2:40","nodeType":"VariableDeclaration","scope":5667,"src":"4826:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5653,"name":"address","nodeType":"ElementaryTypeName","src":"4826:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5656,"mutability":"mutable","name":"tokenId","nameLocation":"4846:7:40","nodeType":"VariableDeclaration","scope":5667,"src":"4838:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5655,"name":"uint256","nodeType":"ElementaryTypeName","src":"4838:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4811:43:40"},"returnParameters":{"id":5658,"nodeType":"ParameterList","parameters":[],"src":"4862:0:40"},"scope":6289,"src":"4786:132:40","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[6351],"body":{"id":5696,"nodeType":"Block","src":"5087:130:40","statements":[{"expression":{"arguments":[{"id":5680,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5670,"src":"5110:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5681,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5672,"src":"5116:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5682,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5674,"src":"5120:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5679,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5649,"src":"5097:12:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5097:31:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5684,"nodeType":"ExpressionStatement","src":"5097:31:40"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5688,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"5172:10:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5172:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5690,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5670,"src":"5186:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5691,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5672,"src":"5192:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5692,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5674,"src":"5196:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5693,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5676,"src":"5205:4:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5685,"name":"ERC721Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6655,"src":"5138:11:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Utils_$6655_$","typeString":"type(library ERC721Utils)"}},"id":5687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5150:21:40","memberName":"checkOnERC721Received","nodeType":"MemberAccess","referencedDeclaration":6654,"src":"5138:33:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,bytes memory)"}},"id":5694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5138:72:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5695,"nodeType":"ExpressionStatement","src":"5138:72:40"}]},"documentation":{"id":5668,"nodeType":"StructuredDocumentation","src":"4924:55:40","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","id":5697,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"4993:16:40","nodeType":"FunctionDefinition","parameters":{"id":5677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5670,"mutability":"mutable","name":"from","nameLocation":"5018:4:40","nodeType":"VariableDeclaration","scope":5697,"src":"5010:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5669,"name":"address","nodeType":"ElementaryTypeName","src":"5010:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5672,"mutability":"mutable","name":"to","nameLocation":"5032:2:40","nodeType":"VariableDeclaration","scope":5697,"src":"5024:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5671,"name":"address","nodeType":"ElementaryTypeName","src":"5024:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5674,"mutability":"mutable","name":"tokenId","nameLocation":"5044:7:40","nodeType":"VariableDeclaration","scope":5697,"src":"5036:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5673,"name":"uint256","nodeType":"ElementaryTypeName","src":"5036:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5676,"mutability":"mutable","name":"data","nameLocation":"5066:4:40","nodeType":"VariableDeclaration","scope":5697,"src":"5053:17:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5675,"name":"bytes","nodeType":"ElementaryTypeName","src":"5053:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5009:62:40"},"returnParameters":{"id":5678,"nodeType":"ParameterList","parameters":[],"src":"5087:0:40"},"scope":6289,"src":"4984:233:40","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":5709,"nodeType":"Block","src":"5807:40:40","statements":[{"expression":{"baseExpression":{"id":5705,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5371,"src":"5824:7:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":5707,"indexExpression":{"id":5706,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5700,"src":"5832:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5824:16:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5704,"id":5708,"nodeType":"Return","src":"5817:23:40"}]},"documentation":{"id":5698,"nodeType":"StructuredDocumentation","src":"5223:504:40","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC-721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`."},"id":5710,"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"5741:8:40","nodeType":"FunctionDefinition","parameters":{"id":5701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5700,"mutability":"mutable","name":"tokenId","nameLocation":"5758:7:40","nodeType":"VariableDeclaration","scope":5710,"src":"5750:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5699,"name":"uint256","nodeType":"ElementaryTypeName","src":"5750:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5749:17:40"},"returnParameters":{"id":5704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5703,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5710,"src":"5798:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5702,"name":"address","nodeType":"ElementaryTypeName","src":"5798:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5797:9:40"},"scope":6289,"src":"5732:115:40","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":5722,"nodeType":"Block","src":"6042:48:40","statements":[{"expression":{"baseExpression":{"id":5718,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5379,"src":"6059:15:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":5720,"indexExpression":{"id":5719,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5713,"src":"6075:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6059:24:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5717,"id":5721,"nodeType":"Return","src":"6052:31:40"}]},"documentation":{"id":5711,"nodeType":"StructuredDocumentation","src":"5853:105:40","text":" @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted."},"id":5723,"implemented":true,"kind":"function","modifiers":[],"name":"_getApproved","nameLocation":"5972:12:40","nodeType":"FunctionDefinition","parameters":{"id":5714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5713,"mutability":"mutable","name":"tokenId","nameLocation":"5993:7:40","nodeType":"VariableDeclaration","scope":5723,"src":"5985:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5712,"name":"uint256","nodeType":"ElementaryTypeName","src":"5985:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5984:17:40"},"returnParameters":{"id":5717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5716,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5723,"src":"6033:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5715,"name":"address","nodeType":"ElementaryTypeName","src":"6033:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6032:9:40"},"scope":6289,"src":"5963:127:40","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":5758,"nodeType":"Block","src":"6510:163:40","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5735,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5728,"src":"6539:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6558:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6550:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5736,"name":"address","nodeType":"ElementaryTypeName","src":"6550:7:40","typeDescriptions":{}}},"id":5739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6550:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6539:21:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5741,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5726,"src":"6577:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5742,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5728,"src":"6586:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6577:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":5745,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5726,"src":"6614:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5746,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5728,"src":"6621:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5744,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5603,"src":"6597:16:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":5747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6597:32:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6577:52:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5750,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5730,"src":"6646:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5749,"name":"_getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5723,"src":"6633:12:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":5751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6633:21:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5752,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5728,"src":"6658:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6633:32:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6577:88:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":5755,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6576:90:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6539:127:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5734,"id":5757,"nodeType":"Return","src":"6520:146:40"}]},"documentation":{"id":5724,"nodeType":"StructuredDocumentation","src":"6096:300:40","text":" @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"id":5759,"implemented":true,"kind":"function","modifiers":[],"name":"_isAuthorized","nameLocation":"6410:13:40","nodeType":"FunctionDefinition","parameters":{"id":5731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5726,"mutability":"mutable","name":"owner","nameLocation":"6432:5:40","nodeType":"VariableDeclaration","scope":5759,"src":"6424:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5725,"name":"address","nodeType":"ElementaryTypeName","src":"6424:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5728,"mutability":"mutable","name":"spender","nameLocation":"6447:7:40","nodeType":"VariableDeclaration","scope":5759,"src":"6439:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5727,"name":"address","nodeType":"ElementaryTypeName","src":"6439:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5730,"mutability":"mutable","name":"tokenId","nameLocation":"6464:7:40","nodeType":"VariableDeclaration","scope":5759,"src":"6456:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5729,"name":"uint256","nodeType":"ElementaryTypeName","src":"6456:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6423:49:40"},"returnParameters":{"id":5734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5733,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5759,"src":"6504:4:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5732,"name":"bool","nodeType":"ElementaryTypeName","src":"6504:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6503:6:40"},"scope":6289,"src":"6401:272:40","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":5795,"nodeType":"Block","src":"7202:271:40","statements":[{"condition":{"id":5774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7216:39:40","subExpression":{"arguments":[{"id":5770,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"7231:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5771,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5764,"src":"7238:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5772,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"7247:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5769,"name":"_isAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5759,"src":"7217:13:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) view returns (bool)"}},"id":5773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7217:38:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5794,"nodeType":"IfStatement","src":"7212:255:40","trueBody":{"id":5793,"nodeType":"Block","src":"7257:210:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5775,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"7275:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7292:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7284:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5776,"name":"address","nodeType":"ElementaryTypeName","src":"7284:7:40","typeDescriptions":{}}},"id":5779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7284:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7275:19:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5791,"nodeType":"Block","src":"7373:84:40","statements":[{"errorCall":{"arguments":[{"id":5787,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5764,"src":"7425:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5788,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"7434:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5786,"name":"ERC721InsufficientApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4191,"src":"7398:26:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256) pure returns (error)"}},"id":5789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7398:44:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5790,"nodeType":"RevertStatement","src":"7391:51:40"}]},"id":5792,"nodeType":"IfStatement","src":"7271:186:40","trueBody":{"id":5785,"nodeType":"Block","src":"7296:71:40","statements":[{"errorCall":{"arguments":[{"id":5782,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"7344:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5781,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4165,"src":"7321:22:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":5783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7321:31:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5784,"nodeType":"RevertStatement","src":"7314:38:40"}]}}]}}]},"documentation":{"id":5760,"nodeType":"StructuredDocumentation","src":"6679:421:40","text":" @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if:\n - `spender` does not have approval from `owner` for `tokenId`.\n - `spender` does not have approval to manage all of `owner`'s assets.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption."},"id":5796,"implemented":true,"kind":"function","modifiers":[],"name":"_checkAuthorized","nameLocation":"7114:16:40","nodeType":"FunctionDefinition","parameters":{"id":5767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5762,"mutability":"mutable","name":"owner","nameLocation":"7139:5:40","nodeType":"VariableDeclaration","scope":5796,"src":"7131:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5761,"name":"address","nodeType":"ElementaryTypeName","src":"7131:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5764,"mutability":"mutable","name":"spender","nameLocation":"7154:7:40","nodeType":"VariableDeclaration","scope":5796,"src":"7146:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5763,"name":"address","nodeType":"ElementaryTypeName","src":"7146:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5766,"mutability":"mutable","name":"tokenId","nameLocation":"7171:7:40","nodeType":"VariableDeclaration","scope":5796,"src":"7163:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5765,"name":"uint256","nodeType":"ElementaryTypeName","src":"7163:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7130:49:40"},"returnParameters":{"id":5768,"nodeType":"ParameterList","parameters":[],"src":"7202:0:40"},"scope":6289,"src":"7105:368:40","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":5811,"nodeType":"Block","src":"8190:78:40","statements":[{"id":5810,"nodeType":"UncheckedBlock","src":"8200:62:40","statements":[{"expression":{"id":5808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5804,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5375,"src":"8224:9:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5806,"indexExpression":{"id":5805,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5799,"src":"8234:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8224:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5807,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5801,"src":"8246:5:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"8224:27:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5809,"nodeType":"ExpressionStatement","src":"8224:27:40"}]}]},"documentation":{"id":5797,"nodeType":"StructuredDocumentation","src":"7479:631:40","text":" @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another."},"id":5812,"implemented":true,"kind":"function","modifiers":[],"name":"_increaseBalance","nameLocation":"8124:16:40","nodeType":"FunctionDefinition","parameters":{"id":5802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5799,"mutability":"mutable","name":"account","nameLocation":"8149:7:40","nodeType":"VariableDeclaration","scope":5812,"src":"8141:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5798,"name":"address","nodeType":"ElementaryTypeName","src":"8141:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5801,"mutability":"mutable","name":"value","nameLocation":"8166:5:40","nodeType":"VariableDeclaration","scope":5812,"src":"8158:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5800,"name":"uint128","nodeType":"ElementaryTypeName","src":"8158:7:40","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"8140:32:40"},"returnParameters":{"id":5803,"nodeType":"ParameterList","parameters":[],"src":"8190:0:40"},"scope":6289,"src":"8115:153:40","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5901,"nodeType":"Block","src":"8956:700:40","statements":[{"assignments":[5825],"declarations":[{"constant":false,"id":5825,"mutability":"mutable","name":"from","nameLocation":"8974:4:40","nodeType":"VariableDeclaration","scope":5901,"src":"8966:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5824,"name":"address","nodeType":"ElementaryTypeName","src":"8966:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5829,"initialValue":{"arguments":[{"id":5827,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"8990:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5826,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5710,"src":"8981:8:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":5828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8981:17:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8966:32:40"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5830,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"9058:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9074:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9066:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5831,"name":"address","nodeType":"ElementaryTypeName","src":"9066:7:40","typeDescriptions":{}}},"id":5834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9066:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9058:18:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5843,"nodeType":"IfStatement","src":"9054:86:40","trueBody":{"id":5842,"nodeType":"Block","src":"9078:62:40","statements":[{"expression":{"arguments":[{"id":5837,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"9109:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5838,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"9115:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5839,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"9121:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5836,"name":"_checkAuthorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5796,"src":"9092:16:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) view"}},"id":5840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9092:37:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5841,"nodeType":"ExpressionStatement","src":"9092:37:40"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5844,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"9184:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9200:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5846,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9192:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5845,"name":"address","nodeType":"ElementaryTypeName","src":"9192:7:40","typeDescriptions":{}}},"id":5848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9192:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9184:18:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5871,"nodeType":"IfStatement","src":"9180:256:40","trueBody":{"id":5870,"nodeType":"Block","src":"9204:232:40","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":5853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9317:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5852,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9309:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5851,"name":"address","nodeType":"ElementaryTypeName","src":"9309:7:40","typeDescriptions":{}}},"id":5854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9309:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5855,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"9321:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":5858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9338:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9330:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5856,"name":"address","nodeType":"ElementaryTypeName","src":"9330:7:40","typeDescriptions":{}}},"id":5859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9330:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"66616c7365","id":5860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9342:5:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5850,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[6156,6222],"referencedDeclaration":6222,"src":"9300:8:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":5861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9300:48:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5862,"nodeType":"ExpressionStatement","src":"9300:48:40"},{"id":5869,"nodeType":"UncheckedBlock","src":"9363:63:40","statements":[{"expression":{"id":5867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5863,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5375,"src":"9391:9:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5865,"indexExpression":{"id":5864,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"9401:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9391:15:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":5866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9410:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9391:20:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5868,"nodeType":"ExpressionStatement","src":"9391:20:40"}]}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5872,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5815,"src":"9450:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9464:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9456:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5873,"name":"address","nodeType":"ElementaryTypeName","src":"9456:7:40","typeDescriptions":{}}},"id":5876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9456:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9450:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5886,"nodeType":"IfStatement","src":"9446:107:40","trueBody":{"id":5885,"nodeType":"Block","src":"9468:85:40","statements":[{"id":5884,"nodeType":"UncheckedBlock","src":"9482:61:40","statements":[{"expression":{"id":5882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5878,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5375,"src":"9510:9:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":5880,"indexExpression":{"id":5879,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5815,"src":"9520:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9510:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":5881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9527:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9510:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5883,"nodeType":"ExpressionStatement","src":"9510:18:40"}]}]}},{"expression":{"id":5891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":5887,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5371,"src":"9563:7:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":5889,"indexExpression":{"id":5888,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"9571:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9563:16:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5890,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5815,"src":"9582:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9563:21:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5892,"nodeType":"ExpressionStatement","src":"9563:21:40"},{"eventCall":{"arguments":[{"id":5894,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"9609:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5895,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5815,"src":"9615:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5896,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5817,"src":"9619:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5893,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6305,"src":"9600:8:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9600:27:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5898,"nodeType":"EmitStatement","src":"9595:32:40"},{"expression":{"id":5899,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5825,"src":"9645:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":5823,"id":5900,"nodeType":"Return","src":"9638:11:40"}]},"documentation":{"id":5813,"nodeType":"StructuredDocumentation","src":"8274:582:40","text":" @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}."},"id":5902,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"8870:7:40","nodeType":"FunctionDefinition","parameters":{"id":5820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5815,"mutability":"mutable","name":"to","nameLocation":"8886:2:40","nodeType":"VariableDeclaration","scope":5902,"src":"8878:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5814,"name":"address","nodeType":"ElementaryTypeName","src":"8878:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5817,"mutability":"mutable","name":"tokenId","nameLocation":"8898:7:40","nodeType":"VariableDeclaration","scope":5902,"src":"8890:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5816,"name":"uint256","nodeType":"ElementaryTypeName","src":"8890:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5819,"mutability":"mutable","name":"auth","nameLocation":"8915:4:40","nodeType":"VariableDeclaration","scope":5902,"src":"8907:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5818,"name":"address","nodeType":"ElementaryTypeName","src":"8907:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8877:43:40"},"returnParameters":{"id":5823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5822,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5902,"src":"8947:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5821,"name":"address","nodeType":"ElementaryTypeName","src":"8947:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8946:9:40"},"scope":6289,"src":"8861:795:40","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":5951,"nodeType":"Block","src":"10031:274:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5910,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5905,"src":"10045:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10059:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10051:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5911,"name":"address","nodeType":"ElementaryTypeName","src":"10051:7:40","typeDescriptions":{}}},"id":5914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10051:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10045:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5924,"nodeType":"IfStatement","src":"10041:87:40","trueBody":{"id":5923,"nodeType":"Block","src":"10063:65:40","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":5919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10114:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5918,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10106:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5917,"name":"address","nodeType":"ElementaryTypeName","src":"10106:7:40","typeDescriptions":{}}},"id":5920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10106:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5916,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"10084:21:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":5921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10084:33:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5922,"nodeType":"RevertStatement","src":"10077:40:40"}]}},{"assignments":[5926],"declarations":[{"constant":false,"id":5926,"mutability":"mutable","name":"previousOwner","nameLocation":"10145:13:40","nodeType":"VariableDeclaration","scope":5951,"src":"10137:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5925,"name":"address","nodeType":"ElementaryTypeName","src":"10137:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":5935,"initialValue":{"arguments":[{"id":5928,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5905,"src":"10169:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5929,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5907,"src":"10173:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":5932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10190:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10182:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5930,"name":"address","nodeType":"ElementaryTypeName","src":"10182:7:40","typeDescriptions":{}}},"id":5933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10182:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5927,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5902,"src":"10161:7:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":5934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10161:32:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10137:56:40"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5936,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5926,"src":"10207:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10232:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10224:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5937,"name":"address","nodeType":"ElementaryTypeName","src":"10224:7:40","typeDescriptions":{}}},"id":5940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10224:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10207:27:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5950,"nodeType":"IfStatement","src":"10203:96:40","trueBody":{"id":5949,"nodeType":"Block","src":"10236:63:40","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":5945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10285:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10277:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5943,"name":"address","nodeType":"ElementaryTypeName","src":"10277:7:40","typeDescriptions":{}}},"id":5946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10277:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5942,"name":"ERC721InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4179,"src":"10257:19:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":5947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10257:31:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5948,"nodeType":"RevertStatement","src":"10250:38:40"}]}}]},"documentation":{"id":5903,"nodeType":"StructuredDocumentation","src":"9662:311:40","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"id":5952,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"9987:5:40","nodeType":"FunctionDefinition","parameters":{"id":5908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5905,"mutability":"mutable","name":"to","nameLocation":"10001:2:40","nodeType":"VariableDeclaration","scope":5952,"src":"9993:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5904,"name":"address","nodeType":"ElementaryTypeName","src":"9993:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5907,"mutability":"mutable","name":"tokenId","nameLocation":"10013:7:40","nodeType":"VariableDeclaration","scope":5952,"src":"10005:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5906,"name":"uint256","nodeType":"ElementaryTypeName","src":"10005:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9992:29:40"},"returnParameters":{"id":5909,"nodeType":"ParameterList","parameters":[],"src":"10031:0:40"},"scope":6289,"src":"9978:327:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5966,"nodeType":"Block","src":"10713:43:40","statements":[{"expression":{"arguments":[{"id":5961,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5955,"src":"10733:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5962,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"10737:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":5963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10746:2:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":5960,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[5967,5997],"referencedDeclaration":5997,"src":"10723:9:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":5964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10723:26:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5965,"nodeType":"ExpressionStatement","src":"10723:26:40"}]},"documentation":{"id":5953,"nodeType":"StructuredDocumentation","src":"10311:340:40","text":" @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":5967,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"10665:9:40","nodeType":"FunctionDefinition","parameters":{"id":5958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5955,"mutability":"mutable","name":"to","nameLocation":"10683:2:40","nodeType":"VariableDeclaration","scope":5967,"src":"10675:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5954,"name":"address","nodeType":"ElementaryTypeName","src":"10675:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5957,"mutability":"mutable","name":"tokenId","nameLocation":"10695:7:40","nodeType":"VariableDeclaration","scope":5967,"src":"10687:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5956,"name":"uint256","nodeType":"ElementaryTypeName","src":"10687:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10674:29:40"},"returnParameters":{"id":5959,"nodeType":"ParameterList","parameters":[],"src":"10713:0:40"},"scope":6289,"src":"10656:100:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":5996,"nodeType":"Block","src":"11061:123:40","statements":[{"expression":{"arguments":[{"id":5978,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"11077:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5979,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5972,"src":"11081:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5977,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5952,"src":"11071:5:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":5980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11071:18:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5981,"nodeType":"ExpressionStatement","src":"11071:18:40"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":5985,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"11133:10:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":5986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11133:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":5989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11155:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11147:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5987,"name":"address","nodeType":"ElementaryTypeName","src":"11147:7:40","typeDescriptions":{}}},"id":5990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11147:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5991,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5970,"src":"11159:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":5992,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5972,"src":"11163:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5993,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5974,"src":"11172:4:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":5982,"name":"ERC721Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6655,"src":"11099:11:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Utils_$6655_$","typeString":"type(library ERC721Utils)"}},"id":5984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11111:21:40","memberName":"checkOnERC721Received","nodeType":"MemberAccess","referencedDeclaration":6654,"src":"11099:33:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,bytes memory)"}},"id":5994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11099:78:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5995,"nodeType":"ExpressionStatement","src":"11099:78:40"}]},"documentation":{"id":5968,"nodeType":"StructuredDocumentation","src":"10762:210:40","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":5997,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"10986:9:40","nodeType":"FunctionDefinition","parameters":{"id":5975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5970,"mutability":"mutable","name":"to","nameLocation":"11004:2:40","nodeType":"VariableDeclaration","scope":5997,"src":"10996:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5969,"name":"address","nodeType":"ElementaryTypeName","src":"10996:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5972,"mutability":"mutable","name":"tokenId","nameLocation":"11016:7:40","nodeType":"VariableDeclaration","scope":5997,"src":"11008:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5971,"name":"uint256","nodeType":"ElementaryTypeName","src":"11008:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5974,"mutability":"mutable","name":"data","nameLocation":"11038:4:40","nodeType":"VariableDeclaration","scope":5997,"src":"11025:17:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5973,"name":"bytes","nodeType":"ElementaryTypeName","src":"11025:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10995:48:40"},"returnParameters":{"id":5976,"nodeType":"ParameterList","parameters":[],"src":"11061:0:40"},"scope":6289,"src":"10977:207:40","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6029,"nodeType":"Block","src":"11551:186:40","statements":[{"assignments":[6004],"declarations":[{"constant":false,"id":6004,"mutability":"mutable","name":"previousOwner","nameLocation":"11569:13:40","nodeType":"VariableDeclaration","scope":6029,"src":"11561:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6003,"name":"address","nodeType":"ElementaryTypeName","src":"11561:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6016,"initialValue":{"arguments":[{"arguments":[{"hexValue":"30","id":6008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11601:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11593:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6006,"name":"address","nodeType":"ElementaryTypeName","src":"11593:7:40","typeDescriptions":{}}},"id":6009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11593:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6010,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6000,"src":"11605:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":6013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11622:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11614:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6011,"name":"address","nodeType":"ElementaryTypeName","src":"11614:7:40","typeDescriptions":{}}},"id":6014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11614:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6005,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5902,"src":"11585:7:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":6015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11585:40:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11561:64:40"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6017,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6004,"src":"11639:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11664:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6019,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11656:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6018,"name":"address","nodeType":"ElementaryTypeName","src":"11656:7:40","typeDescriptions":{}}},"id":6021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11656:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11639:27:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6028,"nodeType":"IfStatement","src":"11635:96:40","trueBody":{"id":6027,"nodeType":"Block","src":"11668:63:40","statements":[{"errorCall":{"arguments":[{"id":6024,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6000,"src":"11712:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6023,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4165,"src":"11689:22:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":6025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11689:31:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6026,"nodeType":"RevertStatement","src":"11682:38:40"}]}}]},"documentation":{"id":5998,"nodeType":"StructuredDocumentation","src":"11190:315:40","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":6030,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"11519:5:40","nodeType":"FunctionDefinition","parameters":{"id":6001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6000,"mutability":"mutable","name":"tokenId","nameLocation":"11533:7:40","nodeType":"VariableDeclaration","scope":6030,"src":"11525:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5999,"name":"uint256","nodeType":"ElementaryTypeName","src":"11525:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11524:17:40"},"returnParameters":{"id":6002,"nodeType":"ParameterList","parameters":[],"src":"11551:0:40"},"scope":6289,"src":"11510:227:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6089,"nodeType":"Block","src":"12132:389:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6040,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6035,"src":"12146:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12160:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12152:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6041,"name":"address","nodeType":"ElementaryTypeName","src":"12152:7:40","typeDescriptions":{}}},"id":6044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12152:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12146:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6054,"nodeType":"IfStatement","src":"12142:87:40","trueBody":{"id":6053,"nodeType":"Block","src":"12164:65:40","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":6049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12215:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6048,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12207:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6047,"name":"address","nodeType":"ElementaryTypeName","src":"12207:7:40","typeDescriptions":{}}},"id":6050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12207:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6046,"name":"ERC721InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4184,"src":"12185:21:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":6051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12185:33:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6052,"nodeType":"RevertStatement","src":"12178:40:40"}]}},{"assignments":[6056],"declarations":[{"constant":false,"id":6056,"mutability":"mutable","name":"previousOwner","nameLocation":"12246:13:40","nodeType":"VariableDeclaration","scope":6089,"src":"12238:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6055,"name":"address","nodeType":"ElementaryTypeName","src":"12238:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6065,"initialValue":{"arguments":[{"id":6058,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6035,"src":"12270:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6059,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"12274:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":6062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12291:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12283:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6060,"name":"address","nodeType":"ElementaryTypeName","src":"12283:7:40","typeDescriptions":{}}},"id":6063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12283:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6057,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5902,"src":"12262:7:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":6064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12262:32:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12238:56:40"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6066,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"12308:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12333:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12325:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6067,"name":"address","nodeType":"ElementaryTypeName","src":"12325:7:40","typeDescriptions":{}}},"id":6070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12325:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12308:27:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6077,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"12410:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6078,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6033,"src":"12427:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12410:21:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6087,"nodeType":"IfStatement","src":"12406:109:40","trueBody":{"id":6086,"nodeType":"Block","src":"12433:82:40","statements":[{"errorCall":{"arguments":[{"id":6081,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6033,"src":"12475:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6082,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"12481:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6083,"name":"previousOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"12490:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6080,"name":"ERC721IncorrectOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4174,"src":"12454:20:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (address,uint256,address) pure returns (error)"}},"id":6084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12454:50:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6085,"nodeType":"RevertStatement","src":"12447:57:40"}]}},"id":6088,"nodeType":"IfStatement","src":"12304:211:40","trueBody":{"id":6076,"nodeType":"Block","src":"12337:63:40","statements":[{"errorCall":{"arguments":[{"id":6073,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"12381:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6072,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4165,"src":"12358:22:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":6074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12358:31:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6075,"nodeType":"RevertStatement","src":"12351:38:40"}]}}]},"documentation":{"id":6031,"nodeType":"StructuredDocumentation","src":"11743:313:40","text":" @dev Transfers `tokenId` from `from` to `to`.\n  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"id":6090,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"12070:9:40","nodeType":"FunctionDefinition","parameters":{"id":6038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6033,"mutability":"mutable","name":"from","nameLocation":"12088:4:40","nodeType":"VariableDeclaration","scope":6090,"src":"12080:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6032,"name":"address","nodeType":"ElementaryTypeName","src":"12080:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6035,"mutability":"mutable","name":"to","nameLocation":"12102:2:40","nodeType":"VariableDeclaration","scope":6090,"src":"12094:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6034,"name":"address","nodeType":"ElementaryTypeName","src":"12094:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6037,"mutability":"mutable","name":"tokenId","nameLocation":"12114:7:40","nodeType":"VariableDeclaration","scope":6090,"src":"12106:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6036,"name":"uint256","nodeType":"ElementaryTypeName","src":"12106:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12079:43:40"},"returnParameters":{"id":6039,"nodeType":"ParameterList","parameters":[],"src":"12132:0:40"},"scope":6289,"src":"12061:460:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6107,"nodeType":"Block","src":"13530:53:40","statements":[{"expression":{"arguments":[{"id":6101,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6093,"src":"13554:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6102,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6095,"src":"13560:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6103,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6097,"src":"13564:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":6104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13573:2:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":6100,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[6108,6138],"referencedDeclaration":6138,"src":"13540:13:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":6105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13540:36:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6106,"nodeType":"ExpressionStatement","src":"13540:36:40"}]},"documentation":{"id":6091,"nodeType":"StructuredDocumentation","src":"12527:923:40","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC-721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":6108,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"13464:13:40","nodeType":"FunctionDefinition","parameters":{"id":6098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6093,"mutability":"mutable","name":"from","nameLocation":"13486:4:40","nodeType":"VariableDeclaration","scope":6108,"src":"13478:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6092,"name":"address","nodeType":"ElementaryTypeName","src":"13478:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6095,"mutability":"mutable","name":"to","nameLocation":"13500:2:40","nodeType":"VariableDeclaration","scope":6108,"src":"13492:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6094,"name":"address","nodeType":"ElementaryTypeName","src":"13492:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6097,"mutability":"mutable","name":"tokenId","nameLocation":"13512:7:40","nodeType":"VariableDeclaration","scope":6108,"src":"13504:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6096,"name":"uint256","nodeType":"ElementaryTypeName","src":"13504:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13477:43:40"},"returnParameters":{"id":6099,"nodeType":"ParameterList","parameters":[],"src":"13530:0:40"},"scope":6289,"src":"13455:128:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6137,"nodeType":"Block","src":"13922:127:40","statements":[{"expression":{"arguments":[{"id":6121,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6111,"src":"13942:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6122,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6113,"src":"13948:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6123,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6115,"src":"13952:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6120,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6090,"src":"13932:9:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13932:28:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6125,"nodeType":"ExpressionStatement","src":"13932:28:40"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":6129,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"14004:10:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":6130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14004:12:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6131,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6111,"src":"14018:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6132,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6113,"src":"14024:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6133,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6115,"src":"14028:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6134,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6117,"src":"14037:4:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":6126,"name":"ERC721Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6655,"src":"13970:11:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Utils_$6655_$","typeString":"type(library ERC721Utils)"}},"id":6128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13982:21:40","memberName":"checkOnERC721Received","nodeType":"MemberAccess","referencedDeclaration":6654,"src":"13970:33:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,bytes memory)"}},"id":6135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13970:72:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6136,"nodeType":"ExpressionStatement","src":"13970:72:40"}]},"documentation":{"id":6109,"nodeType":"StructuredDocumentation","src":"13589:226:40","text":" @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":6138,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"13829:13:40","nodeType":"FunctionDefinition","parameters":{"id":6118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6111,"mutability":"mutable","name":"from","nameLocation":"13851:4:40","nodeType":"VariableDeclaration","scope":6138,"src":"13843:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6110,"name":"address","nodeType":"ElementaryTypeName","src":"13843:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6113,"mutability":"mutable","name":"to","nameLocation":"13865:2:40","nodeType":"VariableDeclaration","scope":6138,"src":"13857:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6112,"name":"address","nodeType":"ElementaryTypeName","src":"13857:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6115,"mutability":"mutable","name":"tokenId","nameLocation":"13877:7:40","nodeType":"VariableDeclaration","scope":6138,"src":"13869:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6114,"name":"uint256","nodeType":"ElementaryTypeName","src":"13869:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6117,"mutability":"mutable","name":"data","nameLocation":"13899:4:40","nodeType":"VariableDeclaration","scope":6138,"src":"13886:17:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6116,"name":"bytes","nodeType":"ElementaryTypeName","src":"13886:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13842:62:40"},"returnParameters":{"id":6119,"nodeType":"ParameterList","parameters":[],"src":"13922:0:40"},"scope":6289,"src":"13820:229:40","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6155,"nodeType":"Block","src":"14562:50:40","statements":[{"expression":{"arguments":[{"id":6149,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6141,"src":"14581:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6150,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6143,"src":"14585:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6151,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6145,"src":"14594:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":6152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14600:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6148,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[6156,6222],"referencedDeclaration":6222,"src":"14572:8:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,uint256,address,bool)"}},"id":6153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14572:33:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6154,"nodeType":"ExpressionStatement","src":"14572:33:40"}]},"documentation":{"id":6139,"nodeType":"StructuredDocumentation","src":"14055:432:40","text":" @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument."},"id":6156,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"14501:8:40","nodeType":"FunctionDefinition","parameters":{"id":6146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6141,"mutability":"mutable","name":"to","nameLocation":"14518:2:40","nodeType":"VariableDeclaration","scope":6156,"src":"14510:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6140,"name":"address","nodeType":"ElementaryTypeName","src":"14510:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6143,"mutability":"mutable","name":"tokenId","nameLocation":"14530:7:40","nodeType":"VariableDeclaration","scope":6156,"src":"14522:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6142,"name":"uint256","nodeType":"ElementaryTypeName","src":"14522:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6145,"mutability":"mutable","name":"auth","nameLocation":"14547:4:40","nodeType":"VariableDeclaration","scope":6156,"src":"14539:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6144,"name":"address","nodeType":"ElementaryTypeName","src":"14539:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14509:43:40"},"returnParameters":{"id":6147,"nodeType":"ParameterList","parameters":[],"src":"14562:0:40"},"scope":6289,"src":"14492:120:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6221,"nodeType":"Block","src":"14888:568:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6168,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6165,"src":"14954:9:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6169,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6163,"src":"14967:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14983:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14975:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6170,"name":"address","nodeType":"ElementaryTypeName","src":"14975:7:40","typeDescriptions":{}}},"id":6173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14975:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14967:18:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14954:31:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6214,"nodeType":"IfStatement","src":"14950:460:40","trueBody":{"id":6213,"nodeType":"Block","src":"14987:423:40","statements":[{"assignments":[6177],"declarations":[{"constant":false,"id":6177,"mutability":"mutable","name":"owner","nameLocation":"15009:5:40","nodeType":"VariableDeclaration","scope":6213,"src":"15001:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6176,"name":"address","nodeType":"ElementaryTypeName","src":"15001:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6181,"initialValue":{"arguments":[{"id":6179,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6161,"src":"15031:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6178,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6288,"src":"15017:13:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":6180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15017:22:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15001:38:40"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6182,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6163,"src":"15167:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":6185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15183:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15175:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6183,"name":"address","nodeType":"ElementaryTypeName","src":"15175:7:40","typeDescriptions":{}}},"id":6186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15175:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15167:18:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6188,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6177,"src":"15189:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6189,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6163,"src":"15198:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15189:13:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15167:35:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":6196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15206:30:40","subExpression":{"arguments":[{"id":6193,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6177,"src":"15224:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6194,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6163,"src":"15231:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6192,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5603,"src":"15207:16:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":6195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15207:29:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15167:69:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6203,"nodeType":"IfStatement","src":"15163:142:40","trueBody":{"id":6202,"nodeType":"Block","src":"15238:67:40","statements":[{"errorCall":{"arguments":[{"id":6199,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6163,"src":"15285:4:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6198,"name":"ERC721InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4196,"src":"15263:21:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":6200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15263:27:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6201,"nodeType":"RevertStatement","src":"15256:34:40"}]}},{"condition":{"id":6204,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6165,"src":"15323:9:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6212,"nodeType":"IfStatement","src":"15319:81:40","trueBody":{"id":6211,"nodeType":"Block","src":"15334:66:40","statements":[{"eventCall":{"arguments":[{"id":6206,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6177,"src":"15366:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6207,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6159,"src":"15373:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6208,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6161,"src":"15377:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6205,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6314,"src":"15357:8:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":6209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15357:28:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6210,"nodeType":"EmitStatement","src":"15352:33:40"}]}}]}},{"expression":{"id":6219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6215,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5379,"src":"15420:15:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":6217,"indexExpression":{"id":6216,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6161,"src":"15436:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15420:24:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6218,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6159,"src":"15447:2:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15420:29:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6220,"nodeType":"ExpressionStatement","src":"15420:29:40"}]},"documentation":{"id":6157,"nodeType":"StructuredDocumentation","src":"14618:171:40","text":" @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers."},"id":6222,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"14803:8:40","nodeType":"FunctionDefinition","parameters":{"id":6166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6159,"mutability":"mutable","name":"to","nameLocation":"14820:2:40","nodeType":"VariableDeclaration","scope":6222,"src":"14812:10:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6158,"name":"address","nodeType":"ElementaryTypeName","src":"14812:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6161,"mutability":"mutable","name":"tokenId","nameLocation":"14832:7:40","nodeType":"VariableDeclaration","scope":6222,"src":"14824:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6160,"name":"uint256","nodeType":"ElementaryTypeName","src":"14824:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6163,"mutability":"mutable","name":"auth","nameLocation":"14849:4:40","nodeType":"VariableDeclaration","scope":6222,"src":"14841:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6162,"name":"address","nodeType":"ElementaryTypeName","src":"14841:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6165,"mutability":"mutable","name":"emitEvent","nameLocation":"14860:9:40","nodeType":"VariableDeclaration","scope":6222,"src":"14855:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6164,"name":"bool","nodeType":"ElementaryTypeName","src":"14855:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14811:59:40"},"returnParameters":{"id":6167,"nodeType":"ParameterList","parameters":[],"src":"14888:0:40"},"scope":6289,"src":"14794:662:40","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6258,"nodeType":"Block","src":"15758:219:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6232,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6227,"src":"15772:8:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15792:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6234,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15784:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6233,"name":"address","nodeType":"ElementaryTypeName","src":"15784:7:40","typeDescriptions":{}}},"id":6236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15784:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15772:22:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6243,"nodeType":"IfStatement","src":"15768:91:40","trueBody":{"id":6242,"nodeType":"Block","src":"15796:63:40","statements":[{"errorCall":{"arguments":[{"id":6239,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6227,"src":"15839:8:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6238,"name":"ERC721InvalidOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4201,"src":"15817:21:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":6240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15817:31:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6241,"nodeType":"RevertStatement","src":"15810:38:40"}]}},{"expression":{"id":6250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":6244,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5385,"src":"15868:18:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":6247,"indexExpression":{"id":6245,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6225,"src":"15887:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15868:25:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":6248,"indexExpression":{"id":6246,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6227,"src":"15894:8:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15868:35:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6249,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6229,"src":"15906:8:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15868:46:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6251,"nodeType":"ExpressionStatement","src":"15868:46:40"},{"eventCall":{"arguments":[{"id":6253,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6225,"src":"15944:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6254,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6227,"src":"15951:8:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6255,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6229,"src":"15961:8:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":6252,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6323,"src":"15929:14:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":6256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15929:41:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6257,"nodeType":"EmitStatement","src":"15924:46:40"}]},"documentation":{"id":6223,"nodeType":"StructuredDocumentation","src":"15462:198:40","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event."},"id":6259,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"15674:18:40","nodeType":"FunctionDefinition","parameters":{"id":6230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6225,"mutability":"mutable","name":"owner","nameLocation":"15701:5:40","nodeType":"VariableDeclaration","scope":6259,"src":"15693:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6224,"name":"address","nodeType":"ElementaryTypeName","src":"15693:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6227,"mutability":"mutable","name":"operator","nameLocation":"15716:8:40","nodeType":"VariableDeclaration","scope":6259,"src":"15708:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6226,"name":"address","nodeType":"ElementaryTypeName","src":"15708:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6229,"mutability":"mutable","name":"approved","nameLocation":"15731:8:40","nodeType":"VariableDeclaration","scope":6259,"src":"15726:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6228,"name":"bool","nodeType":"ElementaryTypeName","src":"15726:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15692:48:40"},"returnParameters":{"id":6231,"nodeType":"ParameterList","parameters":[],"src":"15758:0:40"},"scope":6289,"src":"15665:312:40","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":6287,"nodeType":"Block","src":"16284:169:40","statements":[{"assignments":[6268],"declarations":[{"constant":false,"id":6268,"mutability":"mutable","name":"owner","nameLocation":"16302:5:40","nodeType":"VariableDeclaration","scope":6287,"src":"16294:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6267,"name":"address","nodeType":"ElementaryTypeName","src":"16294:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":6272,"initialValue":{"arguments":[{"id":6270,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6262,"src":"16319:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6269,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5710,"src":"16310:8:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":6271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16310:17:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16294:33:40"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6273,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6268,"src":"16341:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16358:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16350:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6274,"name":"address","nodeType":"ElementaryTypeName","src":"16350:7:40","typeDescriptions":{}}},"id":6277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16350:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16341:19:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6284,"nodeType":"IfStatement","src":"16337:88:40","trueBody":{"id":6283,"nodeType":"Block","src":"16362:63:40","statements":[{"errorCall":{"arguments":[{"id":6280,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6262,"src":"16406:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6279,"name":"ERC721NonexistentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4165,"src":"16383:22:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":6281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16383:31:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6282,"nodeType":"RevertStatement","src":"16376:38:40"}]}},{"expression":{"id":6285,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6268,"src":"16441:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6266,"id":6286,"nodeType":"Return","src":"16434:12:40"}]},"documentation":{"id":6260,"nodeType":"StructuredDocumentation","src":"15983:224:40","text":" @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}."},"id":6288,"implemented":true,"kind":"function","modifiers":[],"name":"_requireOwned","nameLocation":"16221:13:40","nodeType":"FunctionDefinition","parameters":{"id":6263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6262,"mutability":"mutable","name":"tokenId","nameLocation":"16243:7:40","nodeType":"VariableDeclaration","scope":6288,"src":"16235:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6261,"name":"uint256","nodeType":"ElementaryTypeName","src":"16235:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16234:17:40"},"returnParameters":{"id":6266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6265,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6288,"src":"16275:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6264,"name":"address","nodeType":"ElementaryTypeName","src":"16275:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"16274:9:40"},"scope":6289,"src":"16212:241:40","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":6290,"src":"775:15680:40","usedErrors":[4160,4165,4174,4179,4184,4191,4196,4201],"usedEvents":[6305,6314,6323]}],"src":"107:16349:40"},"id":40},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[8631],"IERC721":[6406]},"id":6407,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6291,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:41"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":6293,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6407,"sourceUnit":8632,"src":"134:62:41","symbolAliases":[{"foreign":{"id":6292,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8631,"src":"142:7:41","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6295,"name":"IERC165","nameLocations":["288:7:41"],"nodeType":"IdentifierPath","referencedDeclaration":8631,"src":"288:7:41"},"id":6296,"nodeType":"InheritanceSpecifier","src":"288:7:41"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":6294,"nodeType":"StructuredDocumentation","src":"198:68:41","text":" @dev Required interface of an ERC-721 compliant contract."},"fullyImplemented":false,"id":6406,"linearizedBaseContracts":[6406,8631],"name":"IERC721","nameLocation":"277:7:41","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":6297,"nodeType":"StructuredDocumentation","src":"302:88:41","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":6305,"name":"Transfer","nameLocation":"401:8:41","nodeType":"EventDefinition","parameters":{"id":6304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6299,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"426:4:41","nodeType":"VariableDeclaration","scope":6305,"src":"410:20:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6298,"name":"address","nodeType":"ElementaryTypeName","src":"410:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6301,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"448:2:41","nodeType":"VariableDeclaration","scope":6305,"src":"432:18:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6300,"name":"address","nodeType":"ElementaryTypeName","src":"432:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6303,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"468:7:41","nodeType":"VariableDeclaration","scope":6305,"src":"452:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6302,"name":"uint256","nodeType":"ElementaryTypeName","src":"452:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"409:67:41"},"src":"395:82:41"},{"anonymous":false,"documentation":{"id":6306,"nodeType":"StructuredDocumentation","src":"483:94:41","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":6314,"name":"Approval","nameLocation":"588:8:41","nodeType":"EventDefinition","parameters":{"id":6313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6308,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"613:5:41","nodeType":"VariableDeclaration","scope":6314,"src":"597:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6307,"name":"address","nodeType":"ElementaryTypeName","src":"597:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6310,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"636:8:41","nodeType":"VariableDeclaration","scope":6314,"src":"620:24:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6309,"name":"address","nodeType":"ElementaryTypeName","src":"620:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6312,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"662:7:41","nodeType":"VariableDeclaration","scope":6314,"src":"646:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6311,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"596:74:41"},"src":"582:89:41"},{"anonymous":false,"documentation":{"id":6315,"nodeType":"StructuredDocumentation","src":"677:117:41","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":6323,"name":"ApprovalForAll","nameLocation":"805:14:41","nodeType":"EventDefinition","parameters":{"id":6322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6317,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"836:5:41","nodeType":"VariableDeclaration","scope":6323,"src":"820:21:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6316,"name":"address","nodeType":"ElementaryTypeName","src":"820:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6319,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"859:8:41","nodeType":"VariableDeclaration","scope":6323,"src":"843:24:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6318,"name":"address","nodeType":"ElementaryTypeName","src":"843:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6321,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"874:8:41","nodeType":"VariableDeclaration","scope":6323,"src":"869:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6320,"name":"bool","nodeType":"ElementaryTypeName","src":"869:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"819:64:41"},"src":"799:85:41"},{"documentation":{"id":6324,"nodeType":"StructuredDocumentation","src":"890:76:41","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":6331,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"980:9:41","nodeType":"FunctionDefinition","parameters":{"id":6327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6326,"mutability":"mutable","name":"owner","nameLocation":"998:5:41","nodeType":"VariableDeclaration","scope":6331,"src":"990:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6325,"name":"address","nodeType":"ElementaryTypeName","src":"990:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"989:15:41"},"returnParameters":{"id":6330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6329,"mutability":"mutable","name":"balance","nameLocation":"1036:7:41","nodeType":"VariableDeclaration","scope":6331,"src":"1028:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6328,"name":"uint256","nodeType":"ElementaryTypeName","src":"1028:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1027:17:41"},"scope":6406,"src":"971:74:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6332,"nodeType":"StructuredDocumentation","src":"1051:131:41","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":6339,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1196:7:41","nodeType":"FunctionDefinition","parameters":{"id":6335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6334,"mutability":"mutable","name":"tokenId","nameLocation":"1212:7:41","nodeType":"VariableDeclaration","scope":6339,"src":"1204:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6333,"name":"uint256","nodeType":"ElementaryTypeName","src":"1204:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1203:17:41"},"returnParameters":{"id":6338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6337,"mutability":"mutable","name":"owner","nameLocation":"1252:5:41","nodeType":"VariableDeclaration","scope":6339,"src":"1244:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6336,"name":"address","nodeType":"ElementaryTypeName","src":"1244:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1243:15:41"},"scope":6406,"src":"1187:72:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6340,"nodeType":"StructuredDocumentation","src":"1265:565:41","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n   a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":6351,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1844:16:41","nodeType":"FunctionDefinition","parameters":{"id":6349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6342,"mutability":"mutable","name":"from","nameLocation":"1869:4:41","nodeType":"VariableDeclaration","scope":6351,"src":"1861:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6341,"name":"address","nodeType":"ElementaryTypeName","src":"1861:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6344,"mutability":"mutable","name":"to","nameLocation":"1883:2:41","nodeType":"VariableDeclaration","scope":6351,"src":"1875:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6343,"name":"address","nodeType":"ElementaryTypeName","src":"1875:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6346,"mutability":"mutable","name":"tokenId","nameLocation":"1895:7:41","nodeType":"VariableDeclaration","scope":6351,"src":"1887:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6345,"name":"uint256","nodeType":"ElementaryTypeName","src":"1887:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6348,"mutability":"mutable","name":"data","nameLocation":"1919:4:41","nodeType":"VariableDeclaration","scope":6351,"src":"1904:19:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6347,"name":"bytes","nodeType":"ElementaryTypeName","src":"1904:5:41","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1860:64:41"},"returnParameters":{"id":6350,"nodeType":"ParameterList","parameters":[],"src":"1933:0:41"},"scope":6406,"src":"1835:99:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6352,"nodeType":"StructuredDocumentation","src":"1940:706:41","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC-721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n   {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n   a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":6361,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2660:16:41","nodeType":"FunctionDefinition","parameters":{"id":6359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6354,"mutability":"mutable","name":"from","nameLocation":"2685:4:41","nodeType":"VariableDeclaration","scope":6361,"src":"2677:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6353,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6356,"mutability":"mutable","name":"to","nameLocation":"2699:2:41","nodeType":"VariableDeclaration","scope":6361,"src":"2691:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6355,"name":"address","nodeType":"ElementaryTypeName","src":"2691:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6358,"mutability":"mutable","name":"tokenId","nameLocation":"2711:7:41","nodeType":"VariableDeclaration","scope":6361,"src":"2703:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6357,"name":"uint256","nodeType":"ElementaryTypeName","src":"2703:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:41"},"returnParameters":{"id":6360,"nodeType":"ParameterList","parameters":[],"src":"2728:0:41"},"scope":6406,"src":"2651:78:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6362,"nodeType":"StructuredDocumentation","src":"2735:733:41","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":6371,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3482:12:41","nodeType":"FunctionDefinition","parameters":{"id":6369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6364,"mutability":"mutable","name":"from","nameLocation":"3503:4:41","nodeType":"VariableDeclaration","scope":6371,"src":"3495:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6363,"name":"address","nodeType":"ElementaryTypeName","src":"3495:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6366,"mutability":"mutable","name":"to","nameLocation":"3517:2:41","nodeType":"VariableDeclaration","scope":6371,"src":"3509:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6365,"name":"address","nodeType":"ElementaryTypeName","src":"3509:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6368,"mutability":"mutable","name":"tokenId","nameLocation":"3529:7:41","nodeType":"VariableDeclaration","scope":6371,"src":"3521:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6367,"name":"uint256","nodeType":"ElementaryTypeName","src":"3521:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3494:43:41"},"returnParameters":{"id":6370,"nodeType":"ParameterList","parameters":[],"src":"3546:0:41"},"scope":6406,"src":"3473:74:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6372,"nodeType":"StructuredDocumentation","src":"3553:452:41","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":6379,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4019:7:41","nodeType":"FunctionDefinition","parameters":{"id":6377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6374,"mutability":"mutable","name":"to","nameLocation":"4035:2:41","nodeType":"VariableDeclaration","scope":6379,"src":"4027:10:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6373,"name":"address","nodeType":"ElementaryTypeName","src":"4027:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6376,"mutability":"mutable","name":"tokenId","nameLocation":"4047:7:41","nodeType":"VariableDeclaration","scope":6379,"src":"4039:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6375,"name":"uint256","nodeType":"ElementaryTypeName","src":"4039:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4026:29:41"},"returnParameters":{"id":6378,"nodeType":"ParameterList","parameters":[],"src":"4064:0:41"},"scope":6406,"src":"4010:55:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6380,"nodeType":"StructuredDocumentation","src":"4071:315:41","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":6387,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4400:17:41","nodeType":"FunctionDefinition","parameters":{"id":6385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6382,"mutability":"mutable","name":"operator","nameLocation":"4426:8:41","nodeType":"VariableDeclaration","scope":6387,"src":"4418:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6381,"name":"address","nodeType":"ElementaryTypeName","src":"4418:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6384,"mutability":"mutable","name":"approved","nameLocation":"4441:8:41","nodeType":"VariableDeclaration","scope":6387,"src":"4436:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6383,"name":"bool","nodeType":"ElementaryTypeName","src":"4436:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4417:33:41"},"returnParameters":{"id":6386,"nodeType":"ParameterList","parameters":[],"src":"4459:0:41"},"scope":6406,"src":"4391:69:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6388,"nodeType":"StructuredDocumentation","src":"4466:139:41","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":6395,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4619:11:41","nodeType":"FunctionDefinition","parameters":{"id":6391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6390,"mutability":"mutable","name":"tokenId","nameLocation":"4639:7:41","nodeType":"VariableDeclaration","scope":6395,"src":"4631:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6389,"name":"uint256","nodeType":"ElementaryTypeName","src":"4631:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4630:17:41"},"returnParameters":{"id":6394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6393,"mutability":"mutable","name":"operator","nameLocation":"4679:8:41","nodeType":"VariableDeclaration","scope":6395,"src":"4671:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6392,"name":"address","nodeType":"ElementaryTypeName","src":"4671:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4670:18:41"},"scope":6406,"src":"4610:79:41","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6396,"nodeType":"StructuredDocumentation","src":"4695:138:41","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":6405,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4847:16:41","nodeType":"FunctionDefinition","parameters":{"id":6401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6398,"mutability":"mutable","name":"owner","nameLocation":"4872:5:41","nodeType":"VariableDeclaration","scope":6405,"src":"4864:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6397,"name":"address","nodeType":"ElementaryTypeName","src":"4864:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6400,"mutability":"mutable","name":"operator","nameLocation":"4887:8:41","nodeType":"VariableDeclaration","scope":6405,"src":"4879:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6399,"name":"address","nodeType":"ElementaryTypeName","src":"4879:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4863:33:41"},"returnParameters":{"id":6404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6403,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6405,"src":"4920:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6402,"name":"bool","nodeType":"ElementaryTypeName","src":"4920:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4919:6:41"},"scope":6406,"src":"4838:88:41","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6407,"src":"267:4661:41","usedErrors":[],"usedEvents":[6305,6314,6323]}],"src":"108:4821:41"},"id":41},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[6424]},"id":6425,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6408,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"116:24:42"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":6409,"nodeType":"StructuredDocumentation","src":"142:154:42","text":" @title ERC-721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC-721 asset contracts."},"fullyImplemented":false,"id":6424,"linearizedBaseContracts":[6424],"name":"IERC721Receiver","nameLocation":"307:15:42","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6410,"nodeType":"StructuredDocumentation","src":"329:500:42","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":6423,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"843:16:42","nodeType":"FunctionDefinition","parameters":{"id":6419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6412,"mutability":"mutable","name":"operator","nameLocation":"877:8:42","nodeType":"VariableDeclaration","scope":6423,"src":"869:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6411,"name":"address","nodeType":"ElementaryTypeName","src":"869:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6414,"mutability":"mutable","name":"from","nameLocation":"903:4:42","nodeType":"VariableDeclaration","scope":6423,"src":"895:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6413,"name":"address","nodeType":"ElementaryTypeName","src":"895:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6416,"mutability":"mutable","name":"tokenId","nameLocation":"925:7:42","nodeType":"VariableDeclaration","scope":6423,"src":"917:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6415,"name":"uint256","nodeType":"ElementaryTypeName","src":"917:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6418,"mutability":"mutable","name":"data","nameLocation":"957:4:42","nodeType":"VariableDeclaration","scope":6423,"src":"942:19:42","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6417,"name":"bytes","nodeType":"ElementaryTypeName","src":"942:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"859:108:42"},"returnParameters":{"id":6422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6421,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6423,"src":"986:6:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6420,"name":"bytes4","nodeType":"ElementaryTypeName","src":"986:6:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"985:8:42"},"scope":6424,"src":"834:160:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":6425,"src":"297:699:42","usedErrors":[],"usedEvents":[]}],"src":"116:881:42"},"id":42},"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol","exportedSymbols":{"ERC721":[6289],"ERC721URIStorage":[6550],"IERC165":[8631],"IERC4906":[4108],"Strings":[8139]},"id":6551,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6426,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"128:24:43"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","file":"../ERC721.sol","id":6428,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6551,"sourceUnit":6290,"src":"154:37:43","symbolAliases":[{"foreign":{"id":6427,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6289,"src":"162:6:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../../../utils/Strings.sol","id":6430,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6551,"sourceUnit":8140,"src":"192:51:43","symbolAliases":[{"foreign":{"id":6429,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8139,"src":"200:7:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC4906.sol","file":"../../../interfaces/IERC4906.sol","id":6432,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6551,"sourceUnit":4109,"src":"244:58:43","symbolAliases":[{"foreign":{"id":6431,"name":"IERC4906","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4108,"src":"252:8:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC165.sol","file":"../../../interfaces/IERC165.sol","id":6434,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6551,"sourceUnit":4081,"src":"303:56:43","symbolAliases":[{"foreign":{"id":6433,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8631,"src":"311:7:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":6436,"name":"IERC4906","nameLocations":["470:8:43"],"nodeType":"IdentifierPath","referencedDeclaration":4108,"src":"470:8:43"},"id":6437,"nodeType":"InheritanceSpecifier","src":"470:8:43"},{"baseName":{"id":6438,"name":"ERC721","nameLocations":["480:6:43"],"nodeType":"IdentifierPath","referencedDeclaration":6289,"src":"480:6:43"},"id":6439,"nodeType":"InheritanceSpecifier","src":"480:6:43"}],"canonicalName":"ERC721URIStorage","contractDependencies":[],"contractKind":"contract","documentation":{"id":6435,"nodeType":"StructuredDocumentation","src":"361:70:43","text":" @dev ERC-721 token with storage based token URI management."},"fullyImplemented":true,"id":6550,"linearizedBaseContracts":[6550,6289,4202,6578,4108,6406,8619,8631,6685],"name":"ERC721URIStorage","nameLocation":"450:16:43","nodeType":"ContractDefinition","nodes":[{"global":false,"id":6442,"libraryName":{"id":6440,"name":"Strings","nameLocations":["499:7:43"],"nodeType":"IdentifierPath","referencedDeclaration":8139,"src":"499:7:43"},"nodeType":"UsingForDirective","src":"493:26:43","typeName":{"id":6441,"name":"uint256","nodeType":"ElementaryTypeName","src":"511:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":6448,"mutability":"constant","name":"ERC4906_INTERFACE_ID","nameLocation":"731:20:43","nodeType":"VariableDeclaration","scope":6550,"src":"707:65:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6443,"name":"bytes4","nodeType":"ElementaryTypeName","src":"707:6:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"arguments":[{"hexValue":"30783439303634393036","id":6446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"761:10:43","typeDescriptions":{"typeIdentifier":"t_rational_1225148678_by_1","typeString":"int_const 1225148678"},"value":"0x49064906"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1225148678_by_1","typeString":"int_const 1225148678"}],"id":6445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"754:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":6444,"name":"bytes4","nodeType":"ElementaryTypeName","src":"754:6:43","typeDescriptions":{}}},"id":6447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"754:18:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"private"},{"constant":false,"id":6452,"mutability":"mutable","name":"_tokenURIs","nameLocation":"861:10:43","nodeType":"VariableDeclaration","scope":6550,"src":"818:53:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string)"},"typeName":{"id":6451,"keyName":"tokenId","keyNameLocation":"834:7:43","keyType":{"id":6449,"name":"uint256","nodeType":"ElementaryTypeName","src":"826:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"818:34:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":6450,"name":"string","nodeType":"ElementaryTypeName","src":"845:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"visibility":"private"},{"baseFunctions":[5433,8630],"body":{"id":6472,"nodeType":"Block","src":"1046:99:43","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6463,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6455,"src":"1063:11:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6464,"name":"ERC4906_INTERFACE_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6448,"src":"1078:20:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1063:35:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":6468,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6455,"src":"1126:11:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":6466,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1102:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721URIStorage_$6550_$","typeString":"type(contract super ERC721URIStorage)"}},"id":6467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1108:17:43","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":5433,"src":"1102:23:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":6469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1102:36:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1063:75:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6462,"id":6471,"nodeType":"Return","src":"1056:82:43"}]},"documentation":{"id":6453,"nodeType":"StructuredDocumentation","src":"878:55:43","text":" @dev See {IERC165-supportsInterface}"},"functionSelector":"01ffc9a7","id":6473,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"947:17:43","nodeType":"FunctionDefinition","overrides":{"id":6459,"nodeType":"OverrideSpecifier","overrides":[{"id":6457,"name":"ERC721","nameLocations":["1014:6:43"],"nodeType":"IdentifierPath","referencedDeclaration":6289,"src":"1014:6:43"},{"id":6458,"name":"IERC165","nameLocations":["1022:7:43"],"nodeType":"IdentifierPath","referencedDeclaration":8631,"src":"1022:7:43"}],"src":"1005:25:43"},"parameters":{"id":6456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6455,"mutability":"mutable","name":"interfaceId","nameLocation":"972:11:43","nodeType":"VariableDeclaration","scope":6473,"src":"965:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6454,"name":"bytes4","nodeType":"ElementaryTypeName","src":"965:6:43","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"964:20:43"},"returnParameters":{"id":6462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6461,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6473,"src":"1040:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6460,"name":"bool","nodeType":"ElementaryTypeName","src":"1040:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1039:6:43"},"scope":6550,"src":"938:207:43","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[5528],"body":{"id":6529,"nodeType":"Block","src":"1299:505:43","statements":[{"expression":{"arguments":[{"id":6483,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6476,"src":"1323:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6482,"name":"_requireOwned","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6288,"src":"1309:13:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":6484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1309:22:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6485,"nodeType":"ExpressionStatement","src":"1309:22:43"},{"assignments":[6487],"declarations":[{"constant":false,"id":6487,"mutability":"mutable","name":"_tokenURI","nameLocation":"1356:9:43","nodeType":"VariableDeclaration","scope":6529,"src":"1342:23:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6486,"name":"string","nodeType":"ElementaryTypeName","src":"1342:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":6491,"initialValue":{"baseExpression":{"id":6488,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6452,"src":"1368:10:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":6490,"indexExpression":{"id":6489,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6476,"src":"1379:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1368:19:43","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"VariableDeclarationStatement","src":"1342:45:43"},{"assignments":[6493],"declarations":[{"constant":false,"id":6493,"mutability":"mutable","name":"base","nameLocation":"1411:4:43","nodeType":"VariableDeclaration","scope":6529,"src":"1397:18:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6492,"name":"string","nodeType":"ElementaryTypeName","src":"1397:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":6496,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":6494,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5537,"src":"1418:8:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":6495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1418:10:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"1397:31:43"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":6499,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6493,"src":"1507:4:43","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1501:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":6497,"name":"bytes","nodeType":"ElementaryTypeName","src":"1501:5:43","typeDescriptions":{}}},"id":6500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1501:11:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1513:6:43","memberName":"length","nodeType":"MemberAccess","src":"1501:18:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1523:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1501:23:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6507,"nodeType":"IfStatement","src":"1497:70:43","trueBody":{"id":6506,"nodeType":"Block","src":"1526:41:43","statements":[{"expression":{"id":6504,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6487,"src":"1547:9:43","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":6481,"id":6505,"nodeType":"Return","src":"1540:16:43"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":6510,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6487,"src":"1672:9:43","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":6509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1666:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":6508,"name":"bytes","nodeType":"ElementaryTypeName","src":"1666:5:43","typeDescriptions":{}}},"id":6511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1666:16:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1683:6:43","memberName":"length","nodeType":"MemberAccess","src":"1666:23:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1692:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1666:27:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6523,"nodeType":"IfStatement","src":"1662:95:43","trueBody":{"id":6522,"nodeType":"Block","src":"1695:62:43","statements":[{"expression":{"arguments":[{"id":6518,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6493,"src":"1730:4:43","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":6519,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6487,"src":"1736:9:43","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":6516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1716:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":6515,"name":"string","nodeType":"ElementaryTypeName","src":"1716:6:43","typeDescriptions":{}}},"id":6517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1723:6:43","memberName":"concat","nodeType":"MemberAccess","src":"1716:13:43","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":6520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1716:30:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":6481,"id":6521,"nodeType":"Return","src":"1709:37:43"}]}},{"expression":{"arguments":[{"id":6526,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6476,"src":"1789:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6524,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1774:5:43","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721URIStorage_$6550_$","typeString":"type(contract super ERC721URIStorage)"}},"id":6525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1780:8:43","memberName":"tokenURI","nodeType":"MemberAccess","referencedDeclaration":5528,"src":"1774:14:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) view returns (string memory)"}},"id":6527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1774:23:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":6481,"id":6528,"nodeType":"Return","src":"1767:30:43"}]},"documentation":{"id":6474,"nodeType":"StructuredDocumentation","src":"1151:55:43","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":6530,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"1220:8:43","nodeType":"FunctionDefinition","overrides":{"id":6478,"nodeType":"OverrideSpecifier","overrides":[],"src":"1266:8:43"},"parameters":{"id":6477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6476,"mutability":"mutable","name":"tokenId","nameLocation":"1237:7:43","nodeType":"VariableDeclaration","scope":6530,"src":"1229:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6475,"name":"uint256","nodeType":"ElementaryTypeName","src":"1229:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1228:17:43"},"returnParameters":{"id":6481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6480,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6530,"src":"1284:13:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6479,"name":"string","nodeType":"ElementaryTypeName","src":"1284:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1283:15:43"},"scope":6550,"src":"1211:593:43","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":6548,"nodeType":"Block","src":"2013:86:43","statements":[{"expression":{"id":6542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6538,"name":"_tokenURIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6452,"src":"2023:10:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_string_storage_$","typeString":"mapping(uint256 => string storage ref)"}},"id":6540,"indexExpression":{"id":6539,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6533,"src":"2034:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2023:19:43","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":6541,"name":"_tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6535,"src":"2045:9:43","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2023:31:43","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":6543,"nodeType":"ExpressionStatement","src":"2023:31:43"},{"eventCall":{"arguments":[{"id":6545,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6533,"src":"2084:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6544,"name":"MetadataUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4100,"src":"2069:14:43","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":6546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2069:23:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6547,"nodeType":"EmitStatement","src":"2064:28:43"}]},"documentation":{"id":6531,"nodeType":"StructuredDocumentation","src":"1810:117:43","text":" @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n Emits {IERC4906-MetadataUpdate}."},"id":6549,"implemented":true,"kind":"function","modifiers":[],"name":"_setTokenURI","nameLocation":"1941:12:43","nodeType":"FunctionDefinition","parameters":{"id":6536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6533,"mutability":"mutable","name":"tokenId","nameLocation":"1962:7:43","nodeType":"VariableDeclaration","scope":6549,"src":"1954:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6532,"name":"uint256","nodeType":"ElementaryTypeName","src":"1954:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6535,"mutability":"mutable","name":"_tokenURI","nameLocation":"1985:9:43","nodeType":"VariableDeclaration","scope":6549,"src":"1971:23:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6534,"name":"string","nodeType":"ElementaryTypeName","src":"1971:6:43","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1953:42:43"},"returnParameters":{"id":6537,"nodeType":"ParameterList","parameters":[],"src":"2013:0:43"},"scope":6550,"src":"1932:167:43","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":6551,"src":"432:1669:43","usedErrors":[4160,4165,4174,4179,4184,4191,4196,4201],"usedEvents":[4100,4107,6305,6314,6323]}],"src":"128:1974:43"},"id":43},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","exportedSymbols":{"IERC721":[6406],"IERC721Metadata":[6578]},"id":6579,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6552,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"127:24:44"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":6554,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6579,"sourceUnit":6407,"src":"153:39:44","symbolAliases":[{"foreign":{"id":6553,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6406,"src":"161:7:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6556,"name":"IERC721","nameLocations":["357:7:44"],"nodeType":"IdentifierPath","referencedDeclaration":6406,"src":"357:7:44"},"id":6557,"nodeType":"InheritanceSpecifier","src":"357:7:44"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":6555,"nodeType":"StructuredDocumentation","src":"194:133:44","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":6578,"linearizedBaseContracts":[6578,6406,8631],"name":"IERC721Metadata","nameLocation":"338:15:44","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6558,"nodeType":"StructuredDocumentation","src":"371:58:44","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":6563,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"443:4:44","nodeType":"FunctionDefinition","parameters":{"id":6559,"nodeType":"ParameterList","parameters":[],"src":"447:2:44"},"returnParameters":{"id":6562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6561,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6563,"src":"473:13:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6560,"name":"string","nodeType":"ElementaryTypeName","src":"473:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"472:15:44"},"scope":6578,"src":"434:54:44","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6564,"nodeType":"StructuredDocumentation","src":"494:60:44","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":6569,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"568:6:44","nodeType":"FunctionDefinition","parameters":{"id":6565,"nodeType":"ParameterList","parameters":[],"src":"574:2:44"},"returnParameters":{"id":6568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6567,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6569,"src":"600:13:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6566,"name":"string","nodeType":"ElementaryTypeName","src":"600:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"599:15:44"},"scope":6578,"src":"559:56:44","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6570,"nodeType":"StructuredDocumentation","src":"621:90:44","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":6577,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"725:8:44","nodeType":"FunctionDefinition","parameters":{"id":6573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6572,"mutability":"mutable","name":"tokenId","nameLocation":"742:7:44","nodeType":"VariableDeclaration","scope":6577,"src":"734:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6571,"name":"uint256","nodeType":"ElementaryTypeName","src":"734:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"733:17:44"},"returnParameters":{"id":6576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6575,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6577,"src":"774:13:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6574,"name":"string","nodeType":"ElementaryTypeName","src":"774:6:44","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"773:15:44"},"scope":6578,"src":"716:73:44","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6579,"src":"328:463:44","usedErrors":[],"usedEvents":[6305,6314,6323]}],"src":"127:665:44"},"id":44},"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol","exportedSymbols":{"ERC721Utils":[6655],"IERC721Errors":[4202],"IERC721Receiver":[6424]},"id":6656,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6580,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"118:24:45"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"../IERC721Receiver.sol","id":6582,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6656,"sourceUnit":6425,"src":"144:55:45","symbolAliases":[{"foreign":{"id":6581,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6424,"src":"152:15:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../../interfaces/draft-IERC6093.sol","id":6584,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6656,"sourceUnit":4250,"src":"200:69:45","symbolAliases":[{"foreign":{"id":6583,"name":"IERC721Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"208:13:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC721Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":6585,"nodeType":"StructuredDocumentation","src":"271:159:45","text":" @dev Library that provide common ERC-721 utility functions.\n See https://eips.ethereum.org/EIPS/eip-721[ERC-721].\n _Available since v5.1._"},"fullyImplemented":true,"id":6655,"linearizedBaseContracts":[6655],"name":"ERC721Utils","nameLocation":"439:11:45","nodeType":"ContractDefinition","nodes":[{"body":{"id":6653,"nodeType":"Block","src":"1159:758:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":6599,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6592,"src":"1173:2:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1176:4:45","memberName":"code","nodeType":"MemberAccess","src":"1173:7:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1181:6:45","memberName":"length","nodeType":"MemberAccess","src":"1173:14:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1190:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1173:18:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6652,"nodeType":"IfStatement","src":"1169:742:45","trueBody":{"id":6651,"nodeType":"Block","src":"1193:718:45","statements":[{"clauses":[{"block":{"id":6629,"nodeType":"Block","src":"1303:214:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":6620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6616,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6614,"src":"1325:6:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":6617,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6424,"src":"1335:15:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$6424_$","typeString":"type(contract IERC721Receiver)"}},"id":6618,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1351:16:45","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":6423,"src":"1335:32:45","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":6619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1368:8:45","memberName":"selector","nodeType":"MemberAccess","src":"1335:41:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1325:51:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6628,"nodeType":"IfStatement","src":"1321:182:45","trueBody":{"id":6627,"nodeType":"Block","src":"1378:125:45","statements":[{"errorCall":{"arguments":[{"id":6624,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6592,"src":"1481:2:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6621,"name":"IERC721Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"1445:13:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Errors_$4202_$","typeString":"type(contract IERC721Errors)"}},"id":6623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1459:21:45","memberName":"ERC721InvalidReceiver","nodeType":"MemberAccess","referencedDeclaration":4184,"src":"1445:35:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":6625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1445:39:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6626,"nodeType":"RevertStatement","src":"1438:46:45"}]}}]},"errorName":"","id":6630,"nodeType":"TryCatchClause","parameters":{"id":6615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6614,"mutability":"mutable","name":"retval","nameLocation":"1295:6:45","nodeType":"VariableDeclaration","scope":6630,"src":"1288:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":6613,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1288:6:45","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1287:15:45"},"src":"1279:238:45"},{"block":{"id":6648,"nodeType":"Block","src":"1546:355:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":6634,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6632,"src":"1568:6:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1575:6:45","memberName":"length","nodeType":"MemberAccess","src":"1568:13:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1585:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1568:18:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6646,"nodeType":"Block","src":"1736:151:45","statements":[{"AST":{"nativeSrc":"1783:86:45","nodeType":"YulBlock","src":"1783:86:45","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1820:2:45","nodeType":"YulLiteral","src":"1820:2:45","type":"","value":"32"},{"name":"reason","nativeSrc":"1824:6:45","nodeType":"YulIdentifier","src":"1824:6:45"}],"functionName":{"name":"add","nativeSrc":"1816:3:45","nodeType":"YulIdentifier","src":"1816:3:45"},"nativeSrc":"1816:15:45","nodeType":"YulFunctionCall","src":"1816:15:45"},{"arguments":[{"name":"reason","nativeSrc":"1839:6:45","nodeType":"YulIdentifier","src":"1839:6:45"}],"functionName":{"name":"mload","nativeSrc":"1833:5:45","nodeType":"YulIdentifier","src":"1833:5:45"},"nativeSrc":"1833:13:45","nodeType":"YulFunctionCall","src":"1833:13:45"}],"functionName":{"name":"revert","nativeSrc":"1809:6:45","nodeType":"YulIdentifier","src":"1809:6:45"},"nativeSrc":"1809:38:45","nodeType":"YulFunctionCall","src":"1809:38:45"},"nativeSrc":"1809:38:45","nodeType":"YulExpressionStatement","src":"1809:38:45"}]},"evmVersion":"paris","externalReferences":[{"declaration":6632,"isOffset":false,"isSlot":false,"src":"1824:6:45","valueSize":1},{"declaration":6632,"isOffset":false,"isSlot":false,"src":"1839:6:45","valueSize":1}],"flags":["memory-safe"],"id":6645,"nodeType":"InlineAssembly","src":"1758:111:45"}]},"id":6647,"nodeType":"IfStatement","src":"1564:323:45","trueBody":{"id":6644,"nodeType":"Block","src":"1588:142:45","statements":[{"errorCall":{"arguments":[{"id":6641,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6592,"src":"1708:2:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6638,"name":"IERC721Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"1672:13:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Errors_$4202_$","typeString":"type(contract IERC721Errors)"}},"id":6640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1686:21:45","memberName":"ERC721InvalidReceiver","nodeType":"MemberAccess","referencedDeclaration":4184,"src":"1672:35:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":6642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1672:39:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6643,"nodeType":"RevertStatement","src":"1665:46:45"}]}}]},"errorName":"","id":6649,"nodeType":"TryCatchClause","parameters":{"id":6633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6632,"mutability":"mutable","name":"reason","nameLocation":"1538:6:45","nodeType":"VariableDeclaration","scope":6649,"src":"1525:19:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6631,"name":"bytes","nodeType":"ElementaryTypeName","src":"1525:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1524:21:45"},"src":"1518:383:45"}],"externalCall":{"arguments":[{"id":6608,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6588,"src":"1248:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6609,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6590,"src":"1258:4:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6610,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6594,"src":"1264:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6611,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6596,"src":"1273:4:45","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":6605,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6592,"src":"1227:2:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6604,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6424,"src":"1211:15:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$6424_$","typeString":"type(contract IERC721Receiver)"}},"id":6606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1211:19:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$6424","typeString":"contract IERC721Receiver"}},"id":6607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1231:16:45","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":6423,"src":"1211:36:45","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (address,address,uint256,bytes memory) external returns (bytes4)"}},"id":6612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1211:67:45","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":6650,"nodeType":"TryStatement","src":"1207:694:45"}]}}]},"documentation":{"id":6586,"nodeType":"StructuredDocumentation","src":"457:531:45","text":" @dev Performs an acceptance check for the provided `operator` by calling {IERC721Receiver-onERC721Received}\n on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).\n The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).\n Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept\n the transfer."},"id":6654,"implemented":true,"kind":"function","modifiers":[],"name":"checkOnERC721Received","nameLocation":"1002:21:45","nodeType":"FunctionDefinition","parameters":{"id":6597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6588,"mutability":"mutable","name":"operator","nameLocation":"1041:8:45","nodeType":"VariableDeclaration","scope":6654,"src":"1033:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6587,"name":"address","nodeType":"ElementaryTypeName","src":"1033:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6590,"mutability":"mutable","name":"from","nameLocation":"1067:4:45","nodeType":"VariableDeclaration","scope":6654,"src":"1059:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6589,"name":"address","nodeType":"ElementaryTypeName","src":"1059:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6592,"mutability":"mutable","name":"to","nameLocation":"1089:2:45","nodeType":"VariableDeclaration","scope":6654,"src":"1081:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6591,"name":"address","nodeType":"ElementaryTypeName","src":"1081:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6594,"mutability":"mutable","name":"tokenId","nameLocation":"1109:7:45","nodeType":"VariableDeclaration","scope":6654,"src":"1101:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6593,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6596,"mutability":"mutable","name":"data","nameLocation":"1139:4:45","nodeType":"VariableDeclaration","scope":6654,"src":"1126:17:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6595,"name":"bytes","nodeType":"ElementaryTypeName","src":"1126:5:45","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1023:126:45"},"returnParameters":{"id":6598,"nodeType":"ParameterList","parameters":[],"src":"1159:0:45"},"scope":6655,"src":"993:924:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":6656,"src":"431:1488:45","usedErrors":[],"usedEvents":[]}],"src":"118:1802:45"},"id":45},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[6685]},"id":6686,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6657,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:46"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":6658,"nodeType":"StructuredDocumentation","src":"127:496:46","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":6685,"linearizedBaseContracts":[6685],"name":"Context","nameLocation":"642:7:46","nodeType":"ContractDefinition","nodes":[{"body":{"id":6666,"nodeType":"Block","src":"718:34:46","statements":[{"expression":{"expression":{"id":6663,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:46","memberName":"sender","nodeType":"MemberAccess","src":"735:10:46","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":6662,"id":6665,"nodeType":"Return","src":"728:17:46"}]},"id":6667,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:46","nodeType":"FunctionDefinition","parameters":{"id":6659,"nodeType":"ParameterList","parameters":[],"src":"675:2:46"},"returnParameters":{"id":6662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6661,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6667,"src":"709:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6660,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:46","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:46"},"scope":6685,"src":"656:96:46","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":6675,"nodeType":"Block","src":"825:32:46","statements":[{"expression":{"expression":{"id":6672,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:46","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":6673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:46","memberName":"data","nodeType":"MemberAccess","src":"842:8:46","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":6671,"id":6674,"nodeType":"Return","src":"835:15:46"}]},"id":6676,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:46","nodeType":"FunctionDefinition","parameters":{"id":6668,"nodeType":"ParameterList","parameters":[],"src":"775:2:46"},"returnParameters":{"id":6671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6670,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6676,"src":"809:14:46","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6669,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:46"},"scope":6685,"src":"758:99:46","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":6683,"nodeType":"Block","src":"935:25:46","statements":[{"expression":{"hexValue":"30","id":6681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:46","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":6680,"id":6682,"nodeType":"Return","src":"945:8:46"}]},"id":6684,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:46","nodeType":"FunctionDefinition","parameters":{"id":6677,"nodeType":"ParameterList","parameters":[],"src":"892:2:46"},"returnParameters":{"id":6680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6679,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6684,"src":"926:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6678,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:46"},"scope":6685,"src":"863:97:46","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":6686,"src":"624:338:46","usedErrors":[],"usedEvents":[]}],"src":"101:862:46"},"id":46},"@openzeppelin/contracts/utils/Panic.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","exportedSymbols":{"Panic":[6737]},"id":6738,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6687,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:47"},{"abstract":false,"baseContracts":[],"canonicalName":"Panic","contractDependencies":[],"contractKind":"library","documentation":{"id":6688,"nodeType":"StructuredDocumentation","src":"125:489:47","text":" @dev Helper library for emitting standardized panic codes.\n ```solidity\n contract Example {\n      using Panic for uint256;\n      // Use any of the declared internal constants\n      function foo() { Panic.GENERIC.panic(); }\n      // Alternatively\n      function foo() { Panic.panic(Panic.GENERIC); }\n }\n ```\n Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n _Available since v5.1._"},"fullyImplemented":true,"id":6737,"linearizedBaseContracts":[6737],"name":"Panic","nameLocation":"665:5:47","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":6689,"nodeType":"StructuredDocumentation","src":"677:36:47","text":"@dev generic / unspecified error"},"id":6692,"mutability":"constant","name":"GENERIC","nameLocation":"744:7:47","nodeType":"VariableDeclaration","scope":6737,"src":"718:40:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6690,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":6691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"754:4:47","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"documentation":{"id":6693,"nodeType":"StructuredDocumentation","src":"764:37:47","text":"@dev used by the assert() builtin"},"id":6696,"mutability":"constant","name":"ASSERT","nameLocation":"832:6:47","nodeType":"VariableDeclaration","scope":6737,"src":"806:39:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6694,"name":"uint256","nodeType":"ElementaryTypeName","src":"806:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783031","id":6695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"841:4:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"internal"},{"constant":true,"documentation":{"id":6697,"nodeType":"StructuredDocumentation","src":"851:41:47","text":"@dev arithmetic underflow or overflow"},"id":6700,"mutability":"constant","name":"UNDER_OVERFLOW","nameLocation":"923:14:47","nodeType":"VariableDeclaration","scope":6737,"src":"897:47:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6698,"name":"uint256","nodeType":"ElementaryTypeName","src":"897:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783131","id":6699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"940:4:47","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"0x11"},"visibility":"internal"},{"constant":true,"documentation":{"id":6701,"nodeType":"StructuredDocumentation","src":"950:35:47","text":"@dev division or modulo by zero"},"id":6704,"mutability":"constant","name":"DIVISION_BY_ZERO","nameLocation":"1016:16:47","nodeType":"VariableDeclaration","scope":6737,"src":"990:49:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6702,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783132","id":6703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1035:4:47","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"0x12"},"visibility":"internal"},{"constant":true,"documentation":{"id":6705,"nodeType":"StructuredDocumentation","src":"1045:30:47","text":"@dev enum conversion error"},"id":6708,"mutability":"constant","name":"ENUM_CONVERSION_ERROR","nameLocation":"1106:21:47","nodeType":"VariableDeclaration","scope":6737,"src":"1080:54:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6706,"name":"uint256","nodeType":"ElementaryTypeName","src":"1080:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783231","id":6707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1130:4:47","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"value":"0x21"},"visibility":"internal"},{"constant":true,"documentation":{"id":6709,"nodeType":"StructuredDocumentation","src":"1140:36:47","text":"@dev invalid encoding in storage"},"id":6712,"mutability":"constant","name":"STORAGE_ENCODING_ERROR","nameLocation":"1207:22:47","nodeType":"VariableDeclaration","scope":6737,"src":"1181:55:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6710,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783232","id":6711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:4:47","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"visibility":"internal"},{"constant":true,"documentation":{"id":6713,"nodeType":"StructuredDocumentation","src":"1242:24:47","text":"@dev empty array pop"},"id":6716,"mutability":"constant","name":"EMPTY_ARRAY_POP","nameLocation":"1297:15:47","nodeType":"VariableDeclaration","scope":6737,"src":"1271:48:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6714,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783331","id":6715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:4:47","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"0x31"},"visibility":"internal"},{"constant":true,"documentation":{"id":6717,"nodeType":"StructuredDocumentation","src":"1325:35:47","text":"@dev array out of bounds access"},"id":6720,"mutability":"constant","name":"ARRAY_OUT_OF_BOUNDS","nameLocation":"1391:19:47","nodeType":"VariableDeclaration","scope":6737,"src":"1365:52:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6718,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783332","id":6719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1413:4:47","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"0x32"},"visibility":"internal"},{"constant":true,"documentation":{"id":6721,"nodeType":"StructuredDocumentation","src":"1423:65:47","text":"@dev resource error (too large allocation or too large array)"},"id":6724,"mutability":"constant","name":"RESOURCE_ERROR","nameLocation":"1519:14:47","nodeType":"VariableDeclaration","scope":6737,"src":"1493:47:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6722,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783431","id":6723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1536:4:47","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"0x41"},"visibility":"internal"},{"constant":true,"documentation":{"id":6725,"nodeType":"StructuredDocumentation","src":"1546:42:47","text":"@dev calling invalid internal function"},"id":6728,"mutability":"constant","name":"INVALID_INTERNAL_FUNCTION","nameLocation":"1619:25:47","nodeType":"VariableDeclaration","scope":6737,"src":"1593:58:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6726,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783531","id":6727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:4:47","typeDescriptions":{"typeIdentifier":"t_rational_81_by_1","typeString":"int_const 81"},"value":"0x51"},"visibility":"internal"},{"body":{"id":6735,"nodeType":"Block","src":"1819:151:47","statements":[{"AST":{"nativeSrc":"1854:110:47","nodeType":"YulBlock","src":"1854:110:47","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1875:4:47","nodeType":"YulLiteral","src":"1875:4:47","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1881:10:47","nodeType":"YulLiteral","src":"1881:10:47","type":"","value":"0x4e487b71"}],"functionName":{"name":"mstore","nativeSrc":"1868:6:47","nodeType":"YulIdentifier","src":"1868:6:47"},"nativeSrc":"1868:24:47","nodeType":"YulFunctionCall","src":"1868:24:47"},"nativeSrc":"1868:24:47","nodeType":"YulExpressionStatement","src":"1868:24:47"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1912:4:47","nodeType":"YulLiteral","src":"1912:4:47","type":"","value":"0x20"},{"name":"code","nativeSrc":"1918:4:47","nodeType":"YulIdentifier","src":"1918:4:47"}],"functionName":{"name":"mstore","nativeSrc":"1905:6:47","nodeType":"YulIdentifier","src":"1905:6:47"},"nativeSrc":"1905:18:47","nodeType":"YulFunctionCall","src":"1905:18:47"},"nativeSrc":"1905:18:47","nodeType":"YulExpressionStatement","src":"1905:18:47"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1943:4:47","nodeType":"YulLiteral","src":"1943:4:47","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"1949:4:47","nodeType":"YulLiteral","src":"1949:4:47","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1936:6:47","nodeType":"YulIdentifier","src":"1936:6:47"},"nativeSrc":"1936:18:47","nodeType":"YulFunctionCall","src":"1936:18:47"},"nativeSrc":"1936:18:47","nodeType":"YulExpressionStatement","src":"1936:18:47"}]},"evmVersion":"paris","externalReferences":[{"declaration":6731,"isOffset":false,"isSlot":false,"src":"1918:4:47","valueSize":1}],"flags":["memory-safe"],"id":6734,"nodeType":"InlineAssembly","src":"1829:135:47"}]},"documentation":{"id":6729,"nodeType":"StructuredDocumentation","src":"1658:113:47","text":"@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes."},"id":6736,"implemented":true,"kind":"function","modifiers":[],"name":"panic","nameLocation":"1785:5:47","nodeType":"FunctionDefinition","parameters":{"id":6732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6731,"mutability":"mutable","name":"code","nameLocation":"1799:4:47","nodeType":"VariableDeclaration","scope":6736,"src":"1791:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6730,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1790:14:47"},"returnParameters":{"id":6733,"nodeType":"ParameterList","parameters":[],"src":"1819:0:47"},"scope":6737,"src":"1776:194:47","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6738,"src":"657:1315:47","usedErrors":[],"usedEvents":[]}],"src":"99:1874:47"},"id":47},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[10252],"SafeCast":[12017],"SignedMath":[12161],"Strings":[8139]},"id":8140,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6739,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:48"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":6741,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8140,"sourceUnit":10253,"src":"127:37:48","symbolAliases":[{"foreign":{"id":6740,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"135:4:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./math/SafeCast.sol","id":6743,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8140,"sourceUnit":12018,"src":"165:45:48","symbolAliases":[{"foreign":{"id":6742,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"173:8:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":6745,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8140,"sourceUnit":12162,"src":"211:49:48","symbolAliases":[{"foreign":{"id":6744,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12161,"src":"219:10:48","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":6746,"nodeType":"StructuredDocumentation","src":"262:34:48","text":" @dev String operations."},"fullyImplemented":true,"id":8139,"linearizedBaseContracts":[8139],"name":"Strings","nameLocation":"305:7:48","nodeType":"ContractDefinition","nodes":[{"global":false,"id":6748,"libraryName":{"id":6747,"name":"SafeCast","nameLocations":["325:8:48"],"nodeType":"IdentifierPath","referencedDeclaration":12017,"src":"325:8:48"},"nodeType":"UsingForDirective","src":"319:21:48"},{"constant":true,"id":6751,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"371:10:48","nodeType":"VariableDeclaration","scope":8139,"src":"346:56:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":6749,"name":"bytes16","nodeType":"ElementaryTypeName","src":"346:7:48","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":6750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"384:18:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":6754,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"431:14:48","nodeType":"VariableDeclaration","scope":8139,"src":"408:42:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6752,"name":"uint8","nodeType":"ElementaryTypeName","src":"408:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":6753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"448:2:48","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"constant":true,"id":6790,"mutability":"constant","name":"SPECIAL_CHARS_LOOKUP","nameLocation":"481:20:48","nodeType":"VariableDeclaration","scope":8139,"src":"456:302:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6755,"name":"uint256","nodeType":"ElementaryTypeName","src":"456:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_4951760157141521116776380160_by_1","typeString":"int_const 4951760157141521116776380160"},"id":6789,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_17179883264_by_1","typeString":"int_const 17179883264"},"id":6784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_14080_by_1","typeString":"int_const 14080"},"id":6779,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_5888_by_1","typeString":"int_const 5888"},"id":6774,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_1792_by_1","typeString":"int_const 1792"},"id":6769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_768_by_1","typeString":"int_const 768"},"id":6764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":6758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"513:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783038","id":6757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"518:4:48","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"513:9:48","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":6759,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"512:11:48","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"id":6762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"552:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783039","id":6761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"557:4:48","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"0x09"},"src":"552:9:48","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"}}],"id":6763,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"551:11:48","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"}},"src":"512:50:48","typeDescriptions":{"typeIdentifier":"t_rational_768_by_1","typeString":"int_const 768"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"},"id":6767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"585:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783061","id":6766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"590:4:48","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"0x0a"},"src":"585:9:48","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"}}],"id":6768,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"584:11:48","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"}},"src":"512:83:48","typeDescriptions":{"typeIdentifier":"t_rational_1792_by_1","typeString":"int_const 1792"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"},"id":6772,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"622:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783063","id":6771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"627:4:48","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"622:9:48","typeDescriptions":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"}}],"id":6773,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"621:11:48","typeDescriptions":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"}},"src":"512:120:48","typeDescriptions":{"typeIdentifier":"t_rational_5888_by_1","typeString":"int_const 5888"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"},"id":6777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"661:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783064","id":6776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"666:4:48","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"0x0d"},"src":"661:9:48","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"}}],"id":6778,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"660:11:48","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"}},"src":"512:159:48","typeDescriptions":{"typeIdentifier":"t_rational_14080_by_1","typeString":"int_const 14080"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"},"id":6782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"706:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783232","id":6781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"711:4:48","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"src":"706:9:48","typeDescriptions":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"}}],"id":6783,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"705:11:48","typeDescriptions":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"}},"src":"512:204:48","typeDescriptions":{"typeIdentifier":"t_rational_17179883264_by_1","typeString":"int_const 17179883264"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"},"id":6787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"748:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783563","id":6786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"753:4:48","typeDescriptions":{"typeIdentifier":"t_rational_92_by_1","typeString":"int_const 92"},"value":"0x5c"},"src":"748:9:48","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"}}],"id":6788,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"747:11:48","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"}},"src":"512:246:48","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521116776380160_by_1","typeString":"int_const 4951760157141521116776380160"}},"visibility":"private"},{"documentation":{"id":6791,"nodeType":"StructuredDocumentation","src":"778:81:48","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","id":6797,"name":"StringsInsufficientHexLength","nameLocation":"870:28:48","nodeType":"ErrorDefinition","parameters":{"id":6796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6793,"mutability":"mutable","name":"value","nameLocation":"907:5:48","nodeType":"VariableDeclaration","scope":6797,"src":"899:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6792,"name":"uint256","nodeType":"ElementaryTypeName","src":"899:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6795,"mutability":"mutable","name":"length","nameLocation":"922:6:48","nodeType":"VariableDeclaration","scope":6797,"src":"914:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6794,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"898:31:48"},"src":"864:66:48"},{"documentation":{"id":6798,"nodeType":"StructuredDocumentation","src":"936:108:48","text":" @dev The string being parsed contains characters that are not in scope of the given base."},"errorSelector":"94e2737e","id":6800,"name":"StringsInvalidChar","nameLocation":"1055:18:48","nodeType":"ErrorDefinition","parameters":{"id":6799,"nodeType":"ParameterList","parameters":[],"src":"1073:2:48"},"src":"1049:27:48"},{"documentation":{"id":6801,"nodeType":"StructuredDocumentation","src":"1082:84:48","text":" @dev The string being parsed is not a properly formatted address."},"errorSelector":"1d15ae44","id":6803,"name":"StringsInvalidAddressFormat","nameLocation":"1177:27:48","nodeType":"ErrorDefinition","parameters":{"id":6802,"nodeType":"ParameterList","parameters":[],"src":"1204:2:48"},"src":"1171:36:48"},{"body":{"id":6850,"nodeType":"Block","src":"1379:561:48","statements":[{"id":6849,"nodeType":"UncheckedBlock","src":"1389:545:48","statements":[{"assignments":[6812],"declarations":[{"constant":false,"id":6812,"mutability":"mutable","name":"length","nameLocation":"1421:6:48","nodeType":"VariableDeclaration","scope":6849,"src":"1413:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6811,"name":"uint256","nodeType":"ElementaryTypeName","src":"1413:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6819,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6815,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6806,"src":"1441:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6813,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"1430:4:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$10252_$","typeString":"type(library Math)"}},"id":6814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1435:5:48","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":10084,"src":"1430:10:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":6816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1430:17:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1450:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1430:21:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1413:38:48"},{"assignments":[6821],"declarations":[{"constant":false,"id":6821,"mutability":"mutable","name":"buffer","nameLocation":"1479:6:48","nodeType":"VariableDeclaration","scope":6849,"src":"1465:20:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6820,"name":"string","nodeType":"ElementaryTypeName","src":"1465:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":6826,"initialValue":{"arguments":[{"id":6824,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"1499:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1488:10:48","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":6822,"name":"string","nodeType":"ElementaryTypeName","src":"1492:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":6825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1488:18:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"1465:41:48"},{"assignments":[6828],"declarations":[{"constant":false,"id":6828,"mutability":"mutable","name":"ptr","nameLocation":"1528:3:48","nodeType":"VariableDeclaration","scope":6849,"src":"1520:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6827,"name":"uint256","nodeType":"ElementaryTypeName","src":"1520:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6829,"nodeType":"VariableDeclarationStatement","src":"1520:11:48"},{"AST":{"nativeSrc":"1570:67:48","nodeType":"YulBlock","src":"1570:67:48","statements":[{"nativeSrc":"1588:35:48","nodeType":"YulAssignment","src":"1588:35:48","value":{"arguments":[{"name":"buffer","nativeSrc":"1599:6:48","nodeType":"YulIdentifier","src":"1599:6:48"},{"arguments":[{"kind":"number","nativeSrc":"1611:2:48","nodeType":"YulLiteral","src":"1611:2:48","type":"","value":"32"},{"name":"length","nativeSrc":"1615:6:48","nodeType":"YulIdentifier","src":"1615:6:48"}],"functionName":{"name":"add","nativeSrc":"1607:3:48","nodeType":"YulIdentifier","src":"1607:3:48"},"nativeSrc":"1607:15:48","nodeType":"YulFunctionCall","src":"1607:15:48"}],"functionName":{"name":"add","nativeSrc":"1595:3:48","nodeType":"YulIdentifier","src":"1595:3:48"},"nativeSrc":"1595:28:48","nodeType":"YulFunctionCall","src":"1595:28:48"},"variableNames":[{"name":"ptr","nativeSrc":"1588:3:48","nodeType":"YulIdentifier","src":"1588:3:48"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":6821,"isOffset":false,"isSlot":false,"src":"1599:6:48","valueSize":1},{"declaration":6812,"isOffset":false,"isSlot":false,"src":"1615:6:48","valueSize":1},{"declaration":6828,"isOffset":false,"isSlot":false,"src":"1588:3:48","valueSize":1}],"flags":["memory-safe"],"id":6830,"nodeType":"InlineAssembly","src":"1545:92:48"},{"body":{"id":6845,"nodeType":"Block","src":"1663:234:48","statements":[{"expression":{"id":6833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1681:5:48","subExpression":{"id":6832,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6828,"src":"1681:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6834,"nodeType":"ExpressionStatement","src":"1681:5:48"},{"AST":{"nativeSrc":"1729:86:48","nodeType":"YulBlock","src":"1729:86:48","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"1759:3:48","nodeType":"YulIdentifier","src":"1759:3:48"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1773:5:48","nodeType":"YulIdentifier","src":"1773:5:48"},{"kind":"number","nativeSrc":"1780:2:48","nodeType":"YulLiteral","src":"1780:2:48","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"1769:3:48","nodeType":"YulIdentifier","src":"1769:3:48"},"nativeSrc":"1769:14:48","nodeType":"YulFunctionCall","src":"1769:14:48"},{"name":"HEX_DIGITS","nativeSrc":"1785:10:48","nodeType":"YulIdentifier","src":"1785:10:48"}],"functionName":{"name":"byte","nativeSrc":"1764:4:48","nodeType":"YulIdentifier","src":"1764:4:48"},"nativeSrc":"1764:32:48","nodeType":"YulFunctionCall","src":"1764:32:48"}],"functionName":{"name":"mstore8","nativeSrc":"1751:7:48","nodeType":"YulIdentifier","src":"1751:7:48"},"nativeSrc":"1751:46:48","nodeType":"YulFunctionCall","src":"1751:46:48"},"nativeSrc":"1751:46:48","nodeType":"YulExpressionStatement","src":"1751:46:48"}]},"evmVersion":"paris","externalReferences":[{"declaration":6751,"isOffset":false,"isSlot":false,"src":"1785:10:48","valueSize":1},{"declaration":6828,"isOffset":false,"isSlot":false,"src":"1759:3:48","valueSize":1},{"declaration":6806,"isOffset":false,"isSlot":false,"src":"1773:5:48","valueSize":1}],"flags":["memory-safe"],"id":6835,"nodeType":"InlineAssembly","src":"1704:111:48"},{"expression":{"id":6838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6836,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6806,"src":"1832:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":6837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1841:2:48","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1832:11:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6839,"nodeType":"ExpressionStatement","src":"1832:11:48"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6840,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6806,"src":"1865:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1874:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1865:10:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6844,"nodeType":"IfStatement","src":"1861:21:48","trueBody":{"id":6843,"nodeType":"Break","src":"1877:5:48"}}]},"condition":{"hexValue":"74727565","id":6831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1657:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":6846,"nodeType":"WhileStatement","src":"1650:247:48"},{"expression":{"id":6847,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"1917:6:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":6810,"id":6848,"nodeType":"Return","src":"1910:13:48"}]}]},"documentation":{"id":6804,"nodeType":"StructuredDocumentation","src":"1213:90:48","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":6851,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1317:8:48","nodeType":"FunctionDefinition","parameters":{"id":6807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6806,"mutability":"mutable","name":"value","nameLocation":"1334:5:48","nodeType":"VariableDeclaration","scope":6851,"src":"1326:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6805,"name":"uint256","nodeType":"ElementaryTypeName","src":"1326:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1325:15:48"},"returnParameters":{"id":6810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6809,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6851,"src":"1364:13:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6808,"name":"string","nodeType":"ElementaryTypeName","src":"1364:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1363:15:48"},"scope":8139,"src":"1308:632:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6876,"nodeType":"Block","src":"2116:92:48","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6862,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6854,"src":"2147:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":6863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2155:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2147:9:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":6866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2165:2:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":6867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2147:20:48","trueExpression":{"hexValue":"2d","id":6865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2159:3:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":6871,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6854,"src":"2193:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":6869,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12161,"src":"2178:10:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignedMath_$12161_$","typeString":"type(library SignedMath)"}},"id":6870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2189:3:48","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":12160,"src":"2178:14:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":6872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2178:21:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6868,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6851,"src":"2169:8:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":6873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2169:31:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":6860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2133:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":6859,"name":"string","nodeType":"ElementaryTypeName","src":"2133:6:48","typeDescriptions":{}}},"id":6861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2140:6:48","memberName":"concat","nodeType":"MemberAccess","src":"2133:13:48","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":6874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2133:68:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":6858,"id":6875,"nodeType":"Return","src":"2126:75:48"}]},"documentation":{"id":6852,"nodeType":"StructuredDocumentation","src":"1946:89:48","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":6877,"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"2049:14:48","nodeType":"FunctionDefinition","parameters":{"id":6855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6854,"mutability":"mutable","name":"value","nameLocation":"2071:5:48","nodeType":"VariableDeclaration","scope":6877,"src":"2064:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6853,"name":"int256","nodeType":"ElementaryTypeName","src":"2064:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2063:14:48"},"returnParameters":{"id":6858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6857,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6877,"src":"2101:13:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6856,"name":"string","nodeType":"ElementaryTypeName","src":"2101:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2100:15:48"},"scope":8139,"src":"2040:168:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6896,"nodeType":"Block","src":"2387:100:48","statements":[{"id":6895,"nodeType":"UncheckedBlock","src":"2397:84:48","statements":[{"expression":{"arguments":[{"id":6886,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6880,"src":"2440:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6880,"src":"2459:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":6887,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"2447:4:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$10252_$","typeString":"type(library Math)"}},"id":6888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2452:6:48","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":10195,"src":"2447:11:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":6890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2447:18:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2468:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2447:22:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6885,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[6897,6980,7000],"referencedDeclaration":6980,"src":"2428:11:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":6893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2428:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":6884,"id":6894,"nodeType":"Return","src":"2421:49:48"}]}]},"documentation":{"id":6878,"nodeType":"StructuredDocumentation","src":"2214:94:48","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":6897,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2322:11:48","nodeType":"FunctionDefinition","parameters":{"id":6881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6880,"mutability":"mutable","name":"value","nameLocation":"2342:5:48","nodeType":"VariableDeclaration","scope":6897,"src":"2334:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6879,"name":"uint256","nodeType":"ElementaryTypeName","src":"2334:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2333:15:48"},"returnParameters":{"id":6884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6883,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6897,"src":"2372:13:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6882,"name":"string","nodeType":"ElementaryTypeName","src":"2372:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2371:15:48"},"scope":8139,"src":"2313:174:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6979,"nodeType":"Block","src":"2700:435:48","statements":[{"assignments":[6908],"declarations":[{"constant":false,"id":6908,"mutability":"mutable","name":"localValue","nameLocation":"2718:10:48","nodeType":"VariableDeclaration","scope":6979,"src":"2710:18:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6907,"name":"uint256","nodeType":"ElementaryTypeName","src":"2710:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6910,"initialValue":{"id":6909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6900,"src":"2731:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2710:26:48"},{"assignments":[6912],"declarations":[{"constant":false,"id":6912,"mutability":"mutable","name":"buffer","nameLocation":"2759:6:48","nodeType":"VariableDeclaration","scope":6979,"src":"2746:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6911,"name":"bytes","nodeType":"ElementaryTypeName","src":"2746:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6921,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2778:1:48","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6916,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6902,"src":"2782:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2778:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":6918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2791:1:48","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2778:14:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6914,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2768:9:48","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":6913,"name":"bytes","nodeType":"ElementaryTypeName","src":"2772:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":6920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2768:25:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2746:47:48"},{"expression":{"id":6926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6922,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6912,"src":"2803:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6924,"indexExpression":{"hexValue":"30","id":6923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2810:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2803:9:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":6925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2815:3:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2803:15:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":6927,"nodeType":"ExpressionStatement","src":"2803:15:48"},{"expression":{"id":6932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6928,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6912,"src":"2828:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6930,"indexExpression":{"hexValue":"31","id":6929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2835:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2828:9:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":6931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2840:3:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2828:15:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":6933,"nodeType":"ExpressionStatement","src":"2828:15:48"},{"body":{"id":6962,"nodeType":"Block","src":"2898:95:48","statements":[{"expression":{"id":6956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":6948,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6912,"src":"2912:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":6950,"indexExpression":{"id":6949,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6935,"src":"2919:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2912:9:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":6951,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6751,"src":"2924:10:48","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":6955,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6952,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"2935:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":6953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2948:3:48","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2935:16:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2924:28:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2912:40:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":6957,"nodeType":"ExpressionStatement","src":"2912:40:48"},{"expression":{"id":6960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6958,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"2966:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":6959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2981:1:48","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2966:16:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6961,"nodeType":"ExpressionStatement","src":"2966:16:48"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6942,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6935,"src":"2886:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":6943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2890:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2886:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6963,"initializationExpression":{"assignments":[6935],"declarations":[{"constant":false,"id":6935,"mutability":"mutable","name":"i","nameLocation":"2866:1:48","nodeType":"VariableDeclaration","scope":6963,"src":"2858:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6934,"name":"uint256","nodeType":"ElementaryTypeName","src":"2858:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6941,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2870:1:48","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6937,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6902,"src":"2874:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2870:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2883:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2870:14:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2858:26:48"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":6946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2893:3:48","subExpression":{"id":6945,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6935,"src":"2895:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6947,"nodeType":"ExpressionStatement","src":"2893:3:48"},"nodeType":"ForStatement","src":"2853:140:48"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6964,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6908,"src":"3006:10:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3020:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3006:15:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6973,"nodeType":"IfStatement","src":"3002:96:48","trueBody":{"id":6972,"nodeType":"Block","src":"3023:75:48","statements":[{"errorCall":{"arguments":[{"id":6968,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6900,"src":"3073:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6969,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6902,"src":"3080:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6967,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6797,"src":"3044:28:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":6970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3044:43:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6971,"nodeType":"RevertStatement","src":"3037:50:48"}]}},{"expression":{"arguments":[{"id":6976,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6912,"src":"3121:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3114:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":6974,"name":"string","nodeType":"ElementaryTypeName","src":"3114:6:48","typeDescriptions":{}}},"id":6977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3114:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":6906,"id":6978,"nodeType":"Return","src":"3107:21:48"}]},"documentation":{"id":6898,"nodeType":"StructuredDocumentation","src":"2493:112:48","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":6980,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2619:11:48","nodeType":"FunctionDefinition","parameters":{"id":6903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6900,"mutability":"mutable","name":"value","nameLocation":"2639:5:48","nodeType":"VariableDeclaration","scope":6980,"src":"2631:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6899,"name":"uint256","nodeType":"ElementaryTypeName","src":"2631:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6902,"mutability":"mutable","name":"length","nameLocation":"2654:6:48","nodeType":"VariableDeclaration","scope":6980,"src":"2646:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6901,"name":"uint256","nodeType":"ElementaryTypeName","src":"2646:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2630:31:48"},"returnParameters":{"id":6906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6905,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6980,"src":"2685:13:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6904,"name":"string","nodeType":"ElementaryTypeName","src":"2685:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2684:15:48"},"scope":8139,"src":"2610:525:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6999,"nodeType":"Block","src":"3367:75:48","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":6993,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6983,"src":"3412:4:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3404:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":6991,"name":"uint160","nodeType":"ElementaryTypeName","src":"3404:7:48","typeDescriptions":{}}},"id":6994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3404:13:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":6990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3396:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6989,"name":"uint256","nodeType":"ElementaryTypeName","src":"3396:7:48","typeDescriptions":{}}},"id":6995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3396:22:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6996,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6754,"src":"3420:14:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":6988,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[6897,6980,7000],"referencedDeclaration":6980,"src":"3384:11:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":6997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3384:51:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":6987,"id":6998,"nodeType":"Return","src":"3377:58:48"}]},"documentation":{"id":6981,"nodeType":"StructuredDocumentation","src":"3141:148:48","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"id":7000,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"3303:11:48","nodeType":"FunctionDefinition","parameters":{"id":6984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6983,"mutability":"mutable","name":"addr","nameLocation":"3323:4:48","nodeType":"VariableDeclaration","scope":7000,"src":"3315:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6982,"name":"address","nodeType":"ElementaryTypeName","src":"3315:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3314:14:48"},"returnParameters":{"id":6987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6986,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7000,"src":"3352:13:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6985,"name":"string","nodeType":"ElementaryTypeName","src":"3352:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3351:15:48"},"scope":8139,"src":"3294:148:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7064,"nodeType":"Block","src":"3699:642:48","statements":[{"assignments":[7009],"declarations":[{"constant":false,"id":7009,"mutability":"mutable","name":"buffer","nameLocation":"3722:6:48","nodeType":"VariableDeclaration","scope":7064,"src":"3709:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7008,"name":"bytes","nodeType":"ElementaryTypeName","src":"3709:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7016,"initialValue":{"arguments":[{"arguments":[{"id":7013,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7003,"src":"3749:4:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7012,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[6897,6980,7000],"referencedDeclaration":7000,"src":"3737:11:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) pure returns (string memory)"}},"id":7014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3737:17:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3731:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7010,"name":"bytes","nodeType":"ElementaryTypeName","src":"3731:5:48","typeDescriptions":{}}},"id":7015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3731:24:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3709:46:48"},{"assignments":[7018],"declarations":[{"constant":false,"id":7018,"mutability":"mutable","name":"hashValue","nameLocation":"3848:9:48","nodeType":"VariableDeclaration","scope":7064,"src":"3840:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7017,"name":"uint256","nodeType":"ElementaryTypeName","src":"3840:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7019,"nodeType":"VariableDeclarationStatement","src":"3840:17:48"},{"AST":{"nativeSrc":"3892:78:48","nodeType":"YulBlock","src":"3892:78:48","statements":[{"nativeSrc":"3906:54:48","nodeType":"YulAssignment","src":"3906:54:48","value":{"arguments":[{"kind":"number","nativeSrc":"3923:2:48","nodeType":"YulLiteral","src":"3923:2:48","type":"","value":"96"},{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"3941:6:48","nodeType":"YulIdentifier","src":"3941:6:48"},{"kind":"number","nativeSrc":"3949:4:48","nodeType":"YulLiteral","src":"3949:4:48","type":"","value":"0x22"}],"functionName":{"name":"add","nativeSrc":"3937:3:48","nodeType":"YulIdentifier","src":"3937:3:48"},"nativeSrc":"3937:17:48","nodeType":"YulFunctionCall","src":"3937:17:48"},{"kind":"number","nativeSrc":"3956:2:48","nodeType":"YulLiteral","src":"3956:2:48","type":"","value":"40"}],"functionName":{"name":"keccak256","nativeSrc":"3927:9:48","nodeType":"YulIdentifier","src":"3927:9:48"},"nativeSrc":"3927:32:48","nodeType":"YulFunctionCall","src":"3927:32:48"}],"functionName":{"name":"shr","nativeSrc":"3919:3:48","nodeType":"YulIdentifier","src":"3919:3:48"},"nativeSrc":"3919:41:48","nodeType":"YulFunctionCall","src":"3919:41:48"},"variableNames":[{"name":"hashValue","nativeSrc":"3906:9:48","nodeType":"YulIdentifier","src":"3906:9:48"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":7009,"isOffset":false,"isSlot":false,"src":"3941:6:48","valueSize":1},{"declaration":7018,"isOffset":false,"isSlot":false,"src":"3906:9:48","valueSize":1}],"flags":["memory-safe"],"id":7020,"nodeType":"InlineAssembly","src":"3867:103:48"},{"body":{"id":7057,"nodeType":"Block","src":"4013:291:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7031,"name":"hashValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7018,"src":"4119:9:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":7032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4131:3:48","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"4119:15:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"37","id":7034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4137:1:48","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"4119:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":7038,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7009,"src":"4148:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7040,"indexExpression":{"id":7039,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7022,"src":"4155:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4148:9:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":7037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4142:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":7036,"name":"uint8","nodeType":"ElementaryTypeName","src":"4142:5:48","typeDescriptions":{}}},"id":7041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4142:16:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3936","id":7042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4161:2:48","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"4142:21:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4119:44:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7052,"nodeType":"IfStatement","src":"4115:150:48","trueBody":{"id":7051,"nodeType":"Block","src":"4165:100:48","statements":[{"expression":{"id":7049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7045,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7009,"src":"4233:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7047,"indexExpression":{"id":7046,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7022,"src":"4240:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4233:9:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"^=","rightHandSide":{"hexValue":"30783230","id":7048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4246:4:48","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"4233:17:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":7050,"nodeType":"ExpressionStatement","src":"4233:17:48"}]}},{"expression":{"id":7055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7053,"name":"hashValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7018,"src":"4278:9:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":7054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4292:1:48","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"4278:15:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7056,"nodeType":"ExpressionStatement","src":"4278:15:48"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7025,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7022,"src":"4001:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":7026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4005:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4001:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7058,"initializationExpression":{"assignments":[7022],"declarations":[{"constant":false,"id":7022,"mutability":"mutable","name":"i","nameLocation":"3993:1:48","nodeType":"VariableDeclaration","scope":7058,"src":"3985:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7021,"name":"uint256","nodeType":"ElementaryTypeName","src":"3985:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7024,"initialValue":{"hexValue":"3431","id":7023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3997:2:48","typeDescriptions":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"value":"41"},"nodeType":"VariableDeclarationStatement","src":"3985:14:48"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":7029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"4008:3:48","subExpression":{"id":7028,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7022,"src":"4010:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7030,"nodeType":"ExpressionStatement","src":"4008:3:48"},"nodeType":"ForStatement","src":"3980:324:48"},{"expression":{"arguments":[{"id":7061,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7009,"src":"4327:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4320:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":7059,"name":"string","nodeType":"ElementaryTypeName","src":"4320:6:48","typeDescriptions":{}}},"id":7062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4320:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":7007,"id":7063,"nodeType":"Return","src":"4313:21:48"}]},"documentation":{"id":7001,"nodeType":"StructuredDocumentation","src":"3448:165:48","text":" @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\n representation, according to EIP-55."},"id":7065,"implemented":true,"kind":"function","modifiers":[],"name":"toChecksumHexString","nameLocation":"3627:19:48","nodeType":"FunctionDefinition","parameters":{"id":7004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7003,"mutability":"mutable","name":"addr","nameLocation":"3655:4:48","nodeType":"VariableDeclaration","scope":7065,"src":"3647:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7002,"name":"address","nodeType":"ElementaryTypeName","src":"3647:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3646:14:48"},"returnParameters":{"id":7007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7006,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7065,"src":"3684:13:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7005,"name":"string","nodeType":"ElementaryTypeName","src":"3684:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3683:15:48"},"scope":8139,"src":"3618:723:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7101,"nodeType":"Block","src":"4496:104:48","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":7077,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"4519:1:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7076,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4513:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7075,"name":"bytes","nodeType":"ElementaryTypeName","src":"4513:5:48","typeDescriptions":{}}},"id":7078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4513:8:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4522:6:48","memberName":"length","nodeType":"MemberAccess","src":"4513:15:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":7082,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"4538:1:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4532:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7080,"name":"bytes","nodeType":"ElementaryTypeName","src":"4532:5:48","typeDescriptions":{}}},"id":7083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4532:8:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4541:6:48","memberName":"length","nodeType":"MemberAccess","src":"4532:15:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4513:34:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":7098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":7089,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7068,"src":"4567:1:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7088,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4561:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7087,"name":"bytes","nodeType":"ElementaryTypeName","src":"4561:5:48","typeDescriptions":{}}},"id":7090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4561:8:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7086,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4551:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4551:19:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":7095,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7070,"src":"4590:1:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4584:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7093,"name":"bytes","nodeType":"ElementaryTypeName","src":"4584:5:48","typeDescriptions":{}}},"id":7096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4584:8:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7092,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4574:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4574:19:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4551:42:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4513:80:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7074,"id":7100,"nodeType":"Return","src":"4506:87:48"}]},"documentation":{"id":7066,"nodeType":"StructuredDocumentation","src":"4347:66:48","text":" @dev Returns true if the two strings are equal."},"id":7102,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"4427:5:48","nodeType":"FunctionDefinition","parameters":{"id":7071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7068,"mutability":"mutable","name":"a","nameLocation":"4447:1:48","nodeType":"VariableDeclaration","scope":7102,"src":"4433:15:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7067,"name":"string","nodeType":"ElementaryTypeName","src":"4433:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7070,"mutability":"mutable","name":"b","nameLocation":"4464:1:48","nodeType":"VariableDeclaration","scope":7102,"src":"4450:15:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7069,"name":"string","nodeType":"ElementaryTypeName","src":"4450:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4432:34:48"},"returnParameters":{"id":7074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7073,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7102,"src":"4490:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7072,"name":"bool","nodeType":"ElementaryTypeName","src":"4490:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4489:6:48"},"scope":8139,"src":"4418:182:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7120,"nodeType":"Block","src":"4897:64:48","statements":[{"expression":{"arguments":[{"id":7111,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7105,"src":"4924:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":7112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4931:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":7115,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7105,"src":"4940:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4934:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7113,"name":"bytes","nodeType":"ElementaryTypeName","src":"4934:5:48","typeDescriptions":{}}},"id":7116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4934:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4947:6:48","memberName":"length","nodeType":"MemberAccess","src":"4934:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7110,"name":"parseUint","nodeType":"Identifier","overloadedDeclarations":[7121,7152],"referencedDeclaration":7152,"src":"4914:9:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (uint256)"}},"id":7118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4914:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7109,"id":7119,"nodeType":"Return","src":"4907:47:48"}]},"documentation":{"id":7103,"nodeType":"StructuredDocumentation","src":"4606:214:48","text":" @dev Parse a decimal string and returns the value as a `uint256`.\n Requirements:\n - The string must be formatted as `[0-9]*`\n - The result must fit into an `uint256` type"},"id":7121,"implemented":true,"kind":"function","modifiers":[],"name":"parseUint","nameLocation":"4834:9:48","nodeType":"FunctionDefinition","parameters":{"id":7106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7105,"mutability":"mutable","name":"input","nameLocation":"4858:5:48","nodeType":"VariableDeclaration","scope":7121,"src":"4844:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7104,"name":"string","nodeType":"ElementaryTypeName","src":"4844:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4843:21:48"},"returnParameters":{"id":7109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7108,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7121,"src":"4888:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7107,"name":"uint256","nodeType":"ElementaryTypeName","src":"4888:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:9:48"},"scope":8139,"src":"4825:136:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7151,"nodeType":"Block","src":"5366:153:48","statements":[{"assignments":[7134,7136],"declarations":[{"constant":false,"id":7134,"mutability":"mutable","name":"success","nameLocation":"5382:7:48","nodeType":"VariableDeclaration","scope":7151,"src":"5377:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7133,"name":"bool","nodeType":"ElementaryTypeName","src":"5377:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7136,"mutability":"mutable","name":"value","nameLocation":"5399:5:48","nodeType":"VariableDeclaration","scope":7151,"src":"5391:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7135,"name":"uint256","nodeType":"ElementaryTypeName","src":"5391:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7142,"initialValue":{"arguments":[{"id":7138,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7124,"src":"5421:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7139,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7126,"src":"5428:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7140,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7128,"src":"5435:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7137,"name":"tryParseUint","nodeType":"Identifier","overloadedDeclarations":[7173,7210],"referencedDeclaration":7210,"src":"5408:12:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":7141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5408:31:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5376:63:48"},{"condition":{"id":7144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5453:8:48","subExpression":{"id":7143,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7134,"src":"5454:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7148,"nodeType":"IfStatement","src":"5449:41:48","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7145,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6800,"src":"5470:18:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5470:20:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7147,"nodeType":"RevertStatement","src":"5463:27:48"}},{"expression":{"id":7149,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7136,"src":"5507:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7132,"id":7150,"nodeType":"Return","src":"5500:12:48"}]},"documentation":{"id":7122,"nodeType":"StructuredDocumentation","src":"4967:294:48","text":" @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `[0-9]*`\n - The result must fit into an `uint256` type"},"id":7152,"implemented":true,"kind":"function","modifiers":[],"name":"parseUint","nameLocation":"5275:9:48","nodeType":"FunctionDefinition","parameters":{"id":7129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7124,"mutability":"mutable","name":"input","nameLocation":"5299:5:48","nodeType":"VariableDeclaration","scope":7152,"src":"5285:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7123,"name":"string","nodeType":"ElementaryTypeName","src":"5285:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7126,"mutability":"mutable","name":"begin","nameLocation":"5314:5:48","nodeType":"VariableDeclaration","scope":7152,"src":"5306:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7125,"name":"uint256","nodeType":"ElementaryTypeName","src":"5306:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7128,"mutability":"mutable","name":"end","nameLocation":"5329:3:48","nodeType":"VariableDeclaration","scope":7152,"src":"5321:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7127,"name":"uint256","nodeType":"ElementaryTypeName","src":"5321:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5284:49:48"},"returnParameters":{"id":7132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7131,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7152,"src":"5357:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7130,"name":"uint256","nodeType":"ElementaryTypeName","src":"5357:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5356:9:48"},"scope":8139,"src":"5266:253:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7172,"nodeType":"Block","src":"5840:83:48","statements":[{"expression":{"arguments":[{"id":7163,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7155,"src":"5886:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":7164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5893:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":7167,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7155,"src":"5902:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5896:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7165,"name":"bytes","nodeType":"ElementaryTypeName","src":"5896:5:48","typeDescriptions":{}}},"id":7168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5896:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5909:6:48","memberName":"length","nodeType":"MemberAccess","src":"5896:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7162,"name":"_tryParseUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7280,"src":"5857:28:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":7170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5857:59:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":7161,"id":7171,"nodeType":"Return","src":"5850:66:48"}]},"documentation":{"id":7153,"nodeType":"StructuredDocumentation","src":"5525:215:48","text":" @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":7173,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseUint","nameLocation":"5754:12:48","nodeType":"FunctionDefinition","parameters":{"id":7156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7155,"mutability":"mutable","name":"input","nameLocation":"5781:5:48","nodeType":"VariableDeclaration","scope":7173,"src":"5767:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7154,"name":"string","nodeType":"ElementaryTypeName","src":"5767:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5766:21:48"},"returnParameters":{"id":7161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7158,"mutability":"mutable","name":"success","nameLocation":"5816:7:48","nodeType":"VariableDeclaration","scope":7173,"src":"5811:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7157,"name":"bool","nodeType":"ElementaryTypeName","src":"5811:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7160,"mutability":"mutable","name":"value","nameLocation":"5833:5:48","nodeType":"VariableDeclaration","scope":7173,"src":"5825:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7159,"name":"uint256","nodeType":"ElementaryTypeName","src":"5825:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5810:29:48"},"scope":8139,"src":"5745:178:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7209,"nodeType":"Block","src":"6325:144:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7187,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7180,"src":"6339:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7190,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7176,"src":"6351:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6345:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7188,"name":"bytes","nodeType":"ElementaryTypeName","src":"6345:5:48","typeDescriptions":{}}},"id":7191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6345:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6358:6:48","memberName":"length","nodeType":"MemberAccess","src":"6345:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6339:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7194,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7178,"src":"6368:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7195,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7180,"src":"6376:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6368:11:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6339:40:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7202,"nodeType":"IfStatement","src":"6335:63:48","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":7198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6389:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":7199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6396:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":7200,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6388:10:48","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":7186,"id":7201,"nodeType":"Return","src":"6381:17:48"}},{"expression":{"arguments":[{"id":7204,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7176,"src":"6444:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7205,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7178,"src":"6451:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7206,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7180,"src":"6458:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7203,"name":"_tryParseUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7280,"src":"6415:28:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":7207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6415:47:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":7186,"id":7208,"nodeType":"Return","src":"6408:54:48"}]},"documentation":{"id":7174,"nodeType":"StructuredDocumentation","src":"5929:238:48","text":" @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":7210,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseUint","nameLocation":"6181:12:48","nodeType":"FunctionDefinition","parameters":{"id":7181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7176,"mutability":"mutable","name":"input","nameLocation":"6217:5:48","nodeType":"VariableDeclaration","scope":7210,"src":"6203:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7175,"name":"string","nodeType":"ElementaryTypeName","src":"6203:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7178,"mutability":"mutable","name":"begin","nameLocation":"6240:5:48","nodeType":"VariableDeclaration","scope":7210,"src":"6232:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7177,"name":"uint256","nodeType":"ElementaryTypeName","src":"6232:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7180,"mutability":"mutable","name":"end","nameLocation":"6263:3:48","nodeType":"VariableDeclaration","scope":7210,"src":"6255:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7179,"name":"uint256","nodeType":"ElementaryTypeName","src":"6255:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6193:79:48"},"returnParameters":{"id":7186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7183,"mutability":"mutable","name":"success","nameLocation":"6301:7:48","nodeType":"VariableDeclaration","scope":7210,"src":"6296:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7182,"name":"bool","nodeType":"ElementaryTypeName","src":"6296:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7185,"mutability":"mutable","name":"value","nameLocation":"6318:5:48","nodeType":"VariableDeclaration","scope":7210,"src":"6310:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7184,"name":"uint256","nodeType":"ElementaryTypeName","src":"6310:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6295:29:48"},"scope":8139,"src":"6172:297:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7279,"nodeType":"Block","src":"6872:347:48","statements":[{"assignments":[7225],"declarations":[{"constant":false,"id":7225,"mutability":"mutable","name":"buffer","nameLocation":"6895:6:48","nodeType":"VariableDeclaration","scope":7279,"src":"6882:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7224,"name":"bytes","nodeType":"ElementaryTypeName","src":"6882:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7230,"initialValue":{"arguments":[{"id":7228,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7213,"src":"6910:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6904:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7226,"name":"bytes","nodeType":"ElementaryTypeName","src":"6904:5:48","typeDescriptions":{}}},"id":7229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6904:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6882:34:48"},{"assignments":[7232],"declarations":[{"constant":false,"id":7232,"mutability":"mutable","name":"result","nameLocation":"6935:6:48","nodeType":"VariableDeclaration","scope":7279,"src":"6927:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7231,"name":"uint256","nodeType":"ElementaryTypeName","src":"6927:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7234,"initialValue":{"hexValue":"30","id":7233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6944:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6927:18:48"},{"body":{"id":7273,"nodeType":"Block","src":"6993:189:48","statements":[{"assignments":[7246],"declarations":[{"constant":false,"id":7246,"mutability":"mutable","name":"chr","nameLocation":"7013:3:48","nodeType":"VariableDeclaration","scope":7273,"src":"7007:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7245,"name":"uint8","nodeType":"ElementaryTypeName","src":"7007:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":7256,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":7251,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7225,"src":"7062:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7252,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7236,"src":"7070:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7250,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8138,"src":"7039:22:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":7253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7039:33:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7249,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7032:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":7248,"name":"bytes1","nodeType":"ElementaryTypeName","src":"7032:6:48","typeDescriptions":{}}},"id":7254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7032:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":7247,"name":"_tryParseChr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7960,"src":"7019:12:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$","typeString":"function (bytes1) pure returns (uint8)"}},"id":7255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7019:55:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"7007:67:48"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7257,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7246,"src":"7092:3:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"39","id":7258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7098:1:48","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"7092:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7264,"nodeType":"IfStatement","src":"7088:30:48","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":7260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7109:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":7261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7116:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":7262,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7108:10:48","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":7223,"id":7263,"nodeType":"Return","src":"7101:17:48"}},{"expression":{"id":7267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7265,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7232,"src":"7132:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"3130","id":7266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7142:2:48","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"7132:12:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7268,"nodeType":"ExpressionStatement","src":"7132:12:48"},{"expression":{"id":7271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7269,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7232,"src":"7158:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7270,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7246,"src":"7168:3:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7158:13:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7272,"nodeType":"ExpressionStatement","src":"7158:13:48"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7239,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7236,"src":"6979:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7240,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7217,"src":"6983:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6979:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7274,"initializationExpression":{"assignments":[7236],"declarations":[{"constant":false,"id":7236,"mutability":"mutable","name":"i","nameLocation":"6968:1:48","nodeType":"VariableDeclaration","scope":7274,"src":"6960:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7235,"name":"uint256","nodeType":"ElementaryTypeName","src":"6960:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7238,"initialValue":{"id":7237,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7215,"src":"6972:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6960:17:48"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":7243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6988:3:48","subExpression":{"id":7242,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7236,"src":"6990:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7244,"nodeType":"ExpressionStatement","src":"6988:3:48"},"nodeType":"ForStatement","src":"6955:227:48"},{"expression":{"components":[{"hexValue":"74727565","id":7275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7199:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":7276,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7232,"src":"7205:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7277,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7198:14:48","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":7223,"id":7278,"nodeType":"Return","src":"7191:21:48"}]},"documentation":{"id":7211,"nodeType":"StructuredDocumentation","src":"6475:224:48","text":" @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."},"id":7280,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseUintUncheckedBounds","nameLocation":"6713:28:48","nodeType":"FunctionDefinition","parameters":{"id":7218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7213,"mutability":"mutable","name":"input","nameLocation":"6765:5:48","nodeType":"VariableDeclaration","scope":7280,"src":"6751:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7212,"name":"string","nodeType":"ElementaryTypeName","src":"6751:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7215,"mutability":"mutable","name":"begin","nameLocation":"6788:5:48","nodeType":"VariableDeclaration","scope":7280,"src":"6780:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7214,"name":"uint256","nodeType":"ElementaryTypeName","src":"6780:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7217,"mutability":"mutable","name":"end","nameLocation":"6811:3:48","nodeType":"VariableDeclaration","scope":7280,"src":"6803:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7216,"name":"uint256","nodeType":"ElementaryTypeName","src":"6803:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6741:79:48"},"returnParameters":{"id":7223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7220,"mutability":"mutable","name":"success","nameLocation":"6848:7:48","nodeType":"VariableDeclaration","scope":7280,"src":"6843:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7219,"name":"bool","nodeType":"ElementaryTypeName","src":"6843:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7222,"mutability":"mutable","name":"value","nameLocation":"6865:5:48","nodeType":"VariableDeclaration","scope":7280,"src":"6857:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7221,"name":"uint256","nodeType":"ElementaryTypeName","src":"6857:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6842:29:48"},"scope":8139,"src":"6704:515:48","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":7298,"nodeType":"Block","src":"7516:63:48","statements":[{"expression":{"arguments":[{"id":7289,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7283,"src":"7542:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":7290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7549:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":7293,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7283,"src":"7558:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7552:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7291,"name":"bytes","nodeType":"ElementaryTypeName","src":"7552:5:48","typeDescriptions":{}}},"id":7294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7552:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7565:6:48","memberName":"length","nodeType":"MemberAccess","src":"7552:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7288,"name":"parseInt","nodeType":"Identifier","overloadedDeclarations":[7299,7330],"referencedDeclaration":7330,"src":"7533:8:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (int256)"}},"id":7296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7533:39:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":7287,"id":7297,"nodeType":"Return","src":"7526:46:48"}]},"documentation":{"id":7281,"nodeType":"StructuredDocumentation","src":"7225:216:48","text":" @dev Parse a decimal string and returns the value as a `int256`.\n Requirements:\n - The string must be formatted as `[-+]?[0-9]*`\n - The result must fit in an `int256` type."},"id":7299,"implemented":true,"kind":"function","modifiers":[],"name":"parseInt","nameLocation":"7455:8:48","nodeType":"FunctionDefinition","parameters":{"id":7284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7283,"mutability":"mutable","name":"input","nameLocation":"7478:5:48","nodeType":"VariableDeclaration","scope":7299,"src":"7464:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7282,"name":"string","nodeType":"ElementaryTypeName","src":"7464:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7463:21:48"},"returnParameters":{"id":7287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7286,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7299,"src":"7508:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7285,"name":"int256","nodeType":"ElementaryTypeName","src":"7508:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7507:8:48"},"scope":8139,"src":"7446:133:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7329,"nodeType":"Block","src":"7984:151:48","statements":[{"assignments":[7312,7314],"declarations":[{"constant":false,"id":7312,"mutability":"mutable","name":"success","nameLocation":"8000:7:48","nodeType":"VariableDeclaration","scope":7329,"src":"7995:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7311,"name":"bool","nodeType":"ElementaryTypeName","src":"7995:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7314,"mutability":"mutable","name":"value","nameLocation":"8016:5:48","nodeType":"VariableDeclaration","scope":7329,"src":"8009:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7313,"name":"int256","nodeType":"ElementaryTypeName","src":"8009:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":7320,"initialValue":{"arguments":[{"id":7316,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7302,"src":"8037:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7317,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7304,"src":"8044:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7318,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7306,"src":"8051:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7315,"name":"tryParseInt","nodeType":"Identifier","overloadedDeclarations":[7351,7393],"referencedDeclaration":7393,"src":"8025:11:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,int256)"}},"id":7319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8025:30:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"nodeType":"VariableDeclarationStatement","src":"7994:61:48"},{"condition":{"id":7322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8069:8:48","subExpression":{"id":7321,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7312,"src":"8070:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7326,"nodeType":"IfStatement","src":"8065:41:48","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7323,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6800,"src":"8086:18:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8086:20:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7325,"nodeType":"RevertStatement","src":"8079:27:48"}},{"expression":{"id":7327,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7314,"src":"8123:5:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":7310,"id":7328,"nodeType":"Return","src":"8116:12:48"}]},"documentation":{"id":7300,"nodeType":"StructuredDocumentation","src":"7585:296:48","text":" @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `[-+]?[0-9]*`\n - The result must fit in an `int256` type."},"id":7330,"implemented":true,"kind":"function","modifiers":[],"name":"parseInt","nameLocation":"7895:8:48","nodeType":"FunctionDefinition","parameters":{"id":7307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7302,"mutability":"mutable","name":"input","nameLocation":"7918:5:48","nodeType":"VariableDeclaration","scope":7330,"src":"7904:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7301,"name":"string","nodeType":"ElementaryTypeName","src":"7904:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7304,"mutability":"mutable","name":"begin","nameLocation":"7933:5:48","nodeType":"VariableDeclaration","scope":7330,"src":"7925:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7303,"name":"uint256","nodeType":"ElementaryTypeName","src":"7925:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7306,"mutability":"mutable","name":"end","nameLocation":"7948:3:48","nodeType":"VariableDeclaration","scope":7330,"src":"7940:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7305,"name":"uint256","nodeType":"ElementaryTypeName","src":"7940:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7903:49:48"},"returnParameters":{"id":7310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7309,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7330,"src":"7976:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7308,"name":"int256","nodeType":"ElementaryTypeName","src":"7976:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7975:8:48"},"scope":8139,"src":"7886:249:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7350,"nodeType":"Block","src":"8526:82:48","statements":[{"expression":{"arguments":[{"id":7341,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7333,"src":"8571:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":7342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8578:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":7345,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7333,"src":"8587:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7344,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8581:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7343,"name":"bytes","nodeType":"ElementaryTypeName","src":"8581:5:48","typeDescriptions":{}}},"id":7346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8581:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8594:6:48","memberName":"length","nodeType":"MemberAccess","src":"8581:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7340,"name":"_tryParseIntUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7514,"src":"8543:27:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,int256)"}},"id":7348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8543:58:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":7339,"id":7349,"nodeType":"Return","src":"8536:65:48"}]},"documentation":{"id":7331,"nodeType":"StructuredDocumentation","src":"8141:287:48","text":" @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if\n the result does not fit in a `int256`.\n NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`."},"id":7351,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseInt","nameLocation":"8442:11:48","nodeType":"FunctionDefinition","parameters":{"id":7334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7333,"mutability":"mutable","name":"input","nameLocation":"8468:5:48","nodeType":"VariableDeclaration","scope":7351,"src":"8454:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7332,"name":"string","nodeType":"ElementaryTypeName","src":"8454:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8453:21:48"},"returnParameters":{"id":7339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7336,"mutability":"mutable","name":"success","nameLocation":"8503:7:48","nodeType":"VariableDeclaration","scope":7351,"src":"8498:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7335,"name":"bool","nodeType":"ElementaryTypeName","src":"8498:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7338,"mutability":"mutable","name":"value","nameLocation":"8519:5:48","nodeType":"VariableDeclaration","scope":7351,"src":"8512:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7337,"name":"int256","nodeType":"ElementaryTypeName","src":"8512:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"8497:28:48"},"scope":8139,"src":"8433:175:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"constant":true,"id":7356,"mutability":"constant","name":"ABS_MIN_INT256","nameLocation":"8639:14:48","nodeType":"VariableDeclaration","scope":8139,"src":"8614:50:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7352,"name":"uint256","nodeType":"ElementaryTypeName","src":"8614:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"},"id":7355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":7353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8656:1:48","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323535","id":7354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8661:3:48","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"8656:8:48","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}},"visibility":"private"},{"body":{"id":7392,"nodeType":"Block","src":"9130:143:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7370,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7363,"src":"9144:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7373,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7359,"src":"9156:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9150:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7371,"name":"bytes","nodeType":"ElementaryTypeName","src":"9150:5:48","typeDescriptions":{}}},"id":7374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9150:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9163:6:48","memberName":"length","nodeType":"MemberAccess","src":"9150:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9144:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7377,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7361,"src":"9173:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7378,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7363,"src":"9181:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9173:11:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9144:40:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7385,"nodeType":"IfStatement","src":"9140:63:48","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":7381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9194:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":7382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9201:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":7383,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9193:10:48","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":7369,"id":7384,"nodeType":"Return","src":"9186:17:48"}},{"expression":{"arguments":[{"id":7387,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7359,"src":"9248:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7388,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7361,"src":"9255:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7389,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7363,"src":"9262:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7386,"name":"_tryParseIntUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7514,"src":"9220:27:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_int256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,int256)"}},"id":7390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9220:46:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":7369,"id":7391,"nodeType":"Return","src":"9213:53:48"}]},"documentation":{"id":7357,"nodeType":"StructuredDocumentation","src":"8671:303:48","text":" @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid\n character or if the result does not fit in a `int256`.\n NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`."},"id":7393,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseInt","nameLocation":"8988:11:48","nodeType":"FunctionDefinition","parameters":{"id":7364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7359,"mutability":"mutable","name":"input","nameLocation":"9023:5:48","nodeType":"VariableDeclaration","scope":7393,"src":"9009:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7358,"name":"string","nodeType":"ElementaryTypeName","src":"9009:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7361,"mutability":"mutable","name":"begin","nameLocation":"9046:5:48","nodeType":"VariableDeclaration","scope":7393,"src":"9038:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7360,"name":"uint256","nodeType":"ElementaryTypeName","src":"9038:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7363,"mutability":"mutable","name":"end","nameLocation":"9069:3:48","nodeType":"VariableDeclaration","scope":7393,"src":"9061:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7362,"name":"uint256","nodeType":"ElementaryTypeName","src":"9061:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8999:79:48"},"returnParameters":{"id":7369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7366,"mutability":"mutable","name":"success","nameLocation":"9107:7:48","nodeType":"VariableDeclaration","scope":7393,"src":"9102:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7365,"name":"bool","nodeType":"ElementaryTypeName","src":"9102:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7368,"mutability":"mutable","name":"value","nameLocation":"9123:5:48","nodeType":"VariableDeclaration","scope":7393,"src":"9116:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7367,"name":"int256","nodeType":"ElementaryTypeName","src":"9116:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9101:28:48"},"scope":8139,"src":"8979:294:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7513,"nodeType":"Block","src":"9673:812:48","statements":[{"assignments":[7408],"declarations":[{"constant":false,"id":7408,"mutability":"mutable","name":"buffer","nameLocation":"9696:6:48","nodeType":"VariableDeclaration","scope":7513,"src":"9683:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7407,"name":"bytes","nodeType":"ElementaryTypeName","src":"9683:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7413,"initialValue":{"arguments":[{"id":7411,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7396,"src":"9711:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9705:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7409,"name":"bytes","nodeType":"ElementaryTypeName","src":"9705:5:48","typeDescriptions":{}}},"id":7412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9705:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"9683:34:48"},{"assignments":[7415],"declarations":[{"constant":false,"id":7415,"mutability":"mutable","name":"sign","nameLocation":"9781:4:48","nodeType":"VariableDeclaration","scope":7513,"src":"9774:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":7414,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9774:6:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":7431,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7416,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7398,"src":"9788:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7417,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7400,"src":"9797:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9788:12:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"arguments":[{"id":7426,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7408,"src":"9845:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7427,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7398,"src":"9853:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7425,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8138,"src":"9822:22:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":7428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9822:37:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7424,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9815:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":7423,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9815:6:48","typeDescriptions":{}}},"id":7429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9815:45:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":7430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9788:72:48","trueExpression":{"arguments":[{"hexValue":"30","id":7421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9810:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7420,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9803:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":7419,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9803:6:48","typeDescriptions":{}}},"id":7422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9803:9:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"9774:86:48"},{"assignments":[7433],"declarations":[{"constant":false,"id":7433,"mutability":"mutable","name":"positiveSign","nameLocation":"9946:12:48","nodeType":"VariableDeclaration","scope":7513,"src":"9941:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7432,"name":"bool","nodeType":"ElementaryTypeName","src":"9941:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":7440,"initialValue":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":7439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7434,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7415,"src":"9961:4:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"2b","id":7437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9976:3:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8","typeString":"literal_string \"+\""},"value":"+"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8","typeString":"literal_string \"+\""}],"id":7436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9969:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":7435,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9969:6:48","typeDescriptions":{}}},"id":7438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9969:11:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"9961:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9941:39:48"},{"assignments":[7442],"declarations":[{"constant":false,"id":7442,"mutability":"mutable","name":"negativeSign","nameLocation":"9995:12:48","nodeType":"VariableDeclaration","scope":7513,"src":"9990:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7441,"name":"bool","nodeType":"ElementaryTypeName","src":"9990:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":7449,"initialValue":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":7448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7443,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7415,"src":"10010:4:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"2d","id":7446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10025:3:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""}],"id":7445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10018:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":7444,"name":"bytes1","nodeType":"ElementaryTypeName","src":"10018:6:48","typeDescriptions":{}}},"id":7447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10018:11:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"10010:19:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9990:39:48"},{"assignments":[7451],"declarations":[{"constant":false,"id":7451,"mutability":"mutable","name":"offset","nameLocation":"10047:6:48","nodeType":"VariableDeclaration","scope":7513,"src":"10039:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7450,"name":"uint256","nodeType":"ElementaryTypeName","src":"10039:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7458,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7452,"name":"positiveSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7433,"src":"10057:12:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":7453,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7442,"src":"10073:12:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10057:28:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":7455,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10056:30:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10087:6:48","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"10056:37:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":7457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10056:39:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10039:56:48"},{"assignments":[7460,7462],"declarations":[{"constant":false,"id":7460,"mutability":"mutable","name":"absSuccess","nameLocation":"10112:10:48","nodeType":"VariableDeclaration","scope":7513,"src":"10107:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7459,"name":"bool","nodeType":"ElementaryTypeName","src":"10107:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7462,"mutability":"mutable","name":"absValue","nameLocation":"10132:8:48","nodeType":"VariableDeclaration","scope":7513,"src":"10124:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7461,"name":"uint256","nodeType":"ElementaryTypeName","src":"10124:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7470,"initialValue":{"arguments":[{"id":7464,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7396,"src":"10157:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7465,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7398,"src":"10164:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7466,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7451,"src":"10172:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10164:14:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7468,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7400,"src":"10180:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7463,"name":"tryParseUint","nodeType":"Identifier","overloadedDeclarations":[7173,7210],"referencedDeclaration":7210,"src":"10144:12:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":7469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10144:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"10106:78:48"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7471,"name":"absSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7460,"src":"10199:10:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7472,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7462,"src":"10213:8:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7473,"name":"ABS_MIN_INT256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7356,"src":"10224:14:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10213:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10199:39:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7491,"name":"absSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7460,"src":"10341:10:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":7492,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7442,"src":"10355:12:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10341:26:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7494,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7462,"src":"10371:8:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7495,"name":"ABS_MIN_INT256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7356,"src":"10383:14:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10371:26:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10341:56:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"components":[{"hexValue":"66616c7365","id":7507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10469:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":7508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10476:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":7509,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10468:10:48","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":7406,"id":7510,"nodeType":"Return","src":"10461:17:48"},"id":7511,"nodeType":"IfStatement","src":"10337:141:48","trueBody":{"id":7506,"nodeType":"Block","src":"10399:56:48","statements":[{"expression":{"components":[{"hexValue":"74727565","id":7498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10421:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"arguments":[{"id":7501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10432:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":7500,"name":"int256","nodeType":"ElementaryTypeName","src":"10432:6:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":7499,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10427:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10427:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":7503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10440:3:48","memberName":"min","nodeType":"MemberAccess","src":"10427:16:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7504,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10420:24:48","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":7406,"id":7505,"nodeType":"Return","src":"10413:31:48"}]}},"id":7512,"nodeType":"IfStatement","src":"10195:283:48","trueBody":{"id":7490,"nodeType":"Block","src":"10240:91:48","statements":[{"expression":{"components":[{"hexValue":"74727565","id":7476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10262:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"condition":{"id":7477,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7442,"src":"10268:12:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":7485,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7462,"src":"10310:8:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7484,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10303:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":7483,"name":"int256","nodeType":"ElementaryTypeName","src":"10303:6:48","typeDescriptions":{}}},"id":7486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10303:16:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10268:51:48","trueExpression":{"id":7482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"10283:17:48","subExpression":{"arguments":[{"id":7480,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7462,"src":"10291:8:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10284:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":7478,"name":"int256","nodeType":"ElementaryTypeName","src":"10284:6:48","typeDescriptions":{}}},"id":7481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10284:16:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7488,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10261:59:48","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":7406,"id":7489,"nodeType":"Return","src":"10254:66:48"}]}}]},"documentation":{"id":7394,"nodeType":"StructuredDocumentation","src":"9279:223:48","text":" @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."},"id":7514,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseIntUncheckedBounds","nameLocation":"9516:27:48","nodeType":"FunctionDefinition","parameters":{"id":7401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7396,"mutability":"mutable","name":"input","nameLocation":"9567:5:48","nodeType":"VariableDeclaration","scope":7514,"src":"9553:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7395,"name":"string","nodeType":"ElementaryTypeName","src":"9553:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7398,"mutability":"mutable","name":"begin","nameLocation":"9590:5:48","nodeType":"VariableDeclaration","scope":7514,"src":"9582:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7397,"name":"uint256","nodeType":"ElementaryTypeName","src":"9582:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7400,"mutability":"mutable","name":"end","nameLocation":"9613:3:48","nodeType":"VariableDeclaration","scope":7514,"src":"9605:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7399,"name":"uint256","nodeType":"ElementaryTypeName","src":"9605:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9543:79:48"},"returnParameters":{"id":7406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7403,"mutability":"mutable","name":"success","nameLocation":"9650:7:48","nodeType":"VariableDeclaration","scope":7514,"src":"9645:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7402,"name":"bool","nodeType":"ElementaryTypeName","src":"9645:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7405,"mutability":"mutable","name":"value","nameLocation":"9666:5:48","nodeType":"VariableDeclaration","scope":7514,"src":"9659:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7404,"name":"int256","nodeType":"ElementaryTypeName","src":"9659:6:48","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9644:28:48"},"scope":8139,"src":"9507:978:48","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":7532,"nodeType":"Block","src":"10830:67:48","statements":[{"expression":{"arguments":[{"id":7523,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"10860:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":7524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10867:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":7527,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7517,"src":"10876:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10870:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7525,"name":"bytes","nodeType":"ElementaryTypeName","src":"10870:5:48","typeDescriptions":{}}},"id":7528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10870:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10883:6:48","memberName":"length","nodeType":"MemberAccess","src":"10870:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7522,"name":"parseHexUint","nodeType":"Identifier","overloadedDeclarations":[7533,7564],"referencedDeclaration":7564,"src":"10847:12:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (uint256)"}},"id":7530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10847:43:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7521,"id":7531,"nodeType":"Return","src":"10840:50:48"}]},"documentation":{"id":7515,"nodeType":"StructuredDocumentation","src":"10491:259:48","text":" @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as a `uint256`.\n Requirements:\n - The string must be formatted as `(0x)?[0-9a-fA-F]*`\n - The result must fit in an `uint256` type."},"id":7533,"implemented":true,"kind":"function","modifiers":[],"name":"parseHexUint","nameLocation":"10764:12:48","nodeType":"FunctionDefinition","parameters":{"id":7518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7517,"mutability":"mutable","name":"input","nameLocation":"10791:5:48","nodeType":"VariableDeclaration","scope":7533,"src":"10777:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7516,"name":"string","nodeType":"ElementaryTypeName","src":"10777:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10776:21:48"},"returnParameters":{"id":7521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7520,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7533,"src":"10821:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7519,"name":"uint256","nodeType":"ElementaryTypeName","src":"10821:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10820:9:48"},"scope":8139,"src":"10755:142:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7563,"nodeType":"Block","src":"11318:156:48","statements":[{"assignments":[7546,7548],"declarations":[{"constant":false,"id":7546,"mutability":"mutable","name":"success","nameLocation":"11334:7:48","nodeType":"VariableDeclaration","scope":7563,"src":"11329:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7545,"name":"bool","nodeType":"ElementaryTypeName","src":"11329:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7548,"mutability":"mutable","name":"value","nameLocation":"11351:5:48","nodeType":"VariableDeclaration","scope":7563,"src":"11343:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7547,"name":"uint256","nodeType":"ElementaryTypeName","src":"11343:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7554,"initialValue":{"arguments":[{"id":7550,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7536,"src":"11376:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7551,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7538,"src":"11383:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7552,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7540,"src":"11390:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7549,"name":"tryParseHexUint","nodeType":"Identifier","overloadedDeclarations":[7585,7622],"referencedDeclaration":7622,"src":"11360:15:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":7553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11360:34:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11328:66:48"},{"condition":{"id":7556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11408:8:48","subExpression":{"id":7555,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7546,"src":"11409:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7560,"nodeType":"IfStatement","src":"11404:41:48","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7557,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6800,"src":"11425:18:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11425:20:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7559,"nodeType":"RevertStatement","src":"11418:27:48"}},{"expression":{"id":7561,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7548,"src":"11462:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7544,"id":7562,"nodeType":"Return","src":"11455:12:48"}]},"documentation":{"id":7534,"nodeType":"StructuredDocumentation","src":"10903:307:48","text":" @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `(0x)?[0-9a-fA-F]*`\n - The result must fit in an `uint256` type."},"id":7564,"implemented":true,"kind":"function","modifiers":[],"name":"parseHexUint","nameLocation":"11224:12:48","nodeType":"FunctionDefinition","parameters":{"id":7541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7536,"mutability":"mutable","name":"input","nameLocation":"11251:5:48","nodeType":"VariableDeclaration","scope":7564,"src":"11237:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7535,"name":"string","nodeType":"ElementaryTypeName","src":"11237:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7538,"mutability":"mutable","name":"begin","nameLocation":"11266:5:48","nodeType":"VariableDeclaration","scope":7564,"src":"11258:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7537,"name":"uint256","nodeType":"ElementaryTypeName","src":"11258:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7540,"mutability":"mutable","name":"end","nameLocation":"11281:3:48","nodeType":"VariableDeclaration","scope":7564,"src":"11273:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7539,"name":"uint256","nodeType":"ElementaryTypeName","src":"11273:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11236:49:48"},"returnParameters":{"id":7544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7543,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7564,"src":"11309:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7542,"name":"uint256","nodeType":"ElementaryTypeName","src":"11309:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11308:9:48"},"scope":8139,"src":"11215:259:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7584,"nodeType":"Block","src":"11801:86:48","statements":[{"expression":{"arguments":[{"id":7575,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"11850:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":7576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11857:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":7579,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7567,"src":"11866:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11860:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7577,"name":"bytes","nodeType":"ElementaryTypeName","src":"11860:5:48","typeDescriptions":{}}},"id":7580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11860:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11873:6:48","memberName":"length","nodeType":"MemberAccess","src":"11860:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7574,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"11818:31:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":7582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11818:62:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":7573,"id":7583,"nodeType":"Return","src":"11811:69:48"}]},"documentation":{"id":7565,"nodeType":"StructuredDocumentation","src":"11480:218:48","text":" @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":7585,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseHexUint","nameLocation":"11712:15:48","nodeType":"FunctionDefinition","parameters":{"id":7568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7567,"mutability":"mutable","name":"input","nameLocation":"11742:5:48","nodeType":"VariableDeclaration","scope":7585,"src":"11728:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7566,"name":"string","nodeType":"ElementaryTypeName","src":"11728:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"11727:21:48"},"returnParameters":{"id":7573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7570,"mutability":"mutable","name":"success","nameLocation":"11777:7:48","nodeType":"VariableDeclaration","scope":7585,"src":"11772:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7569,"name":"bool","nodeType":"ElementaryTypeName","src":"11772:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7572,"mutability":"mutable","name":"value","nameLocation":"11794:5:48","nodeType":"VariableDeclaration","scope":7585,"src":"11786:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7571,"name":"uint256","nodeType":"ElementaryTypeName","src":"11786:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11771:29:48"},"scope":8139,"src":"11703:184:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7621,"nodeType":"Block","src":"12295:147:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7599,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7592,"src":"12309:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7602,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7588,"src":"12321:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12315:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7600,"name":"bytes","nodeType":"ElementaryTypeName","src":"12315:5:48","typeDescriptions":{}}},"id":7603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12315:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12328:6:48","memberName":"length","nodeType":"MemberAccess","src":"12315:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12309:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7606,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7590,"src":"12338:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7607,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7592,"src":"12346:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12338:11:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12309:40:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7614,"nodeType":"IfStatement","src":"12305:63:48","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":7610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12359:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":7611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12366:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":7612,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"12358:10:48","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":7598,"id":7613,"nodeType":"Return","src":"12351:17:48"}},{"expression":{"arguments":[{"id":7616,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7588,"src":"12417:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7617,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7590,"src":"12424:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7618,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7592,"src":"12431:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7615,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"12385:31:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":7619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12385:50:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":7598,"id":7620,"nodeType":"Return","src":"12378:57:48"}]},"documentation":{"id":7586,"nodeType":"StructuredDocumentation","src":"11893:241:48","text":" @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an\n invalid character.\n NOTE: This function will revert if the result does not fit in a `uint256`."},"id":7622,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseHexUint","nameLocation":"12148:15:48","nodeType":"FunctionDefinition","parameters":{"id":7593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7588,"mutability":"mutable","name":"input","nameLocation":"12187:5:48","nodeType":"VariableDeclaration","scope":7622,"src":"12173:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7587,"name":"string","nodeType":"ElementaryTypeName","src":"12173:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7590,"mutability":"mutable","name":"begin","nameLocation":"12210:5:48","nodeType":"VariableDeclaration","scope":7622,"src":"12202:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7589,"name":"uint256","nodeType":"ElementaryTypeName","src":"12202:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7592,"mutability":"mutable","name":"end","nameLocation":"12233:3:48","nodeType":"VariableDeclaration","scope":7622,"src":"12225:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7591,"name":"uint256","nodeType":"ElementaryTypeName","src":"12225:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12163:79:48"},"returnParameters":{"id":7598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7595,"mutability":"mutable","name":"success","nameLocation":"12271:7:48","nodeType":"VariableDeclaration","scope":7622,"src":"12266:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7594,"name":"bool","nodeType":"ElementaryTypeName","src":"12266:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7597,"mutability":"mutable","name":"value","nameLocation":"12288:5:48","nodeType":"VariableDeclaration","scope":7622,"src":"12280:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7596,"name":"uint256","nodeType":"ElementaryTypeName","src":"12280:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12265:29:48"},"scope":8139,"src":"12139:303:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7724,"nodeType":"Block","src":"12851:881:48","statements":[{"assignments":[7637],"declarations":[{"constant":false,"id":7637,"mutability":"mutable","name":"buffer","nameLocation":"12874:6:48","nodeType":"VariableDeclaration","scope":7724,"src":"12861:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7636,"name":"bytes","nodeType":"ElementaryTypeName","src":"12861:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7642,"initialValue":{"arguments":[{"id":7640,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7625,"src":"12889:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7639,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12883:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7638,"name":"bytes","nodeType":"ElementaryTypeName","src":"12883:5:48","typeDescriptions":{}}},"id":7641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12883:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"12861:34:48"},{"assignments":[7644],"declarations":[{"constant":false,"id":7644,"mutability":"mutable","name":"hasPrefix","nameLocation":"12948:9:48","nodeType":"VariableDeclaration","scope":7724,"src":"12943:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7643,"name":"bool","nodeType":"ElementaryTypeName","src":"12943:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":7664,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7645,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7629,"src":"12961:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7646,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7627,"src":"12967:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12975:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12967:9:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12961:15:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":7650,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12960:17:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":7662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":7654,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7637,"src":"13011:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7655,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7627,"src":"13019:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7653,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8138,"src":"12988:22:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":7656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12988:37:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12981:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":7651,"name":"bytes2","nodeType":"ElementaryTypeName","src":"12981:6:48","typeDescriptions":{}}},"id":7657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12981:45:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"3078","id":7660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13037:4:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"id":7659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13030:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":7658,"name":"bytes2","nodeType":"ElementaryTypeName","src":"13030:6:48","typeDescriptions":{}}},"id":7661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13030:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"src":"12981:61:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12960:82:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"12943:99:48"},{"assignments":[7666],"declarations":[{"constant":false,"id":7666,"mutability":"mutable","name":"offset","nameLocation":"13131:6:48","nodeType":"VariableDeclaration","scope":7724,"src":"13123:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7665,"name":"uint256","nodeType":"ElementaryTypeName","src":"13123:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7672,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7667,"name":"hasPrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7644,"src":"13140:9:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13150:6:48","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"13140:16:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":7669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13140:18:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":7670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13161:1:48","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"13140:22:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13123:39:48"},{"assignments":[7674],"declarations":[{"constant":false,"id":7674,"mutability":"mutable","name":"result","nameLocation":"13181:6:48","nodeType":"VariableDeclaration","scope":7724,"src":"13173:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7673,"name":"uint256","nodeType":"ElementaryTypeName","src":"13173:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7676,"initialValue":{"hexValue":"30","id":7675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13190:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13173:18:48"},{"body":{"id":7718,"nodeType":"Block","src":"13248:447:48","statements":[{"assignments":[7690],"declarations":[{"constant":false,"id":7690,"mutability":"mutable","name":"chr","nameLocation":"13268:3:48","nodeType":"VariableDeclaration","scope":7718,"src":"13262:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7689,"name":"uint8","nodeType":"ElementaryTypeName","src":"13262:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":7700,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":7695,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7637,"src":"13317:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7696,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7678,"src":"13325:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7694,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8138,"src":"13294:22:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":7697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13294:33:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13287:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":7692,"name":"bytes1","nodeType":"ElementaryTypeName","src":"13287:6:48","typeDescriptions":{}}},"id":7698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13287:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":7691,"name":"_tryParseChr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7960,"src":"13274:12:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$","typeString":"function (bytes1) pure returns (uint8)"}},"id":7699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13274:55:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"13262:67:48"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7701,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7690,"src":"13347:3:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3135","id":7702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13353:2:48","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"13347:8:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7708,"nodeType":"IfStatement","src":"13343:31:48","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":7704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13365:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":7705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13372:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":7706,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"13364:10:48","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":7635,"id":7707,"nodeType":"Return","src":"13357:17:48"}},{"expression":{"id":7711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7709,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7674,"src":"13388:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"3136","id":7710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13398:2:48","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13388:12:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7712,"nodeType":"ExpressionStatement","src":"13388:12:48"},{"id":7717,"nodeType":"UncheckedBlock","src":"13414:271:48","statements":[{"expression":{"id":7715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7713,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7674,"src":"13657:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":7714,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7690,"src":"13667:3:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13657:13:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7716,"nodeType":"ExpressionStatement","src":"13657:13:48"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7683,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7678,"src":"13234:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":7684,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7629,"src":"13238:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13234:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7719,"initializationExpression":{"assignments":[7678],"declarations":[{"constant":false,"id":7678,"mutability":"mutable","name":"i","nameLocation":"13214:1:48","nodeType":"VariableDeclaration","scope":7719,"src":"13206:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7677,"name":"uint256","nodeType":"ElementaryTypeName","src":"13206:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7682,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7679,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7627,"src":"13218:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7680,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7666,"src":"13226:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13218:14:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13206:26:48"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":7687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"13243:3:48","subExpression":{"id":7686,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7678,"src":"13245:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7688,"nodeType":"ExpressionStatement","src":"13243:3:48"},"nodeType":"ForStatement","src":"13201:494:48"},{"expression":{"components":[{"hexValue":"74727565","id":7720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13712:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":7721,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7674,"src":"13718:6:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7722,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13711:14:48","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":7635,"id":7723,"nodeType":"Return","src":"13704:21:48"}]},"documentation":{"id":7623,"nodeType":"StructuredDocumentation","src":"12448:227:48","text":" @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\n `begin <= end <= input.length`. Other inputs would result in undefined behavior."},"id":7725,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseHexUintUncheckedBounds","nameLocation":"12689:31:48","nodeType":"FunctionDefinition","parameters":{"id":7630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7625,"mutability":"mutable","name":"input","nameLocation":"12744:5:48","nodeType":"VariableDeclaration","scope":7725,"src":"12730:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7624,"name":"string","nodeType":"ElementaryTypeName","src":"12730:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7627,"mutability":"mutable","name":"begin","nameLocation":"12767:5:48","nodeType":"VariableDeclaration","scope":7725,"src":"12759:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7626,"name":"uint256","nodeType":"ElementaryTypeName","src":"12759:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7629,"mutability":"mutable","name":"end","nameLocation":"12790:3:48","nodeType":"VariableDeclaration","scope":7725,"src":"12782:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7628,"name":"uint256","nodeType":"ElementaryTypeName","src":"12782:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12720:79:48"},"returnParameters":{"id":7635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7632,"mutability":"mutable","name":"success","nameLocation":"12827:7:48","nodeType":"VariableDeclaration","scope":7725,"src":"12822:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7631,"name":"bool","nodeType":"ElementaryTypeName","src":"12822:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7634,"mutability":"mutable","name":"value","nameLocation":"12844:5:48","nodeType":"VariableDeclaration","scope":7725,"src":"12836:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7633,"name":"uint256","nodeType":"ElementaryTypeName","src":"12836:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12821:29:48"},"scope":8139,"src":"12680:1052:48","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":7743,"nodeType":"Block","src":"14030:67:48","statements":[{"expression":{"arguments":[{"id":7734,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7728,"src":"14060:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":7735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14067:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":7738,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7728,"src":"14076:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14070:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7736,"name":"bytes","nodeType":"ElementaryTypeName","src":"14070:5:48","typeDescriptions":{}}},"id":7739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14070:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14083:6:48","memberName":"length","nodeType":"MemberAccess","src":"14070:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7733,"name":"parseAddress","nodeType":"Identifier","overloadedDeclarations":[7744,7775],"referencedDeclaration":7775,"src":"14047:12:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_address_$","typeString":"function (string memory,uint256,uint256) pure returns (address)"}},"id":7741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14047:43:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7732,"id":7742,"nodeType":"Return","src":"14040:50:48"}]},"documentation":{"id":7726,"nodeType":"StructuredDocumentation","src":"13738:212:48","text":" @dev Parse a hexadecimal string (with or without \"0x\" prefix), and returns the value as an `address`.\n Requirements:\n - The string must be formatted as `(0x)?[0-9a-fA-F]{40}`"},"id":7744,"implemented":true,"kind":"function","modifiers":[],"name":"parseAddress","nameLocation":"13964:12:48","nodeType":"FunctionDefinition","parameters":{"id":7729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7728,"mutability":"mutable","name":"input","nameLocation":"13991:5:48","nodeType":"VariableDeclaration","scope":7744,"src":"13977:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7727,"name":"string","nodeType":"ElementaryTypeName","src":"13977:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13976:21:48"},"returnParameters":{"id":7732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7731,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7744,"src":"14021:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7730,"name":"address","nodeType":"ElementaryTypeName","src":"14021:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14020:9:48"},"scope":8139,"src":"13955:142:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7774,"nodeType":"Block","src":"14470:165:48","statements":[{"assignments":[7757,7759],"declarations":[{"constant":false,"id":7757,"mutability":"mutable","name":"success","nameLocation":"14486:7:48","nodeType":"VariableDeclaration","scope":7774,"src":"14481:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7756,"name":"bool","nodeType":"ElementaryTypeName","src":"14481:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7759,"mutability":"mutable","name":"value","nameLocation":"14503:5:48","nodeType":"VariableDeclaration","scope":7774,"src":"14495:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7758,"name":"address","nodeType":"ElementaryTypeName","src":"14495:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7765,"initialValue":{"arguments":[{"id":7761,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7747,"src":"14528:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7762,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7749,"src":"14535:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7763,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7751,"src":"14542:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7760,"name":"tryParseAddress","nodeType":"Identifier","overloadedDeclarations":[7796,7900],"referencedDeclaration":7900,"src":"14512:15:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_address_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,address)"}},"id":7764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14512:34:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"nodeType":"VariableDeclarationStatement","src":"14480:66:48"},{"condition":{"id":7767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14560:8:48","subExpression":{"id":7766,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7757,"src":"14561:7:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7771,"nodeType":"IfStatement","src":"14556:50:48","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":7768,"name":"StringsInvalidAddressFormat","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6803,"src":"14577:27:48","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":7769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14577:29:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":7770,"nodeType":"RevertStatement","src":"14570:36:48"}},{"expression":{"id":7772,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7759,"src":"14623:5:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7755,"id":7773,"nodeType":"Return","src":"14616:12:48"}]},"documentation":{"id":7745,"nodeType":"StructuredDocumentation","src":"14103:259:48","text":" @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and\n `end` (excluded).\n Requirements:\n - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}`"},"id":7775,"implemented":true,"kind":"function","modifiers":[],"name":"parseAddress","nameLocation":"14376:12:48","nodeType":"FunctionDefinition","parameters":{"id":7752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7747,"mutability":"mutable","name":"input","nameLocation":"14403:5:48","nodeType":"VariableDeclaration","scope":7775,"src":"14389:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7746,"name":"string","nodeType":"ElementaryTypeName","src":"14389:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7749,"mutability":"mutable","name":"begin","nameLocation":"14418:5:48","nodeType":"VariableDeclaration","scope":7775,"src":"14410:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7748,"name":"uint256","nodeType":"ElementaryTypeName","src":"14410:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7751,"mutability":"mutable","name":"end","nameLocation":"14433:3:48","nodeType":"VariableDeclaration","scope":7775,"src":"14425:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7750,"name":"uint256","nodeType":"ElementaryTypeName","src":"14425:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14388:49:48"},"returnParameters":{"id":7755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7754,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7775,"src":"14461:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7753,"name":"address","nodeType":"ElementaryTypeName","src":"14461:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14460:9:48"},"scope":8139,"src":"14367:268:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7795,"nodeType":"Block","src":"14942:70:48","statements":[{"expression":{"arguments":[{"id":7786,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7778,"src":"14975:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":7787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14982:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":7790,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7778,"src":"14991:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7789,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14985:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7788,"name":"bytes","nodeType":"ElementaryTypeName","src":"14985:5:48","typeDescriptions":{}}},"id":7791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14985:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14998:6:48","memberName":"length","nodeType":"MemberAccess","src":"14985:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7785,"name":"tryParseAddress","nodeType":"Identifier","overloadedDeclarations":[7796,7900],"referencedDeclaration":7900,"src":"14959:15:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_address_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,address)"}},"id":7793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14959:46:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":7784,"id":7794,"nodeType":"Return","src":"14952:53:48"}]},"documentation":{"id":7776,"nodeType":"StructuredDocumentation","src":"14641:198:48","text":" @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly\n formatted address. See {parseAddress-string} requirements."},"id":7796,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseAddress","nameLocation":"14853:15:48","nodeType":"FunctionDefinition","parameters":{"id":7779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7778,"mutability":"mutable","name":"input","nameLocation":"14883:5:48","nodeType":"VariableDeclaration","scope":7796,"src":"14869:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7777,"name":"string","nodeType":"ElementaryTypeName","src":"14869:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14868:21:48"},"returnParameters":{"id":7784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7781,"mutability":"mutable","name":"success","nameLocation":"14918:7:48","nodeType":"VariableDeclaration","scope":7796,"src":"14913:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7780,"name":"bool","nodeType":"ElementaryTypeName","src":"14913:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7783,"mutability":"mutable","name":"value","nameLocation":"14935:5:48","nodeType":"VariableDeclaration","scope":7796,"src":"14927:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7782,"name":"address","nodeType":"ElementaryTypeName","src":"14927:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14912:29:48"},"scope":8139,"src":"14844:168:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7899,"nodeType":"Block","src":"15405:733:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7810,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7803,"src":"15419:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":7813,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7799,"src":"15431:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15425:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7811,"name":"bytes","nodeType":"ElementaryTypeName","src":"15425:5:48","typeDescriptions":{}}},"id":7814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15425:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15438:6:48","memberName":"length","nodeType":"MemberAccess","src":"15425:19:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15419:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7817,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7801,"src":"15448:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7818,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7803,"src":"15456:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15448:11:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15419:40:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7828,"nodeType":"IfStatement","src":"15415:72:48","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":7821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15469:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":7824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15484:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15476:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7822,"name":"address","nodeType":"ElementaryTypeName","src":"15476:7:48","typeDescriptions":{}}},"id":7825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15476:10:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":7826,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"15468:19:48","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":7809,"id":7827,"nodeType":"Return","src":"15461:26:48"}},{"assignments":[7830],"declarations":[{"constant":false,"id":7830,"mutability":"mutable","name":"hasPrefix","nameLocation":"15503:9:48","nodeType":"VariableDeclaration","scope":7899,"src":"15498:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7829,"name":"bool","nodeType":"ElementaryTypeName","src":"15498:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":7853,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7831,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7803,"src":"15516:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7832,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7801,"src":"15522:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15530:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15522:9:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15516:15:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":7836,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15515:17:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":7851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":7842,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7799,"src":"15572:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7841,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15566:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7840,"name":"bytes","nodeType":"ElementaryTypeName","src":"15566:5:48","typeDescriptions":{}}},"id":7843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15566:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7844,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7801,"src":"15580:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7839,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8138,"src":"15543:22:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":7845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15543:43:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15536:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":7837,"name":"bytes2","nodeType":"ElementaryTypeName","src":"15536:6:48","typeDescriptions":{}}},"id":7846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15536:51:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"3078","id":7849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15598:4:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"id":7848,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15591:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":7847,"name":"bytes2","nodeType":"ElementaryTypeName","src":"15591:6:48","typeDescriptions":{}}},"id":7850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15591:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"src":"15536:67:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15515:88:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"15498:105:48"},{"assignments":[7855],"declarations":[{"constant":false,"id":7855,"mutability":"mutable","name":"expectedLength","nameLocation":"15692:14:48","nodeType":"VariableDeclaration","scope":7899,"src":"15684:22:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7854,"name":"uint256","nodeType":"ElementaryTypeName","src":"15684:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7863,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3430","id":7856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15709:2:48","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":7857,"name":"hasPrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7830,"src":"15714:9:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15724:6:48","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"15714:16:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":7859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15714:18:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":7860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15735:1:48","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15714:22:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15709:27:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15684:52:48"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7864,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7803,"src":"15801:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":7865,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7801,"src":"15807:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15801:11:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":7867,"name":"expectedLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7855,"src":"15816:14:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15801:29:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7897,"nodeType":"Block","src":"16081:51:48","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":7890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16103:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":7893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16118:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16110:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7891,"name":"address","nodeType":"ElementaryTypeName","src":"16110:7:48","typeDescriptions":{}}},"id":7894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16110:10:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":7895,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16102:19:48","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":7809,"id":7896,"nodeType":"Return","src":"16095:26:48"}]},"id":7898,"nodeType":"IfStatement","src":"15797:335:48","trueBody":{"id":7889,"nodeType":"Block","src":"15832:243:48","statements":[{"assignments":[7870,7872],"declarations":[{"constant":false,"id":7870,"mutability":"mutable","name":"s","nameLocation":"15953:1:48","nodeType":"VariableDeclaration","scope":7889,"src":"15948:6:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7869,"name":"bool","nodeType":"ElementaryTypeName","src":"15948:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7872,"mutability":"mutable","name":"v","nameLocation":"15964:1:48","nodeType":"VariableDeclaration","scope":7889,"src":"15956:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7871,"name":"uint256","nodeType":"ElementaryTypeName","src":"15956:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7878,"initialValue":{"arguments":[{"id":7874,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7799,"src":"16001:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":7875,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7801,"src":"16008:5:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7876,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7803,"src":"16015:3:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7873,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7725,"src":"15969:31:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (string memory,uint256,uint256) pure returns (bool,uint256)"}},"id":7877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15969:50:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"15947:72:48"},{"expression":{"components":[{"id":7879,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7870,"src":"16041:1:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"arguments":[{"id":7884,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7872,"src":"16060:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16052:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":7882,"name":"uint160","nodeType":"ElementaryTypeName","src":"16052:7:48","typeDescriptions":{}}},"id":7885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16052:10:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":7881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16044:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7880,"name":"address","nodeType":"ElementaryTypeName","src":"16044:7:48","typeDescriptions":{}}},"id":7886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16044:19:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":7887,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16040:24:48","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":7809,"id":7888,"nodeType":"Return","src":"16033:31:48"}]}}]},"documentation":{"id":7797,"nodeType":"StructuredDocumentation","src":"15018:226:48","text":" @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly\n formatted address. See {parseAddress-string-uint256-uint256} requirements."},"id":7900,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseAddress","nameLocation":"15258:15:48","nodeType":"FunctionDefinition","parameters":{"id":7804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7799,"mutability":"mutable","name":"input","nameLocation":"15297:5:48","nodeType":"VariableDeclaration","scope":7900,"src":"15283:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7798,"name":"string","nodeType":"ElementaryTypeName","src":"15283:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7801,"mutability":"mutable","name":"begin","nameLocation":"15320:5:48","nodeType":"VariableDeclaration","scope":7900,"src":"15312:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7800,"name":"uint256","nodeType":"ElementaryTypeName","src":"15312:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7803,"mutability":"mutable","name":"end","nameLocation":"15343:3:48","nodeType":"VariableDeclaration","scope":7900,"src":"15335:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7802,"name":"uint256","nodeType":"ElementaryTypeName","src":"15335:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15273:79:48"},"returnParameters":{"id":7809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7806,"mutability":"mutable","name":"success","nameLocation":"15381:7:48","nodeType":"VariableDeclaration","scope":7900,"src":"15376:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7805,"name":"bool","nodeType":"ElementaryTypeName","src":"15376:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7808,"mutability":"mutable","name":"value","nameLocation":"15398:5:48","nodeType":"VariableDeclaration","scope":7900,"src":"15390:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7807,"name":"address","nodeType":"ElementaryTypeName","src":"15390:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15375:29:48"},"scope":8139,"src":"15249:889:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7959,"nodeType":"Block","src":"16207:461:48","statements":[{"assignments":[7908],"declarations":[{"constant":false,"id":7908,"mutability":"mutable","name":"value","nameLocation":"16223:5:48","nodeType":"VariableDeclaration","scope":7959,"src":"16217:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7907,"name":"uint8","nodeType":"ElementaryTypeName","src":"16217:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":7913,"initialValue":{"arguments":[{"id":7911,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7902,"src":"16237:3:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":7910,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16231:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":7909,"name":"uint8","nodeType":"ElementaryTypeName","src":"16231:5:48","typeDescriptions":{}}},"id":7912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16231:10:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"16217:24:48"},{"id":7956,"nodeType":"UncheckedBlock","src":"16401:238:48","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7914,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"16429:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3437","id":7915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16437:2:48","typeDescriptions":{"typeIdentifier":"t_rational_47_by_1","typeString":"int_const 47"},"value":"47"},"src":"16429:10:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7917,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"16443:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3538","id":7918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16451:2:48","typeDescriptions":{"typeIdentifier":"t_rational_58_by_1","typeString":"int_const 58"},"value":"58"},"src":"16443:10:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16429:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7925,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"16489:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3936","id":7926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16497:2:48","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"16489:10:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7928,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"16503:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"313033","id":7929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16511:3:48","typeDescriptions":{"typeIdentifier":"t_rational_103_by_1","typeString":"int_const 103"},"value":"103"},"src":"16503:11:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16489:25:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7936,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"16550:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3634","id":7937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16558:2:48","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"16550:10:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7939,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"16564:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3731","id":7940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16572:2:48","typeDescriptions":{"typeIdentifier":"t_rational_71_by_1","typeString":"int_const 71"},"value":"71"},"src":"16564:10:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16550:24:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"expression":{"arguments":[{"id":7949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16618:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":7948,"name":"uint8","nodeType":"ElementaryTypeName","src":"16618:5:48","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":7947,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16613:4:48","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":7950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16613:11:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":7951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16625:3:48","memberName":"max","nodeType":"MemberAccess","src":"16613:15:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":7906,"id":7952,"nodeType":"Return","src":"16606:22:48"},"id":7953,"nodeType":"IfStatement","src":"16546:82:48","trueBody":{"expression":{"id":7945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7943,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"16576:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3535","id":7944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16585:2:48","typeDescriptions":{"typeIdentifier":"t_rational_55_by_1","typeString":"int_const 55"},"value":"55"},"src":"16576:11:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7946,"nodeType":"ExpressionStatement","src":"16576:11:48"}},"id":7954,"nodeType":"IfStatement","src":"16485:143:48","trueBody":{"expression":{"id":7934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7932,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"16516:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3837","id":7933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16525:2:48","typeDescriptions":{"typeIdentifier":"t_rational_87_by_1","typeString":"int_const 87"},"value":"87"},"src":"16516:11:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7935,"nodeType":"ExpressionStatement","src":"16516:11:48"}},"id":7955,"nodeType":"IfStatement","src":"16425:203:48","trueBody":{"expression":{"id":7923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7921,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"16455:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3438","id":7922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16464:2:48","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"src":"16455:11:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7924,"nodeType":"ExpressionStatement","src":"16455:11:48"}}]},{"expression":{"id":7957,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7908,"src":"16656:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":7906,"id":7958,"nodeType":"Return","src":"16649:12:48"}]},"id":7960,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseChr","nameLocation":"16153:12:48","nodeType":"FunctionDefinition","parameters":{"id":7903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7902,"mutability":"mutable","name":"chr","nameLocation":"16173:3:48","nodeType":"VariableDeclaration","scope":7960,"src":"16166:10:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":7901,"name":"bytes1","nodeType":"ElementaryTypeName","src":"16166:6:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"src":"16165:12:48"},"returnParameters":{"id":7906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7905,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7960,"src":"16200:5:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7904,"name":"uint8","nodeType":"ElementaryTypeName","src":"16200:5:48","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16199:7:48"},"scope":8139,"src":"16144:524:48","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":8125,"nodeType":"Block","src":"17334:1331:48","statements":[{"assignments":[7969],"declarations":[{"constant":false,"id":7969,"mutability":"mutable","name":"buffer","nameLocation":"17357:6:48","nodeType":"VariableDeclaration","scope":8125,"src":"17344:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7968,"name":"bytes","nodeType":"ElementaryTypeName","src":"17344:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7974,"initialValue":{"arguments":[{"id":7972,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7963,"src":"17372:5:48","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7971,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17366:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7970,"name":"bytes","nodeType":"ElementaryTypeName","src":"17366:5:48","typeDescriptions":{}}},"id":7973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17366:12:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"17344:34:48"},{"assignments":[7976],"declarations":[{"constant":false,"id":7976,"mutability":"mutable","name":"output","nameLocation":"17401:6:48","nodeType":"VariableDeclaration","scope":8125,"src":"17388:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7975,"name":"bytes","nodeType":"ElementaryTypeName","src":"17388:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":7984,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":7979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17420:1:48","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":7980,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"17424:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17431:6:48","memberName":"length","nodeType":"MemberAccess","src":"17424:13:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17420:17:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7978,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17410:9:48","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":7977,"name":"bytes","nodeType":"ElementaryTypeName","src":"17414:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":7983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17410:28:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"17388:50:48"},{"assignments":[7986],"declarations":[{"constant":false,"id":7986,"mutability":"mutable","name":"outputLength","nameLocation":"17479:12:48","nodeType":"VariableDeclaration","scope":8125,"src":"17471:20:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7985,"name":"uint256","nodeType":"ElementaryTypeName","src":"17471:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7988,"initialValue":{"hexValue":"30","id":7987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17494:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17471:24:48"},{"body":{"id":8117,"nodeType":"Block","src":"17546:854:48","statements":[{"assignments":[8000],"declarations":[{"constant":false,"id":8000,"mutability":"mutable","name":"char","nameLocation":"17567:4:48","nodeType":"VariableDeclaration","scope":8117,"src":"17560:11:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":7999,"name":"bytes1","nodeType":"ElementaryTypeName","src":"17560:6:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":8008,"initialValue":{"arguments":[{"arguments":[{"id":8004,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"17604:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":8005,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7990,"src":"17612:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8003,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8138,"src":"17581:22:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":8006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17581:33:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17574:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":8001,"name":"bytes1","nodeType":"ElementaryTypeName","src":"17574:6:48","typeDescriptions":{}}},"id":8007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17574:41:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"17560:55:48"},{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8009,"name":"SPECIAL_CHARS_LOOKUP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6790,"src":"17635:20:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":8010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17659:1:48","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"arguments":[{"id":8013,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8000,"src":"17670:4:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":8012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17664:5:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":8011,"name":"uint8","nodeType":"ElementaryTypeName","src":"17664:5:48","typeDescriptions":{}}},"id":8014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17664:11:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"17659:16:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8016,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17658:18:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17635:41:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8018,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17634:43:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17681:1:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17634:48:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8021,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17633:50:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8115,"nodeType":"Block","src":"18328:62:48","statements":[{"expression":{"id":8113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8108,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7976,"src":"18346:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8111,"indexExpression":{"id":8110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18353:14:48","subExpression":{"id":8109,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"18353:12:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18346:22:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8112,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8000,"src":"18371:4:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"18346:29:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":8114,"nodeType":"ExpressionStatement","src":"18346:29:48"}]},"id":8116,"nodeType":"IfStatement","src":"17629:761:48","trueBody":{"id":8107,"nodeType":"Block","src":"17685:637:48","statements":[{"expression":{"id":8027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8022,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7976,"src":"17703:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8025,"indexExpression":{"id":8024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17710:14:48","subExpression":{"id":8023,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"17710:12:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17703:22:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"5c","id":8026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17728:4:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""},"value":"\\"},"src":"17703:29:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":8028,"nodeType":"ExpressionStatement","src":"17703:29:48"},{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":8031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8029,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8000,"src":"17754:4:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783038","id":8030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17762:4:48","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"17754:12:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":8041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8039,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8000,"src":"17823:4:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783039","id":8040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17831:4:48","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"0x09"},"src":"17823:12:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":8051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8049,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8000,"src":"17892:4:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783061","id":8050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17900:4:48","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"0x0a"},"src":"17892:12:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":8061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8059,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8000,"src":"17961:4:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783063","id":8060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17969:4:48","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"17961:12:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":8071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8069,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8000,"src":"18030:4:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783064","id":8070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18038:4:48","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"0x0d"},"src":"18030:12:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":8081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8079,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8000,"src":"18099:4:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783563","id":8080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18107:4:48","typeDescriptions":{"typeIdentifier":"t_rational_92_by_1","typeString":"int_const 92"},"value":"0x5c"},"src":"18099:12:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":8091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8089,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8000,"src":"18169:4:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783232","id":8090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18177:4:48","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"src":"18169:12:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8100,"nodeType":"IfStatement","src":"18165:143:48","trueBody":{"id":8099,"nodeType":"Block","src":"18183:125:48","statements":[{"expression":{"id":8097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8092,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7976,"src":"18261:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8095,"indexExpression":{"id":8094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18268:14:48","subExpression":{"id":8093,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"18268:12:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18261:22:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"22","id":8096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18286:3:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0","typeString":"literal_string \"\"\""},"value":"\""},"src":"18261:28:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":8098,"nodeType":"ExpressionStatement","src":"18261:28:48"}]}},"id":8101,"nodeType":"IfStatement","src":"18095:213:48","trueBody":{"expression":{"id":8087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8082,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7976,"src":"18113:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8085,"indexExpression":{"id":8084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18120:14:48","subExpression":{"id":8083,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"18120:12:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18113:22:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"5c","id":8086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18138:4:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""},"value":"\\"},"src":"18113:29:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":8088,"nodeType":"ExpressionStatement","src":"18113:29:48"}},"id":8102,"nodeType":"IfStatement","src":"18026:282:48","trueBody":{"expression":{"id":8077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8072,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7976,"src":"18044:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8075,"indexExpression":{"id":8074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18051:14:48","subExpression":{"id":8073,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"18051:12:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18044:22:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"72","id":8076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18069:3:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_414f72a4d550cad29f17d9d99a4af64b3776ec5538cd440cef0f03fef2e9e010","typeString":"literal_string \"r\""},"value":"r"},"src":"18044:28:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":8078,"nodeType":"ExpressionStatement","src":"18044:28:48"}},"id":8103,"nodeType":"IfStatement","src":"17957:351:48","trueBody":{"expression":{"id":8067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8062,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7976,"src":"17975:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8065,"indexExpression":{"id":8064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17982:14:48","subExpression":{"id":8063,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"17982:12:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17975:22:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66","id":8066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18000:3:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_d1e8aeb79500496ef3dc2e57ba746a8315d048b7a664a2bf948db4fa91960483","typeString":"literal_string \"f\""},"value":"f"},"src":"17975:28:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":8068,"nodeType":"ExpressionStatement","src":"17975:28:48"}},"id":8104,"nodeType":"IfStatement","src":"17888:420:48","trueBody":{"expression":{"id":8057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8052,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7976,"src":"17906:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8055,"indexExpression":{"id":8054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17913:14:48","subExpression":{"id":8053,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"17913:12:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17906:22:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"6e","id":8056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17931:3:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_4b4ecedb4964a40fe416b16c7bd8b46092040ec42ef0aa69e59f09872f105cf3","typeString":"literal_string \"n\""},"value":"n"},"src":"17906:28:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":8058,"nodeType":"ExpressionStatement","src":"17906:28:48"}},"id":8105,"nodeType":"IfStatement","src":"17819:489:48","trueBody":{"expression":{"id":8047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8042,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7976,"src":"17837:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8045,"indexExpression":{"id":8044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17844:14:48","subExpression":{"id":8043,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"17844:12:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17837:22:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74","id":8046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17862:3:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_cac1bb71f0a97c8ac94ca9546b43178a9ad254c7b757ac07433aa6df35cd8089","typeString":"literal_string \"t\""},"value":"t"},"src":"17837:28:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":8048,"nodeType":"ExpressionStatement","src":"17837:28:48"}},"id":8106,"nodeType":"IfStatement","src":"17750:558:48","trueBody":{"expression":{"id":8037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8032,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7976,"src":"17768:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8035,"indexExpression":{"id":8034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17775:14:48","subExpression":{"id":8033,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7986,"src":"17775:12:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17768:22:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"62","id":8036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17793:3:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510","typeString":"literal_string \"b\""},"value":"b"},"src":"17768:28:48","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":8038,"nodeType":"ExpressionStatement","src":"17768:28:48"}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7992,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7990,"src":"17522:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":7993,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7969,"src":"17526:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17533:6:48","memberName":"length","nodeType":"MemberAccess","src":"17526:13:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17522:17:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8118,"initializationExpression":{"assignments":[7990],"declarations":[{"constant":false,"id":7990,"mutability":"mutable","name":"i","nameLocation":"17519:1:48","nodeType":"VariableDeclaration","scope":8118,"src":"17511:9:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7989,"name":"uint256","nodeType":"ElementaryTypeName","src":"17511:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7991,"nodeType":"VariableDeclarationStatement","src":"17511:9:48"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":7997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"17541:3:48","subExpression":{"id":7996,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7990,"src":"17543:1:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7998,"nodeType":"ExpressionStatement","src":"17541:3:48"},"nodeType":"ForStatement","src":"17506:894:48"},{"AST":{"nativeSrc":"18498:129:48","nodeType":"YulBlock","src":"18498:129:48","statements":[{"expression":{"arguments":[{"name":"output","nativeSrc":"18519:6:48","nodeType":"YulIdentifier","src":"18519:6:48"},{"name":"outputLength","nativeSrc":"18527:12:48","nodeType":"YulIdentifier","src":"18527:12:48"}],"functionName":{"name":"mstore","nativeSrc":"18512:6:48","nodeType":"YulIdentifier","src":"18512:6:48"},"nativeSrc":"18512:28:48","nodeType":"YulFunctionCall","src":"18512:28:48"},"nativeSrc":"18512:28:48","nodeType":"YulExpressionStatement","src":"18512:28:48"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18560:4:48","nodeType":"YulLiteral","src":"18560:4:48","type":"","value":"0x40"},{"arguments":[{"name":"output","nativeSrc":"18570:6:48","nodeType":"YulIdentifier","src":"18570:6:48"},{"arguments":[{"kind":"number","nativeSrc":"18582:1:48","nodeType":"YulLiteral","src":"18582:1:48","type":"","value":"5"},{"arguments":[{"kind":"number","nativeSrc":"18589:1:48","nodeType":"YulLiteral","src":"18589:1:48","type":"","value":"5"},{"arguments":[{"name":"outputLength","nativeSrc":"18596:12:48","nodeType":"YulIdentifier","src":"18596:12:48"},{"kind":"number","nativeSrc":"18610:2:48","nodeType":"YulLiteral","src":"18610:2:48","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"18592:3:48","nodeType":"YulIdentifier","src":"18592:3:48"},"nativeSrc":"18592:21:48","nodeType":"YulFunctionCall","src":"18592:21:48"}],"functionName":{"name":"shr","nativeSrc":"18585:3:48","nodeType":"YulIdentifier","src":"18585:3:48"},"nativeSrc":"18585:29:48","nodeType":"YulFunctionCall","src":"18585:29:48"}],"functionName":{"name":"shl","nativeSrc":"18578:3:48","nodeType":"YulIdentifier","src":"18578:3:48"},"nativeSrc":"18578:37:48","nodeType":"YulFunctionCall","src":"18578:37:48"}],"functionName":{"name":"add","nativeSrc":"18566:3:48","nodeType":"YulIdentifier","src":"18566:3:48"},"nativeSrc":"18566:50:48","nodeType":"YulFunctionCall","src":"18566:50:48"}],"functionName":{"name":"mstore","nativeSrc":"18553:6:48","nodeType":"YulIdentifier","src":"18553:6:48"},"nativeSrc":"18553:64:48","nodeType":"YulFunctionCall","src":"18553:64:48"},"nativeSrc":"18553:64:48","nodeType":"YulExpressionStatement","src":"18553:64:48"}]},"evmVersion":"paris","externalReferences":[{"declaration":7976,"isOffset":false,"isSlot":false,"src":"18519:6:48","valueSize":1},{"declaration":7976,"isOffset":false,"isSlot":false,"src":"18570:6:48","valueSize":1},{"declaration":7986,"isOffset":false,"isSlot":false,"src":"18527:12:48","valueSize":1},{"declaration":7986,"isOffset":false,"isSlot":false,"src":"18596:12:48","valueSize":1}],"flags":["memory-safe"],"id":8119,"nodeType":"InlineAssembly","src":"18473:154:48"},{"expression":{"arguments":[{"id":8122,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7976,"src":"18651:6:48","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8121,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18644:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":8120,"name":"string","nodeType":"ElementaryTypeName","src":"18644:6:48","typeDescriptions":{}}},"id":8123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18644:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":7967,"id":8124,"nodeType":"Return","src":"18637:21:48"}]},"documentation":{"id":7961,"nodeType":"StructuredDocumentation","src":"16674:576:48","text":" @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata.\n WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped.\n NOTE: This function escapes all unicode characters, and not just the ones in ranges defined in section 2.5 of\n RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). ECMAScript's `JSON.parse` does recover escaped unicode\n characters that are not in this range, but other tooling may provide different results."},"id":8126,"implemented":true,"kind":"function","modifiers":[],"name":"escapeJSON","nameLocation":"17264:10:48","nodeType":"FunctionDefinition","parameters":{"id":7964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7963,"mutability":"mutable","name":"input","nameLocation":"17289:5:48","nodeType":"VariableDeclaration","scope":8126,"src":"17275:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7962,"name":"string","nodeType":"ElementaryTypeName","src":"17275:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17274:21:48"},"returnParameters":{"id":7967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7966,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8126,"src":"17319:13:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7965,"name":"string","nodeType":"ElementaryTypeName","src":"17319:6:48","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17318:15:48"},"scope":8139,"src":"17255:1410:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8137,"nodeType":"Block","src":"19050:225:48","statements":[{"AST":{"nativeSrc":"19199:70:48","nodeType":"YulBlock","src":"19199:70:48","statements":[{"nativeSrc":"19213:46:48","nodeType":"YulAssignment","src":"19213:46:48","value":{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"19232:6:48","nodeType":"YulIdentifier","src":"19232:6:48"},{"arguments":[{"kind":"number","nativeSrc":"19244:4:48","nodeType":"YulLiteral","src":"19244:4:48","type":"","value":"0x20"},{"name":"offset","nativeSrc":"19250:6:48","nodeType":"YulIdentifier","src":"19250:6:48"}],"functionName":{"name":"add","nativeSrc":"19240:3:48","nodeType":"YulIdentifier","src":"19240:3:48"},"nativeSrc":"19240:17:48","nodeType":"YulFunctionCall","src":"19240:17:48"}],"functionName":{"name":"add","nativeSrc":"19228:3:48","nodeType":"YulIdentifier","src":"19228:3:48"},"nativeSrc":"19228:30:48","nodeType":"YulFunctionCall","src":"19228:30:48"}],"functionName":{"name":"mload","nativeSrc":"19222:5:48","nodeType":"YulIdentifier","src":"19222:5:48"},"nativeSrc":"19222:37:48","nodeType":"YulFunctionCall","src":"19222:37:48"},"variableNames":[{"name":"value","nativeSrc":"19213:5:48","nodeType":"YulIdentifier","src":"19213:5:48"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":8129,"isOffset":false,"isSlot":false,"src":"19232:6:48","valueSize":1},{"declaration":8131,"isOffset":false,"isSlot":false,"src":"19250:6:48","valueSize":1},{"declaration":8134,"isOffset":false,"isSlot":false,"src":"19213:5:48","valueSize":1}],"flags":["memory-safe"],"id":8136,"nodeType":"InlineAssembly","src":"19174:95:48"}]},"documentation":{"id":8127,"nodeType":"StructuredDocumentation","src":"18671:268:48","text":" @dev Reads a bytes32 from a bytes array without bounds checking.\n NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\n assembly block as such would prevent some optimizations."},"id":8138,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeReadBytesOffset","nameLocation":"18953:22:48","nodeType":"FunctionDefinition","parameters":{"id":8132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8129,"mutability":"mutable","name":"buffer","nameLocation":"18989:6:48","nodeType":"VariableDeclaration","scope":8138,"src":"18976:19:48","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8128,"name":"bytes","nodeType":"ElementaryTypeName","src":"18976:5:48","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":8131,"mutability":"mutable","name":"offset","nameLocation":"19005:6:48","nodeType":"VariableDeclaration","scope":8138,"src":"18997:14:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8130,"name":"uint256","nodeType":"ElementaryTypeName","src":"18997:7:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18975:37:48"},"returnParameters":{"id":8135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8134,"mutability":"mutable","name":"value","nameLocation":"19043:5:48","nodeType":"VariableDeclaration","scope":8138,"src":"19035:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8133,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19035:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19034:15:48"},"scope":8139,"src":"18944:331:48","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":8140,"src":"297:18980:48","usedErrors":[6797,6800,6803],"usedEvents":[]}],"src":"101:19177:48"},"id":48},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","exportedSymbols":{"ECDSA":[8487]},"id":8488,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8141,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"112:24:49"},{"abstract":false,"baseContracts":[],"canonicalName":"ECDSA","contractDependencies":[],"contractKind":"library","documentation":{"id":8142,"nodeType":"StructuredDocumentation","src":"138:205:49","text":" @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."},"fullyImplemented":true,"id":8487,"linearizedBaseContracts":[8487],"name":"ECDSA","nameLocation":"352:5:49","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ECDSA.RecoverError","id":8147,"members":[{"id":8143,"name":"NoError","nameLocation":"392:7:49","nodeType":"EnumValue","src":"392:7:49"},{"id":8144,"name":"InvalidSignature","nameLocation":"409:16:49","nodeType":"EnumValue","src":"409:16:49"},{"id":8145,"name":"InvalidSignatureLength","nameLocation":"435:22:49","nodeType":"EnumValue","src":"435:22:49"},{"id":8146,"name":"InvalidSignatureS","nameLocation":"467:17:49","nodeType":"EnumValue","src":"467:17:49"}],"name":"RecoverError","nameLocation":"369:12:49","nodeType":"EnumDefinition","src":"364:126:49"},{"documentation":{"id":8148,"nodeType":"StructuredDocumentation","src":"496:63:49","text":" @dev The signature derives the `address(0)`."},"errorSelector":"f645eedf","id":8150,"name":"ECDSAInvalidSignature","nameLocation":"570:21:49","nodeType":"ErrorDefinition","parameters":{"id":8149,"nodeType":"ParameterList","parameters":[],"src":"591:2:49"},"src":"564:30:49"},{"documentation":{"id":8151,"nodeType":"StructuredDocumentation","src":"600:60:49","text":" @dev The signature has an invalid length."},"errorSelector":"fce698f7","id":8155,"name":"ECDSAInvalidSignatureLength","nameLocation":"671:27:49","nodeType":"ErrorDefinition","parameters":{"id":8154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8153,"mutability":"mutable","name":"length","nameLocation":"707:6:49","nodeType":"VariableDeclaration","scope":8155,"src":"699:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8152,"name":"uint256","nodeType":"ElementaryTypeName","src":"699:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"698:16:49"},"src":"665:50:49"},{"documentation":{"id":8156,"nodeType":"StructuredDocumentation","src":"721:85:49","text":" @dev The signature has an S value that is in the upper half order."},"errorSelector":"d78bce0c","id":8160,"name":"ECDSAInvalidSignatureS","nameLocation":"817:22:49","nodeType":"ErrorDefinition","parameters":{"id":8159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8158,"mutability":"mutable","name":"s","nameLocation":"848:1:49","nodeType":"VariableDeclaration","scope":8160,"src":"840:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8157,"name":"bytes32","nodeType":"ElementaryTypeName","src":"840:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"839:11:49"},"src":"811:40:49"},{"body":{"id":8212,"nodeType":"Block","src":"2285:622:49","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8175,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8165,"src":"2299:9:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2309:6:49","memberName":"length","nodeType":"MemberAccess","src":"2299:16:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":8177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2319:2:49","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"2299:22:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8210,"nodeType":"Block","src":"2793:108:49","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":8199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2823:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2815:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8197,"name":"address","nodeType":"ElementaryTypeName","src":"2815:7:49","typeDescriptions":{}}},"id":8200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2815:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8201,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8147,"src":"2827:12:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$8147_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":8202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2840:22:49","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":8145,"src":"2827:35:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"expression":{"id":8205,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8165,"src":"2872:9:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2882:6:49","memberName":"length","nodeType":"MemberAccess","src":"2872:16:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8204,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2864:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":8203,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2864:7:49","typeDescriptions":{}}},"id":8207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2864:25:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":8208,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2814:76:49","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":8174,"id":8209,"nodeType":"Return","src":"2807:83:49"}]},"id":8211,"nodeType":"IfStatement","src":"2295:606:49","trueBody":{"id":8196,"nodeType":"Block","src":"2323:464:49","statements":[{"assignments":[8180],"declarations":[{"constant":false,"id":8180,"mutability":"mutable","name":"r","nameLocation":"2345:1:49","nodeType":"VariableDeclaration","scope":8196,"src":"2337:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8179,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2337:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8181,"nodeType":"VariableDeclarationStatement","src":"2337:9:49"},{"assignments":[8183],"declarations":[{"constant":false,"id":8183,"mutability":"mutable","name":"s","nameLocation":"2368:1:49","nodeType":"VariableDeclaration","scope":8196,"src":"2360:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8182,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2360:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8184,"nodeType":"VariableDeclarationStatement","src":"2360:9:49"},{"assignments":[8186],"declarations":[{"constant":false,"id":8186,"mutability":"mutable","name":"v","nameLocation":"2389:1:49","nodeType":"VariableDeclaration","scope":8196,"src":"2383:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8185,"name":"uint8","nodeType":"ElementaryTypeName","src":"2383:5:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":8187,"nodeType":"VariableDeclarationStatement","src":"2383:7:49"},{"AST":{"nativeSrc":"2560:171:49","nodeType":"YulBlock","src":"2560:171:49","statements":[{"nativeSrc":"2578:32:49","nodeType":"YulAssignment","src":"2578:32:49","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2593:9:49","nodeType":"YulIdentifier","src":"2593:9:49"},{"kind":"number","nativeSrc":"2604:4:49","nodeType":"YulLiteral","src":"2604:4:49","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2589:3:49","nodeType":"YulIdentifier","src":"2589:3:49"},"nativeSrc":"2589:20:49","nodeType":"YulFunctionCall","src":"2589:20:49"}],"functionName":{"name":"mload","nativeSrc":"2583:5:49","nodeType":"YulIdentifier","src":"2583:5:49"},"nativeSrc":"2583:27:49","nodeType":"YulFunctionCall","src":"2583:27:49"},"variableNames":[{"name":"r","nativeSrc":"2578:1:49","nodeType":"YulIdentifier","src":"2578:1:49"}]},{"nativeSrc":"2627:32:49","nodeType":"YulAssignment","src":"2627:32:49","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2642:9:49","nodeType":"YulIdentifier","src":"2642:9:49"},{"kind":"number","nativeSrc":"2653:4:49","nodeType":"YulLiteral","src":"2653:4:49","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"2638:3:49","nodeType":"YulIdentifier","src":"2638:3:49"},"nativeSrc":"2638:20:49","nodeType":"YulFunctionCall","src":"2638:20:49"}],"functionName":{"name":"mload","nativeSrc":"2632:5:49","nodeType":"YulIdentifier","src":"2632:5:49"},"nativeSrc":"2632:27:49","nodeType":"YulFunctionCall","src":"2632:27:49"},"variableNames":[{"name":"s","nativeSrc":"2627:1:49","nodeType":"YulIdentifier","src":"2627:1:49"}]},{"nativeSrc":"2676:41:49","nodeType":"YulAssignment","src":"2676:41:49","value":{"arguments":[{"kind":"number","nativeSrc":"2686:1:49","nodeType":"YulLiteral","src":"2686:1:49","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2699:9:49","nodeType":"YulIdentifier","src":"2699:9:49"},{"kind":"number","nativeSrc":"2710:4:49","nodeType":"YulLiteral","src":"2710:4:49","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"2695:3:49","nodeType":"YulIdentifier","src":"2695:3:49"},"nativeSrc":"2695:20:49","nodeType":"YulFunctionCall","src":"2695:20:49"}],"functionName":{"name":"mload","nativeSrc":"2689:5:49","nodeType":"YulIdentifier","src":"2689:5:49"},"nativeSrc":"2689:27:49","nodeType":"YulFunctionCall","src":"2689:27:49"}],"functionName":{"name":"byte","nativeSrc":"2681:4:49","nodeType":"YulIdentifier","src":"2681:4:49"},"nativeSrc":"2681:36:49","nodeType":"YulFunctionCall","src":"2681:36:49"},"variableNames":[{"name":"v","nativeSrc":"2676:1:49","nodeType":"YulIdentifier","src":"2676:1:49"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":8180,"isOffset":false,"isSlot":false,"src":"2578:1:49","valueSize":1},{"declaration":8183,"isOffset":false,"isSlot":false,"src":"2627:1:49","valueSize":1},{"declaration":8165,"isOffset":false,"isSlot":false,"src":"2593:9:49","valueSize":1},{"declaration":8165,"isOffset":false,"isSlot":false,"src":"2642:9:49","valueSize":1},{"declaration":8165,"isOffset":false,"isSlot":false,"src":"2699:9:49","valueSize":1},{"declaration":8186,"isOffset":false,"isSlot":false,"src":"2676:1:49","valueSize":1}],"flags":["memory-safe"],"id":8188,"nodeType":"InlineAssembly","src":"2535:196:49"},{"expression":{"arguments":[{"id":8190,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8163,"src":"2762:4:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8191,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8186,"src":"2768:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":8192,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8180,"src":"2771:1:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8193,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8183,"src":"2774:1:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8189,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[8213,8293,8401],"referencedDeclaration":8401,"src":"2751:10:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":8194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2751:25:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":8174,"id":8195,"nodeType":"Return","src":"2744:32:49"}]}}]},"documentation":{"id":8161,"nodeType":"StructuredDocumentation","src":"857:1267:49","text":" @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n return address(0) without also returning an error description. Errors are documented using an enum (error type)\n and a bytes32 providing additional information about the error.\n If no error is returned, then the address can be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]"},"id":8213,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"2138:10:49","nodeType":"FunctionDefinition","parameters":{"id":8166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8163,"mutability":"mutable","name":"hash","nameLocation":"2166:4:49","nodeType":"VariableDeclaration","scope":8213,"src":"2158:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8162,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2158:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8165,"mutability":"mutable","name":"signature","nameLocation":"2193:9:49","nodeType":"VariableDeclaration","scope":8213,"src":"2180:22:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8164,"name":"bytes","nodeType":"ElementaryTypeName","src":"2180:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2148:60:49"},"returnParameters":{"id":8174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8168,"mutability":"mutable","name":"recovered","nameLocation":"2240:9:49","nodeType":"VariableDeclaration","scope":8213,"src":"2232:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8167,"name":"address","nodeType":"ElementaryTypeName","src":"2232:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8171,"mutability":"mutable","name":"err","nameLocation":"2264:3:49","nodeType":"VariableDeclaration","scope":8213,"src":"2251:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":8170,"nodeType":"UserDefinedTypeName","pathNode":{"id":8169,"name":"RecoverError","nameLocations":["2251:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":8147,"src":"2251:12:49"},"referencedDeclaration":8147,"src":"2251:12:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":8173,"mutability":"mutable","name":"errArg","nameLocation":"2277:6:49","nodeType":"VariableDeclaration","scope":8213,"src":"2269:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8172,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2269:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2231:53:49"},"scope":8487,"src":"2129:778:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8242,"nodeType":"Block","src":"3801:168:49","statements":[{"assignments":[8224,8227,8229],"declarations":[{"constant":false,"id":8224,"mutability":"mutable","name":"recovered","nameLocation":"3820:9:49","nodeType":"VariableDeclaration","scope":8242,"src":"3812:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8223,"name":"address","nodeType":"ElementaryTypeName","src":"3812:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8227,"mutability":"mutable","name":"error","nameLocation":"3844:5:49","nodeType":"VariableDeclaration","scope":8242,"src":"3831:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":8226,"nodeType":"UserDefinedTypeName","pathNode":{"id":8225,"name":"RecoverError","nameLocations":["3831:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":8147,"src":"3831:12:49"},"referencedDeclaration":8147,"src":"3831:12:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":8229,"mutability":"mutable","name":"errorArg","nameLocation":"3859:8:49","nodeType":"VariableDeclaration","scope":8242,"src":"3851:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8228,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3851:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8234,"initialValue":{"arguments":[{"id":8231,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8216,"src":"3882:4:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8232,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8218,"src":"3888:9:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8230,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[8213,8293,8401],"referencedDeclaration":8213,"src":"3871:10:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":8233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3871:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"3811:87:49"},{"expression":{"arguments":[{"id":8236,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8227,"src":"3920:5:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},{"id":8237,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8229,"src":"3927:8:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8235,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8486,"src":"3908:11:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$8147_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":8238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3908:28:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8239,"nodeType":"ExpressionStatement","src":"3908:28:49"},{"expression":{"id":8240,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8224,"src":"3953:9:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8222,"id":8241,"nodeType":"Return","src":"3946:16:49"}]},"documentation":{"id":8214,"nodeType":"StructuredDocumentation","src":"2913:796:49","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it."},"id":8243,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"3723:7:49","nodeType":"FunctionDefinition","parameters":{"id":8219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8216,"mutability":"mutable","name":"hash","nameLocation":"3739:4:49","nodeType":"VariableDeclaration","scope":8243,"src":"3731:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8215,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3731:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8218,"mutability":"mutable","name":"signature","nameLocation":"3758:9:49","nodeType":"VariableDeclaration","scope":8243,"src":"3745:22:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8217,"name":"bytes","nodeType":"ElementaryTypeName","src":"3745:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3730:38:49"},"returnParameters":{"id":8222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8221,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8243,"src":"3792:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8220,"name":"address","nodeType":"ElementaryTypeName","src":"3792:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3791:9:49"},"scope":8487,"src":"3714:255:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8292,"nodeType":"Block","src":"4348:342:49","statements":[{"id":8291,"nodeType":"UncheckedBlock","src":"4358:326:49","statements":[{"assignments":[8261],"declarations":[{"constant":false,"id":8261,"mutability":"mutable","name":"s","nameLocation":"4390:1:49","nodeType":"VariableDeclaration","scope":8291,"src":"4382:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8260,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4382:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8268,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":8267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8262,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8250,"src":"4394:2:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"arguments":[{"hexValue":"307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":8265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4407:66:49","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"value":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}],"id":8264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4399:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":8263,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4399:7:49","typeDescriptions":{}}},"id":8266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4399:75:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4394:80:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4382:92:49"},{"assignments":[8270],"declarations":[{"constant":false,"id":8270,"mutability":"mutable","name":"v","nameLocation":"4591:1:49","nodeType":"VariableDeclaration","scope":8291,"src":"4585:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8269,"name":"uint8","nodeType":"ElementaryTypeName","src":"4585:5:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":8283,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8275,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8250,"src":"4610:2:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4602:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8273,"name":"uint256","nodeType":"ElementaryTypeName","src":"4602:7:49","typeDescriptions":{}}},"id":8276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4602:11:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":8277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4617:3:49","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"4602:18:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8279,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4601:20:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":8280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4624:2:49","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"4601:25:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4595:5:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":8271,"name":"uint8","nodeType":"ElementaryTypeName","src":"4595:5:49","typeDescriptions":{}}},"id":8282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4595:32:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4585:42:49"},{"expression":{"arguments":[{"id":8285,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8246,"src":"4659:4:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8286,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8270,"src":"4665:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":8287,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8248,"src":"4668:1:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8288,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8261,"src":"4671:1:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8284,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[8213,8293,8401],"referencedDeclaration":8401,"src":"4648:10:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":8289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4648:25:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":8259,"id":8290,"nodeType":"Return","src":"4641:32:49"}]}]},"documentation":{"id":8244,"nodeType":"StructuredDocumentation","src":"3975:205:49","text":" @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]"},"id":8293,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"4194:10:49","nodeType":"FunctionDefinition","parameters":{"id":8251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8246,"mutability":"mutable","name":"hash","nameLocation":"4222:4:49","nodeType":"VariableDeclaration","scope":8293,"src":"4214:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8245,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4214:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8248,"mutability":"mutable","name":"r","nameLocation":"4244:1:49","nodeType":"VariableDeclaration","scope":8293,"src":"4236:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8247,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4236:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8250,"mutability":"mutable","name":"vs","nameLocation":"4263:2:49","nodeType":"VariableDeclaration","scope":8293,"src":"4255:10:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8249,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4255:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4204:67:49"},"returnParameters":{"id":8259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8253,"mutability":"mutable","name":"recovered","nameLocation":"4303:9:49","nodeType":"VariableDeclaration","scope":8293,"src":"4295:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8252,"name":"address","nodeType":"ElementaryTypeName","src":"4295:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8256,"mutability":"mutable","name":"err","nameLocation":"4327:3:49","nodeType":"VariableDeclaration","scope":8293,"src":"4314:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":8255,"nodeType":"UserDefinedTypeName","pathNode":{"id":8254,"name":"RecoverError","nameLocations":["4314:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":8147,"src":"4314:12:49"},"referencedDeclaration":8147,"src":"4314:12:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":8258,"mutability":"mutable","name":"errArg","nameLocation":"4340:6:49","nodeType":"VariableDeclaration","scope":8293,"src":"4332:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8257,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4332:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4294:53:49"},"scope":8487,"src":"4185:505:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8325,"nodeType":"Block","src":"4903:164:49","statements":[{"assignments":[8306,8309,8311],"declarations":[{"constant":false,"id":8306,"mutability":"mutable","name":"recovered","nameLocation":"4922:9:49","nodeType":"VariableDeclaration","scope":8325,"src":"4914:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8305,"name":"address","nodeType":"ElementaryTypeName","src":"4914:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8309,"mutability":"mutable","name":"error","nameLocation":"4946:5:49","nodeType":"VariableDeclaration","scope":8325,"src":"4933:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":8308,"nodeType":"UserDefinedTypeName","pathNode":{"id":8307,"name":"RecoverError","nameLocations":["4933:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":8147,"src":"4933:12:49"},"referencedDeclaration":8147,"src":"4933:12:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":8311,"mutability":"mutable","name":"errorArg","nameLocation":"4961:8:49","nodeType":"VariableDeclaration","scope":8325,"src":"4953:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8310,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4953:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8317,"initialValue":{"arguments":[{"id":8313,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8296,"src":"4984:4:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8314,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8298,"src":"4990:1:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8315,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8300,"src":"4993:2:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8312,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[8213,8293,8401],"referencedDeclaration":8293,"src":"4973:10:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":8316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4973:23:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"4913:83:49"},{"expression":{"arguments":[{"id":8319,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8309,"src":"5018:5:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},{"id":8320,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8311,"src":"5025:8:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8318,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8486,"src":"5006:11:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$8147_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":8321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5006:28:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8322,"nodeType":"ExpressionStatement","src":"5006:28:49"},{"expression":{"id":8323,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8306,"src":"5051:9:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8304,"id":8324,"nodeType":"Return","src":"5044:16:49"}]},"documentation":{"id":8294,"nodeType":"StructuredDocumentation","src":"4696:116:49","text":" @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately."},"id":8326,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"4826:7:49","nodeType":"FunctionDefinition","parameters":{"id":8301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8296,"mutability":"mutable","name":"hash","nameLocation":"4842:4:49","nodeType":"VariableDeclaration","scope":8326,"src":"4834:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8295,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4834:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8298,"mutability":"mutable","name":"r","nameLocation":"4856:1:49","nodeType":"VariableDeclaration","scope":8326,"src":"4848:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8297,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4848:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8300,"mutability":"mutable","name":"vs","nameLocation":"4867:2:49","nodeType":"VariableDeclaration","scope":8326,"src":"4859:10:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8299,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4859:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4833:37:49"},"returnParameters":{"id":8304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8303,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8326,"src":"4894:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8302,"name":"address","nodeType":"ElementaryTypeName","src":"4894:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4893:9:49"},"scope":8487,"src":"4817:250:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8400,"nodeType":"Block","src":"5382:1372:49","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8347,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8335,"src":"6278:1:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6270:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8345,"name":"uint256","nodeType":"ElementaryTypeName","src":"6270:7:49","typeDescriptions":{}}},"id":8348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6270:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","id":8349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6283:66:49","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1","typeString":"int_const 5789...(69 digits omitted)...7168"},"value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"src":"6270:79:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8361,"nodeType":"IfStatement","src":"6266:164:49","trueBody":{"id":8360,"nodeType":"Block","src":"6351:79:49","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":8353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6381:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6373:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8351,"name":"address","nodeType":"ElementaryTypeName","src":"6373:7:49","typeDescriptions":{}}},"id":8354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6373:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8355,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8147,"src":"6385:12:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$8147_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":8356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6398:17:49","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":8146,"src":"6385:30:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},{"id":8357,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8335,"src":"6417:1:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":8358,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6372:47:49","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":8344,"id":8359,"nodeType":"Return","src":"6365:54:49"}]}},{"assignments":[8363],"declarations":[{"constant":false,"id":8363,"mutability":"mutable","name":"signer","nameLocation":"6532:6:49","nodeType":"VariableDeclaration","scope":8400,"src":"6524:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8362,"name":"address","nodeType":"ElementaryTypeName","src":"6524:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8370,"initialValue":{"arguments":[{"id":8365,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8329,"src":"6551:4:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8366,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8331,"src":"6557:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":8367,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8333,"src":"6560:1:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8368,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8335,"src":"6563:1:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8364,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"6541:9:49","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":8369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6541:24:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6524:41:49"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8371,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8363,"src":"6579:6:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":8374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6597:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6589:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8372,"name":"address","nodeType":"ElementaryTypeName","src":"6589:7:49","typeDescriptions":{}}},"id":8375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6589:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6579:20:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8390,"nodeType":"IfStatement","src":"6575:113:49","trueBody":{"id":8389,"nodeType":"Block","src":"6601:87:49","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":8379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6631:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6623:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8377,"name":"address","nodeType":"ElementaryTypeName","src":"6623:7:49","typeDescriptions":{}}},"id":8380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6623:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8381,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8147,"src":"6635:12:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$8147_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":8382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6648:16:49","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":8144,"src":"6635:29:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"hexValue":"30","id":8385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6674:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6666:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":8383,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6666:7:49","typeDescriptions":{}}},"id":8386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6666:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":8387,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6622:55:49","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":8344,"id":8388,"nodeType":"Return","src":"6615:62:49"}]}},{"expression":{"components":[{"id":8391,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8363,"src":"6706:6:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8392,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8147,"src":"6714:12:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$8147_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":8393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6727:7:49","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":8143,"src":"6714:20:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"hexValue":"30","id":8396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6744:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6736:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":8394,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6736:7:49","typeDescriptions":{}}},"id":8397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6736:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":8398,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6705:42:49","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":8344,"id":8399,"nodeType":"Return","src":"6698:49:49"}]},"documentation":{"id":8327,"nodeType":"StructuredDocumentation","src":"5073:125:49","text":" @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":8401,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"5212:10:49","nodeType":"FunctionDefinition","parameters":{"id":8336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8329,"mutability":"mutable","name":"hash","nameLocation":"5240:4:49","nodeType":"VariableDeclaration","scope":8401,"src":"5232:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8328,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5232:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8331,"mutability":"mutable","name":"v","nameLocation":"5260:1:49","nodeType":"VariableDeclaration","scope":8401,"src":"5254:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8330,"name":"uint8","nodeType":"ElementaryTypeName","src":"5254:5:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":8333,"mutability":"mutable","name":"r","nameLocation":"5279:1:49","nodeType":"VariableDeclaration","scope":8401,"src":"5271:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8332,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5271:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8335,"mutability":"mutable","name":"s","nameLocation":"5298:1:49","nodeType":"VariableDeclaration","scope":8401,"src":"5290:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8334,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5290:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5222:83:49"},"returnParameters":{"id":8344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8338,"mutability":"mutable","name":"recovered","nameLocation":"5337:9:49","nodeType":"VariableDeclaration","scope":8401,"src":"5329:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8337,"name":"address","nodeType":"ElementaryTypeName","src":"5329:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8341,"mutability":"mutable","name":"err","nameLocation":"5361:3:49","nodeType":"VariableDeclaration","scope":8401,"src":"5348:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":8340,"nodeType":"UserDefinedTypeName","pathNode":{"id":8339,"name":"RecoverError","nameLocations":["5348:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":8147,"src":"5348:12:49"},"referencedDeclaration":8147,"src":"5348:12:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":8343,"mutability":"mutable","name":"errArg","nameLocation":"5374:6:49","nodeType":"VariableDeclaration","scope":8401,"src":"5366:14:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8342,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5366:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5328:53:49"},"scope":8487,"src":"5203:1551:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8436,"nodeType":"Block","src":"6981:166:49","statements":[{"assignments":[8416,8419,8421],"declarations":[{"constant":false,"id":8416,"mutability":"mutable","name":"recovered","nameLocation":"7000:9:49","nodeType":"VariableDeclaration","scope":8436,"src":"6992:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8415,"name":"address","nodeType":"ElementaryTypeName","src":"6992:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8419,"mutability":"mutable","name":"error","nameLocation":"7024:5:49","nodeType":"VariableDeclaration","scope":8436,"src":"7011:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":8418,"nodeType":"UserDefinedTypeName","pathNode":{"id":8417,"name":"RecoverError","nameLocations":["7011:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":8147,"src":"7011:12:49"},"referencedDeclaration":8147,"src":"7011:12:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":8421,"mutability":"mutable","name":"errorArg","nameLocation":"7039:8:49","nodeType":"VariableDeclaration","scope":8436,"src":"7031:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8420,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7031:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8428,"initialValue":{"arguments":[{"id":8423,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8404,"src":"7062:4:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8424,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8406,"src":"7068:1:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":8425,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8408,"src":"7071:1:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8426,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8410,"src":"7074:1:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8422,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[8213,8293,8401],"referencedDeclaration":8401,"src":"7051:10:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":8427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7051:25:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"6991:85:49"},{"expression":{"arguments":[{"id":8430,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8419,"src":"7098:5:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},{"id":8431,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8421,"src":"7105:8:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8429,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8486,"src":"7086:11:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$8147_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":8432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7086:28:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8433,"nodeType":"ExpressionStatement","src":"7086:28:49"},{"expression":{"id":8434,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8416,"src":"7131:9:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":8414,"id":8435,"nodeType":"Return","src":"7124:16:49"}]},"documentation":{"id":8402,"nodeType":"StructuredDocumentation","src":"6760:122:49","text":" @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":8437,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"6896:7:49","nodeType":"FunctionDefinition","parameters":{"id":8411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8404,"mutability":"mutable","name":"hash","nameLocation":"6912:4:49","nodeType":"VariableDeclaration","scope":8437,"src":"6904:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8403,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6904:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8406,"mutability":"mutable","name":"v","nameLocation":"6924:1:49","nodeType":"VariableDeclaration","scope":8437,"src":"6918:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8405,"name":"uint8","nodeType":"ElementaryTypeName","src":"6918:5:49","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":8408,"mutability":"mutable","name":"r","nameLocation":"6935:1:49","nodeType":"VariableDeclaration","scope":8437,"src":"6927:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8407,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6927:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8410,"mutability":"mutable","name":"s","nameLocation":"6946:1:49","nodeType":"VariableDeclaration","scope":8437,"src":"6938:9:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8409,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6938:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6903:45:49"},"returnParameters":{"id":8414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8413,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8437,"src":"6972:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8412,"name":"address","nodeType":"ElementaryTypeName","src":"6972:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6971:9:49"},"scope":8487,"src":"6887:260:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8485,"nodeType":"Block","src":"7352:460:49","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},"id":8449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8446,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8441,"src":"7366:5:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8447,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8147,"src":"7375:12:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$8147_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":8448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7388:7:49","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":8143,"src":"7375:20:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"src":"7366:29:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},"id":8455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8452,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8441,"src":"7462:5:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8453,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8147,"src":"7471:12:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$8147_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":8454,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7484:16:49","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":8144,"src":"7471:29:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"src":"7462:38:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},"id":8463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8460,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8441,"src":"7567:5:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8461,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8147,"src":"7576:12:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$8147_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":8462,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7589:22:49","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":8145,"src":"7576:35:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"src":"7567:44:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},"id":8475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8472,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8441,"src":"7701:5:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":8473,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8147,"src":"7710:12:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$8147_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":8474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7723:17:49","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":8146,"src":"7710:30:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"src":"7701:39:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8481,"nodeType":"IfStatement","src":"7697:109:49","trueBody":{"id":8480,"nodeType":"Block","src":"7742:64:49","statements":[{"errorCall":{"arguments":[{"id":8477,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8443,"src":"7786:8:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8476,"name":"ECDSAInvalidSignatureS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8160,"src":"7763:22:49","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":8478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7763:32:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8479,"nodeType":"RevertStatement","src":"7756:39:49"}]}},"id":8482,"nodeType":"IfStatement","src":"7563:243:49","trueBody":{"id":8471,"nodeType":"Block","src":"7613:78:49","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":8467,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8443,"src":"7670:8:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7662:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8465,"name":"uint256","nodeType":"ElementaryTypeName","src":"7662:7:49","typeDescriptions":{}}},"id":8468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7662:17:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8464,"name":"ECDSAInvalidSignatureLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"7634:27:49","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":8469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7634:46:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8470,"nodeType":"RevertStatement","src":"7627:53:49"}]}},"id":8483,"nodeType":"IfStatement","src":"7458:348:49","trueBody":{"id":8459,"nodeType":"Block","src":"7502:55:49","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8456,"name":"ECDSAInvalidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8150,"src":"7523:21:49","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":8457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7523:23:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":8458,"nodeType":"RevertStatement","src":"7516:30:49"}]}},"id":8484,"nodeType":"IfStatement","src":"7362:444:49","trueBody":{"id":8451,"nodeType":"Block","src":"7397:55:49","statements":[{"functionReturnParameters":8445,"id":8450,"nodeType":"Return","src":"7411:7:49"}]}}]},"documentation":{"id":8438,"nodeType":"StructuredDocumentation","src":"7153:122:49","text":" @dev Optionally reverts with the corresponding custom error according to the `error` argument provided."},"id":8486,"implemented":true,"kind":"function","modifiers":[],"name":"_throwError","nameLocation":"7289:11:49","nodeType":"FunctionDefinition","parameters":{"id":8444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8441,"mutability":"mutable","name":"error","nameLocation":"7314:5:49","nodeType":"VariableDeclaration","scope":8486,"src":"7301:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":8440,"nodeType":"UserDefinedTypeName","pathNode":{"id":8439,"name":"RecoverError","nameLocations":["7301:12:49"],"nodeType":"IdentifierPath","referencedDeclaration":8147,"src":"7301:12:49"},"referencedDeclaration":8147,"src":"7301:12:49","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":8443,"mutability":"mutable","name":"errorArg","nameLocation":"7329:8:49","nodeType":"VariableDeclaration","scope":8486,"src":"7321:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8442,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7321:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7300:38:49"},"returnParameters":{"id":8445,"nodeType":"ParameterList","parameters":[],"src":"7352:0:49"},"scope":8487,"src":"7280:532:49","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":8488,"src":"344:7470:49","usedErrors":[8150,8155,8160],"usedEvents":[]}],"src":"112:7703:49"},"id":49},"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol","exportedSymbols":{"ECDSA":[8487],"IERC1271":[3994],"SignatureChecker":[8595]},"id":8596,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8489,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"123:24:50"},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","file":"./ECDSA.sol","id":8491,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8596,"sourceUnit":8488,"src":"149:34:50","symbolAliases":[{"foreign":{"id":8490,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8487,"src":"157:5:50","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1271.sol","file":"../../interfaces/IERC1271.sol","id":8493,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8596,"sourceUnit":3995,"src":"184:55:50","symbolAliases":[{"foreign":{"id":8492,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"192:8:50","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SignatureChecker","contractDependencies":[],"contractKind":"library","documentation":{"id":8494,"nodeType":"StructuredDocumentation","src":"241:290:50","text":" @dev Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support both ECDSA\n signatures from externally owned accounts (EOAs) as well as ERC-1271 signatures from smart contract wallets like\n Argent and Safe Wallet (previously Gnosis Safe)."},"fullyImplemented":true,"id":8595,"linearizedBaseContracts":[8595],"name":"SignatureChecker","nameLocation":"540:16:50","nodeType":"ContractDefinition","nodes":[{"body":{"id":8541,"nodeType":"Block","src":"1153:317:50","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8506,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8497,"src":"1167:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1174:4:50","memberName":"code","nodeType":"MemberAccess","src":"1167:11:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1179:6:50","memberName":"length","nodeType":"MemberAccess","src":"1167:18:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1189:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1167:23:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8539,"nodeType":"Block","src":"1381:83:50","statements":[{"expression":{"arguments":[{"id":8534,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8497,"src":"1429:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8535,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8499,"src":"1437:4:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8536,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8501,"src":"1443:9:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8533,"name":"isValidERC1271SignatureNow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8594,"src":"1402:26:50","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes32,bytes memory) view returns (bool)"}},"id":8537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1402:51:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8505,"id":8538,"nodeType":"Return","src":"1395:58:50"}]},"id":8540,"nodeType":"IfStatement","src":"1163:301:50","trueBody":{"id":8532,"nodeType":"Block","src":"1192:183:50","statements":[{"assignments":[8512,8515,null],"declarations":[{"constant":false,"id":8512,"mutability":"mutable","name":"recovered","nameLocation":"1215:9:50","nodeType":"VariableDeclaration","scope":8532,"src":"1207:17:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8511,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8515,"mutability":"mutable","name":"err","nameLocation":"1245:3:50","nodeType":"VariableDeclaration","scope":8532,"src":"1226:22:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":8514,"nodeType":"UserDefinedTypeName","pathNode":{"id":8513,"name":"ECDSA.RecoverError","nameLocations":["1226:5:50","1232:12:50"],"nodeType":"IdentifierPath","referencedDeclaration":8147,"src":"1226:18:50"},"referencedDeclaration":8147,"src":"1226:18:50","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},null],"id":8521,"initialValue":{"arguments":[{"id":8518,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8499,"src":"1271:4:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8519,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8501,"src":"1277:9:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":8516,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8487,"src":"1254:5:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSA_$8487_$","typeString":"type(library ECDSA)"}},"id":8517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1260:10:50","memberName":"tryRecover","nodeType":"MemberAccess","referencedDeclaration":8213,"src":"1254:16:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":8520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1254:33:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_RecoverError_$8147_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"1206:81:50"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"},"id":8526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8522,"name":"err","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8515,"src":"1308:3:50","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":8523,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8487,"src":"1315:5:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSA_$8487_$","typeString":"type(library ECDSA)"}},"id":8524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1321:12:50","memberName":"RecoverError","nodeType":"MemberAccess","referencedDeclaration":8147,"src":"1315:18:50","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$8147_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":8525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1334:7:50","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":8143,"src":"1315:26:50","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$8147","typeString":"enum ECDSA.RecoverError"}},"src":"1308:33:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8527,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8512,"src":"1345:9:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8528,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8497,"src":"1358:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1345:19:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1308:56:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8505,"id":8531,"nodeType":"Return","src":"1301:63:50"}]}}]},"documentation":{"id":8495,"nodeType":"StructuredDocumentation","src":"563:473:50","text":" @dev Checks if a signature is valid for a given signer and data hash. If the signer is a smart contract, the\n signature is validated against that smart contract using ERC-1271, otherwise it's validated using `ECDSA.recover`.\n NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n change through time. It could return true at block N and false at block N+1 (or the opposite)."},"id":8542,"implemented":true,"kind":"function","modifiers":[],"name":"isValidSignatureNow","nameLocation":"1050:19:50","nodeType":"FunctionDefinition","parameters":{"id":8502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8497,"mutability":"mutable","name":"signer","nameLocation":"1078:6:50","nodeType":"VariableDeclaration","scope":8542,"src":"1070:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8496,"name":"address","nodeType":"ElementaryTypeName","src":"1070:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8499,"mutability":"mutable","name":"hash","nameLocation":"1094:4:50","nodeType":"VariableDeclaration","scope":8542,"src":"1086:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8498,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1086:7:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8501,"mutability":"mutable","name":"signature","nameLocation":"1113:9:50","nodeType":"VariableDeclaration","scope":8542,"src":"1100:22:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8500,"name":"bytes","nodeType":"ElementaryTypeName","src":"1100:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1069:54:50"},"returnParameters":{"id":8505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8504,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8542,"src":"1147:4:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8503,"name":"bool","nodeType":"ElementaryTypeName","src":"1147:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1146:6:50"},"scope":8595,"src":"1041:429:50","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8593,"nodeType":"Block","src":"2026:309:50","statements":[{"assignments":[8555,8557],"declarations":[{"constant":false,"id":8555,"mutability":"mutable","name":"success","nameLocation":"2042:7:50","nodeType":"VariableDeclaration","scope":8593,"src":"2037:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8554,"name":"bool","nodeType":"ElementaryTypeName","src":"2037:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8557,"mutability":"mutable","name":"result","nameLocation":"2064:6:50","nodeType":"VariableDeclaration","scope":8593,"src":"2051:19:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8556,"name":"bytes","nodeType":"ElementaryTypeName","src":"2051:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":8569,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":8562,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"2120:8:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$3994_$","typeString":"type(contract IERC1271)"}},"id":8563,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2129:16:50","memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":3993,"src":"2120:25:50","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function IERC1271.isValidSignature(bytes32,bytes memory) view returns (bytes4)"}},{"components":[{"id":8564,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8547,"src":"2148:4:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8565,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8549,"src":"2154:9:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":8566,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2147:17:50","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function IERC1271.isValidSignature(bytes32,bytes memory) view returns (bytes4)"},{"typeIdentifier":"t_tuple$_t_bytes32_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes32,bytes memory)"}],"expression":{"id":8560,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2105:3:50","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2109:10:50","memberName":"encodeCall","nodeType":"MemberAccess","src":"2105:14:50","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2105:60:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":8558,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8545,"src":"2074:6:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2081:10:50","memberName":"staticcall","nodeType":"MemberAccess","src":"2074:17:50","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":8568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2074:101:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2036:139:50"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8570,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8555,"src":"2193:7:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8571,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8557,"src":"2216:6:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2223:6:50","memberName":"length","nodeType":"MemberAccess","src":"2216:13:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3332","id":8573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2233:2:50","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"2216:19:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2193:42:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":8589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8578,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8557,"src":"2262:6:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":8580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2271:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":8579,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2271:7:50","typeDescriptions":{}}}],"id":8581,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2270:9:50","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"}],"expression":{"id":8576,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2251:3:50","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2255:6:50","memberName":"decode","nodeType":"MemberAccess","src":"2251:10:50","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":8582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2251:29:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"expression":{"expression":{"id":8585,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"2292:8:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$3994_$","typeString":"type(contract IERC1271)"}},"id":8586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2301:16:50","memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":3993,"src":"2292:25:50","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function IERC1271.isValidSignature(bytes32,bytes memory) view returns (bytes4)"}},"id":8587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2318:8:50","memberName":"selector","nodeType":"MemberAccess","src":"2292:34:50","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":8584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2284:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":8583,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2284:7:50","typeDescriptions":{}}},"id":8588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2284:43:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2251:76:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2193:134:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8591,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2192:136:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8553,"id":8592,"nodeType":"Return","src":"2185:143:50"}]},"documentation":{"id":8543,"nodeType":"StructuredDocumentation","src":"1476:396:50","text":" @dev Checks if a signature is valid for a given signer and data hash. The signature is validated\n against the signer smart contract using ERC-1271.\n NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\n change through time. It could return true at block N and false at block N+1 (or the opposite)."},"id":8594,"implemented":true,"kind":"function","modifiers":[],"name":"isValidERC1271SignatureNow","nameLocation":"1886:26:50","nodeType":"FunctionDefinition","parameters":{"id":8550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8545,"mutability":"mutable","name":"signer","nameLocation":"1930:6:50","nodeType":"VariableDeclaration","scope":8594,"src":"1922:14:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8544,"name":"address","nodeType":"ElementaryTypeName","src":"1922:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8547,"mutability":"mutable","name":"hash","nameLocation":"1954:4:50","nodeType":"VariableDeclaration","scope":8594,"src":"1946:12:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8546,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1946:7:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8549,"mutability":"mutable","name":"signature","nameLocation":"1981:9:50","nodeType":"VariableDeclaration","scope":8594,"src":"1968:22:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8548,"name":"bytes","nodeType":"ElementaryTypeName","src":"1968:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1912:84:50"},"returnParameters":{"id":8553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8552,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8594,"src":"2020:4:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8551,"name":"bool","nodeType":"ElementaryTypeName","src":"2020:4:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2019:6:50"},"scope":8595,"src":"1877:458:50","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":8596,"src":"532:1805:50","usedErrors":[],"usedEvents":[]}],"src":"123:2215:50"},"id":50},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[8619],"IERC165":[8631]},"id":8620,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8597,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"114:24:51"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":8599,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8620,"sourceUnit":8632,"src":"140:38:51","symbolAliases":[{"foreign":{"id":8598,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8631,"src":"148:7:51","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8601,"name":"IERC165","nameLocations":["688:7:51"],"nodeType":"IdentifierPath","referencedDeclaration":8631,"src":"688:7:51"},"id":8602,"nodeType":"InheritanceSpecifier","src":"688:7:51"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":8600,"nodeType":"StructuredDocumentation","src":"180:479:51","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```"},"fullyImplemented":true,"id":8619,"linearizedBaseContracts":[8619,8631],"name":"ERC165","nameLocation":"678:6:51","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[8630],"body":{"id":8617,"nodeType":"Block","src":"845:64:51","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":8615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8610,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8605,"src":"862:11:51","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":8612,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8631,"src":"882:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$8631_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$8631_$","typeString":"type(contract IERC165)"}],"id":8611,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"877:4:51","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"877:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$8631","typeString":"type(contract IERC165)"}},"id":8614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"891:11:51","memberName":"interfaceId","nodeType":"MemberAccess","src":"877:25:51","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"862:40:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8609,"id":8616,"nodeType":"Return","src":"855:47:51"}]},"documentation":{"id":8603,"nodeType":"StructuredDocumentation","src":"702:56:51","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":8618,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"772:17:51","nodeType":"FunctionDefinition","parameters":{"id":8606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8605,"mutability":"mutable","name":"interfaceId","nameLocation":"797:11:51","nodeType":"VariableDeclaration","scope":8618,"src":"790:18:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8604,"name":"bytes4","nodeType":"ElementaryTypeName","src":"790:6:51","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"789:20:51"},"returnParameters":{"id":8609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8608,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8618,"src":"839:4:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8607,"name":"bool","nodeType":"ElementaryTypeName","src":"839:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"838:6:51"},"scope":8619,"src":"763:146:51","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":8620,"src":"660:251:51","usedErrors":[],"usedEvents":[]}],"src":"114:798:51"},"id":51},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[8631]},"id":8632,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8621,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:52"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":8622,"nodeType":"StructuredDocumentation","src":"141:280:52","text":" @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":8631,"linearizedBaseContracts":[8631],"name":"IERC165","nameLocation":"432:7:52","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":8623,"nodeType":"StructuredDocumentation","src":"446:340:52","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":8630,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"800:17:52","nodeType":"FunctionDefinition","parameters":{"id":8626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8625,"mutability":"mutable","name":"interfaceId","nameLocation":"825:11:52","nodeType":"VariableDeclaration","scope":8630,"src":"818:18:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":8624,"name":"bytes4","nodeType":"ElementaryTypeName","src":"818:6:52","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"817:20:52"},"returnParameters":{"id":8629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8628,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8630,"src":"861:4:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8627,"name":"bool","nodeType":"ElementaryTypeName","src":"861:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"860:6:52"},"scope":8631,"src":"791:76:52","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8632,"src":"422:447:52","usedErrors":[],"usedEvents":[]}],"src":"115:755:52"},"id":52},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[10252],"Panic":[6737],"SafeCast":[12017]},"id":10253,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8633,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:53"},{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","file":"../Panic.sol","id":8635,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10253,"sourceUnit":6738,"src":"129:35:53","symbolAliases":[{"foreign":{"id":8634,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6737,"src":"137:5:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":8637,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10253,"sourceUnit":12018,"src":"165:40:53","symbolAliases":[{"foreign":{"id":8636,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"173:8:53","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":8638,"nodeType":"StructuredDocumentation","src":"207:73:53","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":10252,"linearizedBaseContracts":[10252],"name":"Math","nameLocation":"289:4:53","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":8643,"members":[{"id":8639,"name":"Floor","nameLocation":"324:5:53","nodeType":"EnumValue","src":"324:5:53"},{"id":8640,"name":"Ceil","nameLocation":"367:4:53","nodeType":"EnumValue","src":"367:4:53"},{"id":8641,"name":"Trunc","nameLocation":"409:5:53","nodeType":"EnumValue","src":"409:5:53"},{"id":8642,"name":"Expand","nameLocation":"439:6:53","nodeType":"EnumValue","src":"439:6:53"}],"name":"Rounding","nameLocation":"305:8:53","nodeType":"EnumDefinition","src":"300:169:53"},{"body":{"id":8656,"nodeType":"Block","src":"731:112:53","statements":[{"AST":{"nativeSrc":"766:71:53","nodeType":"YulBlock","src":"766:71:53","statements":[{"nativeSrc":"780:16:53","nodeType":"YulAssignment","src":"780:16:53","value":{"arguments":[{"name":"a","nativeSrc":"791:1:53","nodeType":"YulIdentifier","src":"791:1:53"},{"name":"b","nativeSrc":"794:1:53","nodeType":"YulIdentifier","src":"794:1:53"}],"functionName":{"name":"add","nativeSrc":"787:3:53","nodeType":"YulIdentifier","src":"787:3:53"},"nativeSrc":"787:9:53","nodeType":"YulFunctionCall","src":"787:9:53"},"variableNames":[{"name":"low","nativeSrc":"780:3:53","nodeType":"YulIdentifier","src":"780:3:53"}]},{"nativeSrc":"809:18:53","nodeType":"YulAssignment","src":"809:18:53","value":{"arguments":[{"name":"low","nativeSrc":"820:3:53","nodeType":"YulIdentifier","src":"820:3:53"},{"name":"a","nativeSrc":"825:1:53","nodeType":"YulIdentifier","src":"825:1:53"}],"functionName":{"name":"lt","nativeSrc":"817:2:53","nodeType":"YulIdentifier","src":"817:2:53"},"nativeSrc":"817:10:53","nodeType":"YulFunctionCall","src":"817:10:53"},"variableNames":[{"name":"high","nativeSrc":"809:4:53","nodeType":"YulIdentifier","src":"809:4:53"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":8646,"isOffset":false,"isSlot":false,"src":"791:1:53","valueSize":1},{"declaration":8646,"isOffset":false,"isSlot":false,"src":"825:1:53","valueSize":1},{"declaration":8648,"isOffset":false,"isSlot":false,"src":"794:1:53","valueSize":1},{"declaration":8651,"isOffset":false,"isSlot":false,"src":"809:4:53","valueSize":1},{"declaration":8653,"isOffset":false,"isSlot":false,"src":"780:3:53","valueSize":1},{"declaration":8653,"isOffset":false,"isSlot":false,"src":"820:3:53","valueSize":1}],"flags":["memory-safe"],"id":8655,"nodeType":"InlineAssembly","src":"741:96:53"}]},"documentation":{"id":8644,"nodeType":"StructuredDocumentation","src":"475:163:53","text":" @dev Return the 512-bit addition of two uint256.\n The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low."},"id":8657,"implemented":true,"kind":"function","modifiers":[],"name":"add512","nameLocation":"652:6:53","nodeType":"FunctionDefinition","parameters":{"id":8649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8646,"mutability":"mutable","name":"a","nameLocation":"667:1:53","nodeType":"VariableDeclaration","scope":8657,"src":"659:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8645,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8648,"mutability":"mutable","name":"b","nameLocation":"678:1:53","nodeType":"VariableDeclaration","scope":8657,"src":"670:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8647,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"658:22:53"},"returnParameters":{"id":8654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8651,"mutability":"mutable","name":"high","nameLocation":"712:4:53","nodeType":"VariableDeclaration","scope":8657,"src":"704:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8650,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8653,"mutability":"mutable","name":"low","nameLocation":"726:3:53","nodeType":"VariableDeclaration","scope":8657,"src":"718:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8652,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"703:27:53"},"scope":10252,"src":"643:200:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8670,"nodeType":"Block","src":"1115:462:53","statements":[{"AST":{"nativeSrc":"1437:134:53","nodeType":"YulBlock","src":"1437:134:53","statements":[{"nativeSrc":"1451:30:53","nodeType":"YulVariableDeclaration","src":"1451:30:53","value":{"arguments":[{"name":"a","nativeSrc":"1468:1:53","nodeType":"YulIdentifier","src":"1468:1:53"},{"name":"b","nativeSrc":"1471:1:53","nodeType":"YulIdentifier","src":"1471:1:53"},{"arguments":[{"kind":"number","nativeSrc":"1478:1:53","nodeType":"YulLiteral","src":"1478:1:53","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"1474:3:53","nodeType":"YulIdentifier","src":"1474:3:53"},"nativeSrc":"1474:6:53","nodeType":"YulFunctionCall","src":"1474:6:53"}],"functionName":{"name":"mulmod","nativeSrc":"1461:6:53","nodeType":"YulIdentifier","src":"1461:6:53"},"nativeSrc":"1461:20:53","nodeType":"YulFunctionCall","src":"1461:20:53"},"variables":[{"name":"mm","nativeSrc":"1455:2:53","nodeType":"YulTypedName","src":"1455:2:53","type":""}]},{"nativeSrc":"1494:16:53","nodeType":"YulAssignment","src":"1494:16:53","value":{"arguments":[{"name":"a","nativeSrc":"1505:1:53","nodeType":"YulIdentifier","src":"1505:1:53"},{"name":"b","nativeSrc":"1508:1:53","nodeType":"YulIdentifier","src":"1508:1:53"}],"functionName":{"name":"mul","nativeSrc":"1501:3:53","nodeType":"YulIdentifier","src":"1501:3:53"},"nativeSrc":"1501:9:53","nodeType":"YulFunctionCall","src":"1501:9:53"},"variableNames":[{"name":"low","nativeSrc":"1494:3:53","nodeType":"YulIdentifier","src":"1494:3:53"}]},{"nativeSrc":"1523:38:53","nodeType":"YulAssignment","src":"1523:38:53","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"1539:2:53","nodeType":"YulIdentifier","src":"1539:2:53"},{"name":"low","nativeSrc":"1543:3:53","nodeType":"YulIdentifier","src":"1543:3:53"}],"functionName":{"name":"sub","nativeSrc":"1535:3:53","nodeType":"YulIdentifier","src":"1535:3:53"},"nativeSrc":"1535:12:53","nodeType":"YulFunctionCall","src":"1535:12:53"},{"arguments":[{"name":"mm","nativeSrc":"1552:2:53","nodeType":"YulIdentifier","src":"1552:2:53"},{"name":"low","nativeSrc":"1556:3:53","nodeType":"YulIdentifier","src":"1556:3:53"}],"functionName":{"name":"lt","nativeSrc":"1549:2:53","nodeType":"YulIdentifier","src":"1549:2:53"},"nativeSrc":"1549:11:53","nodeType":"YulFunctionCall","src":"1549:11:53"}],"functionName":{"name":"sub","nativeSrc":"1531:3:53","nodeType":"YulIdentifier","src":"1531:3:53"},"nativeSrc":"1531:30:53","nodeType":"YulFunctionCall","src":"1531:30:53"},"variableNames":[{"name":"high","nativeSrc":"1523:4:53","nodeType":"YulIdentifier","src":"1523:4:53"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":8660,"isOffset":false,"isSlot":false,"src":"1468:1:53","valueSize":1},{"declaration":8660,"isOffset":false,"isSlot":false,"src":"1505:1:53","valueSize":1},{"declaration":8662,"isOffset":false,"isSlot":false,"src":"1471:1:53","valueSize":1},{"declaration":8662,"isOffset":false,"isSlot":false,"src":"1508:1:53","valueSize":1},{"declaration":8665,"isOffset":false,"isSlot":false,"src":"1523:4:53","valueSize":1},{"declaration":8667,"isOffset":false,"isSlot":false,"src":"1494:3:53","valueSize":1},{"declaration":8667,"isOffset":false,"isSlot":false,"src":"1543:3:53","valueSize":1},{"declaration":8667,"isOffset":false,"isSlot":false,"src":"1556:3:53","valueSize":1}],"flags":["memory-safe"],"id":8669,"nodeType":"InlineAssembly","src":"1412:159:53"}]},"documentation":{"id":8658,"nodeType":"StructuredDocumentation","src":"849:173:53","text":" @dev Return the 512-bit multiplication of two uint256.\n The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low."},"id":8671,"implemented":true,"kind":"function","modifiers":[],"name":"mul512","nameLocation":"1036:6:53","nodeType":"FunctionDefinition","parameters":{"id":8663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8660,"mutability":"mutable","name":"a","nameLocation":"1051:1:53","nodeType":"VariableDeclaration","scope":8671,"src":"1043:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8659,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8662,"mutability":"mutable","name":"b","nameLocation":"1062:1:53","nodeType":"VariableDeclaration","scope":8671,"src":"1054:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8661,"name":"uint256","nodeType":"ElementaryTypeName","src":"1054:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1042:22:53"},"returnParameters":{"id":8668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8665,"mutability":"mutable","name":"high","nameLocation":"1096:4:53","nodeType":"VariableDeclaration","scope":8671,"src":"1088:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8664,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8667,"mutability":"mutable","name":"low","nameLocation":"1110:3:53","nodeType":"VariableDeclaration","scope":8671,"src":"1102:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8666,"name":"uint256","nodeType":"ElementaryTypeName","src":"1102:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1087:27:53"},"scope":10252,"src":"1027:550:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8705,"nodeType":"Block","src":"1784:149:53","statements":[{"id":8704,"nodeType":"UncheckedBlock","src":"1794:133:53","statements":[{"assignments":[8684],"declarations":[{"constant":false,"id":8684,"mutability":"mutable","name":"c","nameLocation":"1826:1:53","nodeType":"VariableDeclaration","scope":8704,"src":"1818:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8683,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8688,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8685,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8674,"src":"1830:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":8686,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8676,"src":"1834:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1830:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1818:17:53"},{"expression":{"id":8693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8689,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"1849:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8690,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"1859:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8691,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8674,"src":"1864:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1859:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1849:16:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8694,"nodeType":"ExpressionStatement","src":"1849:16:53"},{"expression":{"id":8702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8695,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8681,"src":"1879:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8696,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8684,"src":"1888:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":8699,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8679,"src":"1908:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":8697,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"1892:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":8698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1901:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"1892:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":8700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1892:24:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1888:28:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1879:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8703,"nodeType":"ExpressionStatement","src":"1879:37:53"}]}]},"documentation":{"id":8672,"nodeType":"StructuredDocumentation","src":"1583:105:53","text":" @dev Returns the addition of two unsigned integers, with a success flag (no overflow)."},"id":8706,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"1702:6:53","nodeType":"FunctionDefinition","parameters":{"id":8677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8674,"mutability":"mutable","name":"a","nameLocation":"1717:1:53","nodeType":"VariableDeclaration","scope":8706,"src":"1709:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8673,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8676,"mutability":"mutable","name":"b","nameLocation":"1728:1:53","nodeType":"VariableDeclaration","scope":8706,"src":"1720:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8675,"name":"uint256","nodeType":"ElementaryTypeName","src":"1720:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1708:22:53"},"returnParameters":{"id":8682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8679,"mutability":"mutable","name":"success","nameLocation":"1759:7:53","nodeType":"VariableDeclaration","scope":8706,"src":"1754:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8678,"name":"bool","nodeType":"ElementaryTypeName","src":"1754:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8681,"mutability":"mutable","name":"result","nameLocation":"1776:6:53","nodeType":"VariableDeclaration","scope":8706,"src":"1768:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8680,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:30:53"},"scope":10252,"src":"1693:240:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8740,"nodeType":"Block","src":"2143:149:53","statements":[{"id":8739,"nodeType":"UncheckedBlock","src":"2153:133:53","statements":[{"assignments":[8719],"declarations":[{"constant":false,"id":8719,"mutability":"mutable","name":"c","nameLocation":"2185:1:53","nodeType":"VariableDeclaration","scope":8739,"src":"2177:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8718,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8723,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8720,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8709,"src":"2189:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8721,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8711,"src":"2193:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2189:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2177:17:53"},{"expression":{"id":8728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8724,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"2208:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8725,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8719,"src":"2218:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8726,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8709,"src":"2223:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2218:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:16:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8729,"nodeType":"ExpressionStatement","src":"2208:16:53"},{"expression":{"id":8737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8730,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8716,"src":"2238:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8731,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8719,"src":"2247:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":8734,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8714,"src":"2267:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":8732,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"2251:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":8733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"2251:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":8735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2251:24:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2247:28:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2238:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8738,"nodeType":"ExpressionStatement","src":"2238:37:53"}]}]},"documentation":{"id":8707,"nodeType":"StructuredDocumentation","src":"1939:108:53","text":" @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow)."},"id":8741,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"2061:6:53","nodeType":"FunctionDefinition","parameters":{"id":8712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8709,"mutability":"mutable","name":"a","nameLocation":"2076:1:53","nodeType":"VariableDeclaration","scope":8741,"src":"2068:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8708,"name":"uint256","nodeType":"ElementaryTypeName","src":"2068:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8711,"mutability":"mutable","name":"b","nameLocation":"2087:1:53","nodeType":"VariableDeclaration","scope":8741,"src":"2079:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8710,"name":"uint256","nodeType":"ElementaryTypeName","src":"2079:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2067:22:53"},"returnParameters":{"id":8717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8714,"mutability":"mutable","name":"success","nameLocation":"2118:7:53","nodeType":"VariableDeclaration","scope":8741,"src":"2113:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8713,"name":"bool","nodeType":"ElementaryTypeName","src":"2113:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8716,"mutability":"mutable","name":"result","nameLocation":"2135:6:53","nodeType":"VariableDeclaration","scope":8741,"src":"2127:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8715,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2112:30:53"},"scope":10252,"src":"2052:240:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8770,"nodeType":"Block","src":"2505:391:53","statements":[{"id":8769,"nodeType":"UncheckedBlock","src":"2515:375:53","statements":[{"assignments":[8754],"declarations":[{"constant":false,"id":8754,"mutability":"mutable","name":"c","nameLocation":"2547:1:53","nodeType":"VariableDeclaration","scope":8769,"src":"2539:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8753,"name":"uint256","nodeType":"ElementaryTypeName","src":"2539:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8758,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8755,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8744,"src":"2551:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":8756,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8746,"src":"2555:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2551:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2539:17:53"},{"AST":{"nativeSrc":"2595:188:53","nodeType":"YulBlock","src":"2595:188:53","statements":[{"nativeSrc":"2727:42:53","nodeType":"YulAssignment","src":"2727:42:53","value":{"arguments":[{"arguments":[{"arguments":[{"name":"c","nativeSrc":"2748:1:53","nodeType":"YulIdentifier","src":"2748:1:53"},{"name":"a","nativeSrc":"2751:1:53","nodeType":"YulIdentifier","src":"2751:1:53"}],"functionName":{"name":"div","nativeSrc":"2744:3:53","nodeType":"YulIdentifier","src":"2744:3:53"},"nativeSrc":"2744:9:53","nodeType":"YulFunctionCall","src":"2744:9:53"},{"name":"b","nativeSrc":"2755:1:53","nodeType":"YulIdentifier","src":"2755:1:53"}],"functionName":{"name":"eq","nativeSrc":"2741:2:53","nodeType":"YulIdentifier","src":"2741:2:53"},"nativeSrc":"2741:16:53","nodeType":"YulFunctionCall","src":"2741:16:53"},{"arguments":[{"name":"a","nativeSrc":"2766:1:53","nodeType":"YulIdentifier","src":"2766:1:53"}],"functionName":{"name":"iszero","nativeSrc":"2759:6:53","nodeType":"YulIdentifier","src":"2759:6:53"},"nativeSrc":"2759:9:53","nodeType":"YulFunctionCall","src":"2759:9:53"}],"functionName":{"name":"or","nativeSrc":"2738:2:53","nodeType":"YulIdentifier","src":"2738:2:53"},"nativeSrc":"2738:31:53","nodeType":"YulFunctionCall","src":"2738:31:53"},"variableNames":[{"name":"success","nativeSrc":"2727:7:53","nodeType":"YulIdentifier","src":"2727:7:53"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":8744,"isOffset":false,"isSlot":false,"src":"2751:1:53","valueSize":1},{"declaration":8744,"isOffset":false,"isSlot":false,"src":"2766:1:53","valueSize":1},{"declaration":8746,"isOffset":false,"isSlot":false,"src":"2755:1:53","valueSize":1},{"declaration":8754,"isOffset":false,"isSlot":false,"src":"2748:1:53","valueSize":1},{"declaration":8749,"isOffset":false,"isSlot":false,"src":"2727:7:53","valueSize":1}],"flags":["memory-safe"],"id":8759,"nodeType":"InlineAssembly","src":"2570:213:53"},{"expression":{"id":8767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8760,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8751,"src":"2842:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8761,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8754,"src":"2851:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":8764,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8749,"src":"2871:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":8762,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"2855:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":8763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2864:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"2855:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":8765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:24:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2851:28:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2842:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8768,"nodeType":"ExpressionStatement","src":"2842:37:53"}]}]},"documentation":{"id":8742,"nodeType":"StructuredDocumentation","src":"2298:111:53","text":" @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow)."},"id":8771,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"2423:6:53","nodeType":"FunctionDefinition","parameters":{"id":8747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8744,"mutability":"mutable","name":"a","nameLocation":"2438:1:53","nodeType":"VariableDeclaration","scope":8771,"src":"2430:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8743,"name":"uint256","nodeType":"ElementaryTypeName","src":"2430:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8746,"mutability":"mutable","name":"b","nameLocation":"2449:1:53","nodeType":"VariableDeclaration","scope":8771,"src":"2441:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8745,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2429:22:53"},"returnParameters":{"id":8752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8749,"mutability":"mutable","name":"success","nameLocation":"2480:7:53","nodeType":"VariableDeclaration","scope":8771,"src":"2475:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8748,"name":"bool","nodeType":"ElementaryTypeName","src":"2475:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8751,"mutability":"mutable","name":"result","nameLocation":"2497:6:53","nodeType":"VariableDeclaration","scope":8771,"src":"2489:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8750,"name":"uint256","nodeType":"ElementaryTypeName","src":"2489:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2474:30:53"},"scope":10252,"src":"2414:482:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8791,"nodeType":"Block","src":"3111:231:53","statements":[{"id":8790,"nodeType":"UncheckedBlock","src":"3121:215:53","statements":[{"expression":{"id":8787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8783,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8779,"src":"3145:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8784,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8776,"src":"3155:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3159:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3155:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3145:15:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8788,"nodeType":"ExpressionStatement","src":"3145:15:53"},{"AST":{"nativeSrc":"3199:127:53","nodeType":"YulBlock","src":"3199:127:53","statements":[{"nativeSrc":"3293:19:53","nodeType":"YulAssignment","src":"3293:19:53","value":{"arguments":[{"name":"a","nativeSrc":"3307:1:53","nodeType":"YulIdentifier","src":"3307:1:53"},{"name":"b","nativeSrc":"3310:1:53","nodeType":"YulIdentifier","src":"3310:1:53"}],"functionName":{"name":"div","nativeSrc":"3303:3:53","nodeType":"YulIdentifier","src":"3303:3:53"},"nativeSrc":"3303:9:53","nodeType":"YulFunctionCall","src":"3303:9:53"},"variableNames":[{"name":"result","nativeSrc":"3293:6:53","nodeType":"YulIdentifier","src":"3293:6:53"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":8774,"isOffset":false,"isSlot":false,"src":"3307:1:53","valueSize":1},{"declaration":8776,"isOffset":false,"isSlot":false,"src":"3310:1:53","valueSize":1},{"declaration":8781,"isOffset":false,"isSlot":false,"src":"3293:6:53","valueSize":1}],"flags":["memory-safe"],"id":8789,"nodeType":"InlineAssembly","src":"3174:152:53"}]}]},"documentation":{"id":8772,"nodeType":"StructuredDocumentation","src":"2902:113:53","text":" @dev Returns the division of two unsigned integers, with a success flag (no division by zero)."},"id":8792,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"3029:6:53","nodeType":"FunctionDefinition","parameters":{"id":8777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8774,"mutability":"mutable","name":"a","nameLocation":"3044:1:53","nodeType":"VariableDeclaration","scope":8792,"src":"3036:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8773,"name":"uint256","nodeType":"ElementaryTypeName","src":"3036:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8776,"mutability":"mutable","name":"b","nameLocation":"3055:1:53","nodeType":"VariableDeclaration","scope":8792,"src":"3047:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8775,"name":"uint256","nodeType":"ElementaryTypeName","src":"3047:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3035:22:53"},"returnParameters":{"id":8782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8779,"mutability":"mutable","name":"success","nameLocation":"3086:7:53","nodeType":"VariableDeclaration","scope":8792,"src":"3081:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8778,"name":"bool","nodeType":"ElementaryTypeName","src":"3081:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8781,"mutability":"mutable","name":"result","nameLocation":"3103:6:53","nodeType":"VariableDeclaration","scope":8792,"src":"3095:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8780,"name":"uint256","nodeType":"ElementaryTypeName","src":"3095:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3080:30:53"},"scope":10252,"src":"3020:322:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8812,"nodeType":"Block","src":"3567:231:53","statements":[{"id":8811,"nodeType":"UncheckedBlock","src":"3577:215:53","statements":[{"expression":{"id":8808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8804,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8800,"src":"3601:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8805,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8797,"src":"3611:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3615:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3611:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3601:15:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8809,"nodeType":"ExpressionStatement","src":"3601:15:53"},{"AST":{"nativeSrc":"3655:127:53","nodeType":"YulBlock","src":"3655:127:53","statements":[{"nativeSrc":"3749:19:53","nodeType":"YulAssignment","src":"3749:19:53","value":{"arguments":[{"name":"a","nativeSrc":"3763:1:53","nodeType":"YulIdentifier","src":"3763:1:53"},{"name":"b","nativeSrc":"3766:1:53","nodeType":"YulIdentifier","src":"3766:1:53"}],"functionName":{"name":"mod","nativeSrc":"3759:3:53","nodeType":"YulIdentifier","src":"3759:3:53"},"nativeSrc":"3759:9:53","nodeType":"YulFunctionCall","src":"3759:9:53"},"variableNames":[{"name":"result","nativeSrc":"3749:6:53","nodeType":"YulIdentifier","src":"3749:6:53"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":8795,"isOffset":false,"isSlot":false,"src":"3763:1:53","valueSize":1},{"declaration":8797,"isOffset":false,"isSlot":false,"src":"3766:1:53","valueSize":1},{"declaration":8802,"isOffset":false,"isSlot":false,"src":"3749:6:53","valueSize":1}],"flags":["memory-safe"],"id":8810,"nodeType":"InlineAssembly","src":"3630:152:53"}]}]},"documentation":{"id":8793,"nodeType":"StructuredDocumentation","src":"3348:123:53","text":" @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)."},"id":8813,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"3485:6:53","nodeType":"FunctionDefinition","parameters":{"id":8798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8795,"mutability":"mutable","name":"a","nameLocation":"3500:1:53","nodeType":"VariableDeclaration","scope":8813,"src":"3492:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8794,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8797,"mutability":"mutable","name":"b","nameLocation":"3511:1:53","nodeType":"VariableDeclaration","scope":8813,"src":"3503:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8796,"name":"uint256","nodeType":"ElementaryTypeName","src":"3503:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3491:22:53"},"returnParameters":{"id":8803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8800,"mutability":"mutable","name":"success","nameLocation":"3542:7:53","nodeType":"VariableDeclaration","scope":8813,"src":"3537:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8799,"name":"bool","nodeType":"ElementaryTypeName","src":"3537:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8802,"mutability":"mutable","name":"result","nameLocation":"3559:6:53","nodeType":"VariableDeclaration","scope":8813,"src":"3551:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8801,"name":"uint256","nodeType":"ElementaryTypeName","src":"3551:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3536:30:53"},"scope":10252,"src":"3476:322:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8842,"nodeType":"Block","src":"3989:122:53","statements":[{"assignments":[8824,8826],"declarations":[{"constant":false,"id":8824,"mutability":"mutable","name":"success","nameLocation":"4005:7:53","nodeType":"VariableDeclaration","scope":8842,"src":"4000:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8823,"name":"bool","nodeType":"ElementaryTypeName","src":"4000:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8826,"mutability":"mutable","name":"result","nameLocation":"4022:6:53","nodeType":"VariableDeclaration","scope":8842,"src":"4014:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8825,"name":"uint256","nodeType":"ElementaryTypeName","src":"4014:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8831,"initialValue":{"arguments":[{"id":8828,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8816,"src":"4039:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8829,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8818,"src":"4042:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8827,"name":"tryAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8706,"src":"4032:6:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":8830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4032:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3999:45:53"},{"expression":{"arguments":[{"id":8833,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8824,"src":"4069:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":8834,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8826,"src":"4078:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":8837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4091:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8836,"name":"uint256","nodeType":"ElementaryTypeName","src":"4091:7:53","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":8835,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4086:4:53","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4086:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":8839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4100:3:53","memberName":"max","nodeType":"MemberAccess","src":"4086:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8832,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8920,"src":"4061:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":8840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4061:43:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8822,"id":8841,"nodeType":"Return","src":"4054:50:53"}]},"documentation":{"id":8814,"nodeType":"StructuredDocumentation","src":"3804:103:53","text":" @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":8843,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingAdd","nameLocation":"3921:13:53","nodeType":"FunctionDefinition","parameters":{"id":8819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8816,"mutability":"mutable","name":"a","nameLocation":"3943:1:53","nodeType":"VariableDeclaration","scope":8843,"src":"3935:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8815,"name":"uint256","nodeType":"ElementaryTypeName","src":"3935:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8818,"mutability":"mutable","name":"b","nameLocation":"3954:1:53","nodeType":"VariableDeclaration","scope":8843,"src":"3946:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8817,"name":"uint256","nodeType":"ElementaryTypeName","src":"3946:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3934:22:53"},"returnParameters":{"id":8822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8821,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8843,"src":"3980:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8820,"name":"uint256","nodeType":"ElementaryTypeName","src":"3980:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3979:9:53"},"scope":10252,"src":"3912:199:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8862,"nodeType":"Block","src":"4294:73:53","statements":[{"assignments":[null,8854],"declarations":[null,{"constant":false,"id":8854,"mutability":"mutable","name":"result","nameLocation":"4315:6:53","nodeType":"VariableDeclaration","scope":8862,"src":"4307:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8853,"name":"uint256","nodeType":"ElementaryTypeName","src":"4307:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8859,"initialValue":{"arguments":[{"id":8856,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8846,"src":"4332:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8857,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8848,"src":"4335:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8855,"name":"trySub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8741,"src":"4325:6:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":8858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4325:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4304:33:53"},{"expression":{"id":8860,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8854,"src":"4354:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8852,"id":8861,"nodeType":"Return","src":"4347:13:53"}]},"documentation":{"id":8844,"nodeType":"StructuredDocumentation","src":"4117:95:53","text":" @dev Unsigned saturating subtraction, bounds to zero instead of overflowing."},"id":8863,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingSub","nameLocation":"4226:13:53","nodeType":"FunctionDefinition","parameters":{"id":8849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8846,"mutability":"mutable","name":"a","nameLocation":"4248:1:53","nodeType":"VariableDeclaration","scope":8863,"src":"4240:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8845,"name":"uint256","nodeType":"ElementaryTypeName","src":"4240:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8848,"mutability":"mutable","name":"b","nameLocation":"4259:1:53","nodeType":"VariableDeclaration","scope":8863,"src":"4251:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8847,"name":"uint256","nodeType":"ElementaryTypeName","src":"4251:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4239:22:53"},"returnParameters":{"id":8852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8863,"src":"4285:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8850,"name":"uint256","nodeType":"ElementaryTypeName","src":"4285:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4284:9:53"},"scope":10252,"src":"4217:150:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8892,"nodeType":"Block","src":"4564:122:53","statements":[{"assignments":[8874,8876],"declarations":[{"constant":false,"id":8874,"mutability":"mutable","name":"success","nameLocation":"4580:7:53","nodeType":"VariableDeclaration","scope":8892,"src":"4575:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8873,"name":"bool","nodeType":"ElementaryTypeName","src":"4575:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8876,"mutability":"mutable","name":"result","nameLocation":"4597:6:53","nodeType":"VariableDeclaration","scope":8892,"src":"4589:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8875,"name":"uint256","nodeType":"ElementaryTypeName","src":"4589:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8881,"initialValue":{"arguments":[{"id":8878,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8866,"src":"4614:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8879,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8868,"src":"4617:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8877,"name":"tryMul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8771,"src":"4607:6:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":8880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4607:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4574:45:53"},{"expression":{"arguments":[{"id":8883,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8874,"src":"4644:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":8884,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8876,"src":"4653:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":8887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4666:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8886,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:53","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":8885,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4661:4:53","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4661:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":8889,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4675:3:53","memberName":"max","nodeType":"MemberAccess","src":"4661:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8882,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8920,"src":"4636:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":8890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4636:43:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8872,"id":8891,"nodeType":"Return","src":"4629:50:53"}]},"documentation":{"id":8864,"nodeType":"StructuredDocumentation","src":"4373:109:53","text":" @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing."},"id":8893,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingMul","nameLocation":"4496:13:53","nodeType":"FunctionDefinition","parameters":{"id":8869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8866,"mutability":"mutable","name":"a","nameLocation":"4518:1:53","nodeType":"VariableDeclaration","scope":8893,"src":"4510:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8865,"name":"uint256","nodeType":"ElementaryTypeName","src":"4510:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8868,"mutability":"mutable","name":"b","nameLocation":"4529:1:53","nodeType":"VariableDeclaration","scope":8893,"src":"4521:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8867,"name":"uint256","nodeType":"ElementaryTypeName","src":"4521:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4509:22:53"},"returnParameters":{"id":8872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8871,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8893,"src":"4555:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8870,"name":"uint256","nodeType":"ElementaryTypeName","src":"4555:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4554:9:53"},"scope":10252,"src":"4487:199:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8919,"nodeType":"Block","src":"5158:207:53","statements":[{"id":8918,"nodeType":"UncheckedBlock","src":"5168:191:53","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8905,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8900,"src":"5306:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8906,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8898,"src":"5312:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":8907,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8900,"src":"5316:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5312:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8909,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5311:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":8912,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8896,"src":"5337:9:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":8910,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"5321:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":8911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5330:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"5321:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":8913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5321:26:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5311:36:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8915,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5310:38:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5306:42:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8904,"id":8917,"nodeType":"Return","src":"5299:49:53"}]}]},"documentation":{"id":8894,"nodeType":"StructuredDocumentation","src":"4692:374:53","text":" @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive."},"id":8920,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"5080:7:53","nodeType":"FunctionDefinition","parameters":{"id":8901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8896,"mutability":"mutable","name":"condition","nameLocation":"5093:9:53","nodeType":"VariableDeclaration","scope":8920,"src":"5088:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8895,"name":"bool","nodeType":"ElementaryTypeName","src":"5088:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8898,"mutability":"mutable","name":"a","nameLocation":"5112:1:53","nodeType":"VariableDeclaration","scope":8920,"src":"5104:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8897,"name":"uint256","nodeType":"ElementaryTypeName","src":"5104:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8900,"mutability":"mutable","name":"b","nameLocation":"5123:1:53","nodeType":"VariableDeclaration","scope":8920,"src":"5115:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8899,"name":"uint256","nodeType":"ElementaryTypeName","src":"5115:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5087:38:53"},"returnParameters":{"id":8904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8903,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8920,"src":"5149:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8902,"name":"uint256","nodeType":"ElementaryTypeName","src":"5149:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5148:9:53"},"scope":10252,"src":"5071:294:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8938,"nodeType":"Block","src":"5502:44:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8931,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8923,"src":"5527:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":8932,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8925,"src":"5531:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5527:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":8934,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8923,"src":"5534:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8935,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8925,"src":"5537:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8930,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8920,"src":"5519:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":8936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5519:20:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8929,"id":8937,"nodeType":"Return","src":"5512:27:53"}]},"documentation":{"id":8921,"nodeType":"StructuredDocumentation","src":"5371:59:53","text":" @dev Returns the largest of two numbers."},"id":8939,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"5444:3:53","nodeType":"FunctionDefinition","parameters":{"id":8926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8923,"mutability":"mutable","name":"a","nameLocation":"5456:1:53","nodeType":"VariableDeclaration","scope":8939,"src":"5448:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8922,"name":"uint256","nodeType":"ElementaryTypeName","src":"5448:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8925,"mutability":"mutable","name":"b","nameLocation":"5467:1:53","nodeType":"VariableDeclaration","scope":8939,"src":"5459:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8924,"name":"uint256","nodeType":"ElementaryTypeName","src":"5459:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5447:22:53"},"returnParameters":{"id":8929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8928,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8939,"src":"5493:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8927,"name":"uint256","nodeType":"ElementaryTypeName","src":"5493:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5492:9:53"},"scope":10252,"src":"5435:111:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8957,"nodeType":"Block","src":"5684:44:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8950,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8942,"src":"5709:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8951,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8944,"src":"5713:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5709:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":8953,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8942,"src":"5716:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8954,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8944,"src":"5719:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8949,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8920,"src":"5701:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":8955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5701:20:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8948,"id":8956,"nodeType":"Return","src":"5694:27:53"}]},"documentation":{"id":8940,"nodeType":"StructuredDocumentation","src":"5552:60:53","text":" @dev Returns the smallest of two numbers."},"id":8958,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"5626:3:53","nodeType":"FunctionDefinition","parameters":{"id":8945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8942,"mutability":"mutable","name":"a","nameLocation":"5638:1:53","nodeType":"VariableDeclaration","scope":8958,"src":"5630:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8941,"name":"uint256","nodeType":"ElementaryTypeName","src":"5630:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8944,"mutability":"mutable","name":"b","nameLocation":"5649:1:53","nodeType":"VariableDeclaration","scope":8958,"src":"5641:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8943,"name":"uint256","nodeType":"ElementaryTypeName","src":"5641:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5629:22:53"},"returnParameters":{"id":8948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8947,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8958,"src":"5675:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8946,"name":"uint256","nodeType":"ElementaryTypeName","src":"5675:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5674:9:53"},"scope":10252,"src":"5617:111:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8980,"nodeType":"Block","src":"5912:82:53","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8968,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8961,"src":"5967:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":8969,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8963,"src":"5971:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5967:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8971,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5966:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8972,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8961,"src":"5977:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":8973,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8963,"src":"5981:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5977:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8975,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5976:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":8976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5986:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5976:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5966:21:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8967,"id":8979,"nodeType":"Return","src":"5959:28:53"}]},"documentation":{"id":8959,"nodeType":"StructuredDocumentation","src":"5734:102:53","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":8981,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"5850:7:53","nodeType":"FunctionDefinition","parameters":{"id":8964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8961,"mutability":"mutable","name":"a","nameLocation":"5866:1:53","nodeType":"VariableDeclaration","scope":8981,"src":"5858:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8960,"name":"uint256","nodeType":"ElementaryTypeName","src":"5858:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8963,"mutability":"mutable","name":"b","nameLocation":"5877:1:53","nodeType":"VariableDeclaration","scope":8981,"src":"5869:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8962,"name":"uint256","nodeType":"ElementaryTypeName","src":"5869:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5857:22:53"},"returnParameters":{"id":8967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8966,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8981,"src":"5903:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8965,"name":"uint256","nodeType":"ElementaryTypeName","src":"5903:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5902:9:53"},"scope":10252,"src":"5841:153:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9021,"nodeType":"Block","src":"6286:633:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8991,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8986,"src":"6300:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6305:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6300:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9002,"nodeType":"IfStatement","src":"6296:150:53","trueBody":{"id":9001,"nodeType":"Block","src":"6308:138:53","statements":[{"expression":{"arguments":[{"expression":{"id":8997,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6737,"src":"6412:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$6737_$","typeString":"type(library Panic)"}},"id":8998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6418:16:53","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":6704,"src":"6412:22:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8994,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6737,"src":"6400:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$6737_$","typeString":"type(library Panic)"}},"id":8996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6406:5:53","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":6736,"src":"6400:11:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":8999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6400:35:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9000,"nodeType":"ExpressionStatement","src":"6400:35:53"}]}},{"id":9020,"nodeType":"UncheckedBlock","src":"6829:84:53","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9005,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8984,"src":"6876:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6880:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6876:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9003,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"6860:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":9004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6869:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"6860:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6860:22:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9009,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8984,"src":"6887:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":9010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6891:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6887:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9012,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6886:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9013,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8986,"src":"6896:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6886:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6900:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6886:15:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9017,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6885:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6860:42:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8990,"id":9019,"nodeType":"Return","src":"6853:49:53"}]}]},"documentation":{"id":8982,"nodeType":"StructuredDocumentation","src":"6000:210:53","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero."},"id":9022,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"6224:7:53","nodeType":"FunctionDefinition","parameters":{"id":8987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8984,"mutability":"mutable","name":"a","nameLocation":"6240:1:53","nodeType":"VariableDeclaration","scope":9022,"src":"6232:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8983,"name":"uint256","nodeType":"ElementaryTypeName","src":"6232:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8986,"mutability":"mutable","name":"b","nameLocation":"6251:1:53","nodeType":"VariableDeclaration","scope":9022,"src":"6243:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8985,"name":"uint256","nodeType":"ElementaryTypeName","src":"6243:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6231:22:53"},"returnParameters":{"id":8990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8989,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9022,"src":"6277:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8988,"name":"uint256","nodeType":"ElementaryTypeName","src":"6277:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6276:9:53"},"scope":10252,"src":"6215:704:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9157,"nodeType":"Block","src":"7340:3585:53","statements":[{"id":9156,"nodeType":"UncheckedBlock","src":"7350:3569:53","statements":[{"assignments":[9035,9037],"declarations":[{"constant":false,"id":9035,"mutability":"mutable","name":"high","nameLocation":"7383:4:53","nodeType":"VariableDeclaration","scope":9156,"src":"7375:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9034,"name":"uint256","nodeType":"ElementaryTypeName","src":"7375:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9037,"mutability":"mutable","name":"low","nameLocation":"7397:3:53","nodeType":"VariableDeclaration","scope":9156,"src":"7389:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9036,"name":"uint256","nodeType":"ElementaryTypeName","src":"7389:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9042,"initialValue":{"arguments":[{"id":9039,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9025,"src":"7411:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9040,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9027,"src":"7414:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9038,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8671,"src":"7404:6:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":9041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7404:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7374:42:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9043,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9035,"src":"7498:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7506:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7498:9:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9051,"nodeType":"IfStatement","src":"7494:365:53","trueBody":{"id":9050,"nodeType":"Block","src":"7509:350:53","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9046,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9037,"src":"7827:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9047,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"7833:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7827:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9033,"id":9049,"nodeType":"Return","src":"7820:24:53"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9052,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"7969:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":9053,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9035,"src":"7984:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7969:19:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9070,"nodeType":"IfStatement","src":"7965:142:53","trueBody":{"id":9069,"nodeType":"Block","src":"7990:117:53","statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9059,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"8028:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8043:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8028:16:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":9062,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6737,"src":"8046:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$6737_$","typeString":"type(library Panic)"}},"id":9063,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8052:16:53","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":6704,"src":"8046:22:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9064,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6737,"src":"8070:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$6737_$","typeString":"type(library Panic)"}},"id":9065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8076:14:53","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":6700,"src":"8070:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9058,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8920,"src":"8020:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":9066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8020:71:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9055,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6737,"src":"8008:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$6737_$","typeString":"type(library Panic)"}},"id":9057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8014:5:53","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":6736,"src":"8008:11:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8008:84:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9068,"nodeType":"ExpressionStatement","src":"8008:84:53"}]}},{"assignments":[9072],"declarations":[{"constant":false,"id":9072,"mutability":"mutable","name":"remainder","nameLocation":"8367:9:53","nodeType":"VariableDeclaration","scope":9156,"src":"8359:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9071,"name":"uint256","nodeType":"ElementaryTypeName","src":"8359:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9073,"nodeType":"VariableDeclarationStatement","src":"8359:17:53"},{"AST":{"nativeSrc":"8415:283:53","nodeType":"YulBlock","src":"8415:283:53","statements":[{"nativeSrc":"8484:38:53","nodeType":"YulAssignment","src":"8484:38:53","value":{"arguments":[{"name":"x","nativeSrc":"8504:1:53","nodeType":"YulIdentifier","src":"8504:1:53"},{"name":"y","nativeSrc":"8507:1:53","nodeType":"YulIdentifier","src":"8507:1:53"},{"name":"denominator","nativeSrc":"8510:11:53","nodeType":"YulIdentifier","src":"8510:11:53"}],"functionName":{"name":"mulmod","nativeSrc":"8497:6:53","nodeType":"YulIdentifier","src":"8497:6:53"},"nativeSrc":"8497:25:53","nodeType":"YulFunctionCall","src":"8497:25:53"},"variableNames":[{"name":"remainder","nativeSrc":"8484:9:53","nodeType":"YulIdentifier","src":"8484:9:53"}]},{"nativeSrc":"8604:37:53","nodeType":"YulAssignment","src":"8604:37:53","value":{"arguments":[{"name":"high","nativeSrc":"8616:4:53","nodeType":"YulIdentifier","src":"8616:4:53"},{"arguments":[{"name":"remainder","nativeSrc":"8625:9:53","nodeType":"YulIdentifier","src":"8625:9:53"},{"name":"low","nativeSrc":"8636:3:53","nodeType":"YulIdentifier","src":"8636:3:53"}],"functionName":{"name":"gt","nativeSrc":"8622:2:53","nodeType":"YulIdentifier","src":"8622:2:53"},"nativeSrc":"8622:18:53","nodeType":"YulFunctionCall","src":"8622:18:53"}],"functionName":{"name":"sub","nativeSrc":"8612:3:53","nodeType":"YulIdentifier","src":"8612:3:53"},"nativeSrc":"8612:29:53","nodeType":"YulFunctionCall","src":"8612:29:53"},"variableNames":[{"name":"high","nativeSrc":"8604:4:53","nodeType":"YulIdentifier","src":"8604:4:53"}]},{"nativeSrc":"8658:26:53","nodeType":"YulAssignment","src":"8658:26:53","value":{"arguments":[{"name":"low","nativeSrc":"8669:3:53","nodeType":"YulIdentifier","src":"8669:3:53"},{"name":"remainder","nativeSrc":"8674:9:53","nodeType":"YulIdentifier","src":"8674:9:53"}],"functionName":{"name":"sub","nativeSrc":"8665:3:53","nodeType":"YulIdentifier","src":"8665:3:53"},"nativeSrc":"8665:19:53","nodeType":"YulFunctionCall","src":"8665:19:53"},"variableNames":[{"name":"low","nativeSrc":"8658:3:53","nodeType":"YulIdentifier","src":"8658:3:53"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":9029,"isOffset":false,"isSlot":false,"src":"8510:11:53","valueSize":1},{"declaration":9035,"isOffset":false,"isSlot":false,"src":"8604:4:53","valueSize":1},{"declaration":9035,"isOffset":false,"isSlot":false,"src":"8616:4:53","valueSize":1},{"declaration":9037,"isOffset":false,"isSlot":false,"src":"8636:3:53","valueSize":1},{"declaration":9037,"isOffset":false,"isSlot":false,"src":"8658:3:53","valueSize":1},{"declaration":9037,"isOffset":false,"isSlot":false,"src":"8669:3:53","valueSize":1},{"declaration":9072,"isOffset":false,"isSlot":false,"src":"8484:9:53","valueSize":1},{"declaration":9072,"isOffset":false,"isSlot":false,"src":"8625:9:53","valueSize":1},{"declaration":9072,"isOffset":false,"isSlot":false,"src":"8674:9:53","valueSize":1},{"declaration":9025,"isOffset":false,"isSlot":false,"src":"8504:1:53","valueSize":1},{"declaration":9027,"isOffset":false,"isSlot":false,"src":"8507:1:53","valueSize":1}],"flags":["memory-safe"],"id":9074,"nodeType":"InlineAssembly","src":"8390:308:53"},{"assignments":[9076],"declarations":[{"constant":false,"id":9076,"mutability":"mutable","name":"twos","nameLocation":"8910:4:53","nodeType":"VariableDeclaration","scope":9156,"src":"8902:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9075,"name":"uint256","nodeType":"ElementaryTypeName","src":"8902:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9083,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9077,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"8917:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":9078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8932:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9079,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"8936:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8932:15:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9081,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8931:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8917:31:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8902:46:53"},{"AST":{"nativeSrc":"8987:359:53","nodeType":"YulBlock","src":"8987:359:53","statements":[{"nativeSrc":"9052:37:53","nodeType":"YulAssignment","src":"9052:37:53","value":{"arguments":[{"name":"denominator","nativeSrc":"9071:11:53","nodeType":"YulIdentifier","src":"9071:11:53"},{"name":"twos","nativeSrc":"9084:4:53","nodeType":"YulIdentifier","src":"9084:4:53"}],"functionName":{"name":"div","nativeSrc":"9067:3:53","nodeType":"YulIdentifier","src":"9067:3:53"},"nativeSrc":"9067:22:53","nodeType":"YulFunctionCall","src":"9067:22:53"},"variableNames":[{"name":"denominator","nativeSrc":"9052:11:53","nodeType":"YulIdentifier","src":"9052:11:53"}]},{"nativeSrc":"9153:21:53","nodeType":"YulAssignment","src":"9153:21:53","value":{"arguments":[{"name":"low","nativeSrc":"9164:3:53","nodeType":"YulIdentifier","src":"9164:3:53"},{"name":"twos","nativeSrc":"9169:4:53","nodeType":"YulIdentifier","src":"9169:4:53"}],"functionName":{"name":"div","nativeSrc":"9160:3:53","nodeType":"YulIdentifier","src":"9160:3:53"},"nativeSrc":"9160:14:53","nodeType":"YulFunctionCall","src":"9160:14:53"},"variableNames":[{"name":"low","nativeSrc":"9153:3:53","nodeType":"YulIdentifier","src":"9153:3:53"}]},{"nativeSrc":"9293:39:53","nodeType":"YulAssignment","src":"9293:39:53","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9313:1:53","nodeType":"YulLiteral","src":"9313:1:53","type":"","value":"0"},{"name":"twos","nativeSrc":"9316:4:53","nodeType":"YulIdentifier","src":"9316:4:53"}],"functionName":{"name":"sub","nativeSrc":"9309:3:53","nodeType":"YulIdentifier","src":"9309:3:53"},"nativeSrc":"9309:12:53","nodeType":"YulFunctionCall","src":"9309:12:53"},{"name":"twos","nativeSrc":"9323:4:53","nodeType":"YulIdentifier","src":"9323:4:53"}],"functionName":{"name":"div","nativeSrc":"9305:3:53","nodeType":"YulIdentifier","src":"9305:3:53"},"nativeSrc":"9305:23:53","nodeType":"YulFunctionCall","src":"9305:23:53"},{"kind":"number","nativeSrc":"9330:1:53","nodeType":"YulLiteral","src":"9330:1:53","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9301:3:53","nodeType":"YulIdentifier","src":"9301:3:53"},"nativeSrc":"9301:31:53","nodeType":"YulFunctionCall","src":"9301:31:53"},"variableNames":[{"name":"twos","nativeSrc":"9293:4:53","nodeType":"YulIdentifier","src":"9293:4:53"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":9029,"isOffset":false,"isSlot":false,"src":"9052:11:53","valueSize":1},{"declaration":9029,"isOffset":false,"isSlot":false,"src":"9071:11:53","valueSize":1},{"declaration":9037,"isOffset":false,"isSlot":false,"src":"9153:3:53","valueSize":1},{"declaration":9037,"isOffset":false,"isSlot":false,"src":"9164:3:53","valueSize":1},{"declaration":9076,"isOffset":false,"isSlot":false,"src":"9084:4:53","valueSize":1},{"declaration":9076,"isOffset":false,"isSlot":false,"src":"9169:4:53","valueSize":1},{"declaration":9076,"isOffset":false,"isSlot":false,"src":"9293:4:53","valueSize":1},{"declaration":9076,"isOffset":false,"isSlot":false,"src":"9316:4:53","valueSize":1},{"declaration":9076,"isOffset":false,"isSlot":false,"src":"9323:4:53","valueSize":1}],"flags":["memory-safe"],"id":9084,"nodeType":"InlineAssembly","src":"8962:384:53"},{"expression":{"id":9089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9085,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9037,"src":"9409:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9086,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9035,"src":"9416:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9087,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9076,"src":"9423:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9416:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9409:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9090,"nodeType":"ExpressionStatement","src":"9409:18:53"},{"assignments":[9092],"declarations":[{"constant":false,"id":9092,"mutability":"mutable","name":"inverse","nameLocation":"9770:7:53","nodeType":"VariableDeclaration","scope":9156,"src":"9762:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9091,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9099,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":9093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9781:1:53","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9094,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"9785:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9781:15:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9096,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9780:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":9097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9800:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9780:21:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9762:39:53"},{"expression":{"id":9106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9100,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9092,"src":"10018:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10029:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9102,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"10033:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9103,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9092,"src":"10047:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10033:21:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10029:25:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10018:36:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9107,"nodeType":"ExpressionStatement","src":"10018:36:53"},{"expression":{"id":9114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9108,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9092,"src":"10088:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10099:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9110,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"10103:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9111,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9092,"src":"10117:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10103:21:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10099:25:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10088:36:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9115,"nodeType":"ExpressionStatement","src":"10088:36:53"},{"expression":{"id":9122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9116,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9092,"src":"10160:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10171:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9118,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"10175:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9119,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9092,"src":"10189:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10175:21:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10171:25:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10160:36:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9123,"nodeType":"ExpressionStatement","src":"10160:36:53"},{"expression":{"id":9130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9124,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9092,"src":"10231:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10242:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9126,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"10246:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9127,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9092,"src":"10260:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10246:21:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10242:25:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10231:36:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9131,"nodeType":"ExpressionStatement","src":"10231:36:53"},{"expression":{"id":9138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9132,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9092,"src":"10304:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10315:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9134,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"10319:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9135,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9092,"src":"10333:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10319:21:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10315:25:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10304:36:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9139,"nodeType":"ExpressionStatement","src":"10304:36:53"},{"expression":{"id":9146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9140,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9092,"src":"10378:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":9141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10389:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9142,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9029,"src":"10393:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9143,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9092,"src":"10407:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10393:21:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10389:25:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10378:36:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9147,"nodeType":"ExpressionStatement","src":"10378:36:53"},{"expression":{"id":9152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9148,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9032,"src":"10859:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9149,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9037,"src":"10868:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9150,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9092,"src":"10874:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10868:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10859:22:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9153,"nodeType":"ExpressionStatement","src":"10859:22:53"},{"expression":{"id":9154,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9032,"src":"10902:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9033,"id":9155,"nodeType":"Return","src":"10895:13:53"}]}]},"documentation":{"id":9023,"nodeType":"StructuredDocumentation","src":"6925:312:53","text":" @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license."},"id":9158,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"7251:6:53","nodeType":"FunctionDefinition","parameters":{"id":9030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9025,"mutability":"mutable","name":"x","nameLocation":"7266:1:53","nodeType":"VariableDeclaration","scope":9158,"src":"7258:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9024,"name":"uint256","nodeType":"ElementaryTypeName","src":"7258:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9027,"mutability":"mutable","name":"y","nameLocation":"7277:1:53","nodeType":"VariableDeclaration","scope":9158,"src":"7269:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9026,"name":"uint256","nodeType":"ElementaryTypeName","src":"7269:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9029,"mutability":"mutable","name":"denominator","nameLocation":"7288:11:53","nodeType":"VariableDeclaration","scope":9158,"src":"7280:19:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9028,"name":"uint256","nodeType":"ElementaryTypeName","src":"7280:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7257:43:53"},"returnParameters":{"id":9033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9032,"mutability":"mutable","name":"result","nameLocation":"7332:6:53","nodeType":"VariableDeclaration","scope":9158,"src":"7324:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9031,"name":"uint256","nodeType":"ElementaryTypeName","src":"7324:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7323:16:53"},"scope":10252,"src":"7242:3683:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9194,"nodeType":"Block","src":"11164:128:53","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9174,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9161,"src":"11188:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9175,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9163,"src":"11191:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9176,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9165,"src":"11194:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9173,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[9158,9195],"referencedDeclaration":9158,"src":"11181:6:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":9177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11181:25:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9181,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9168,"src":"11242:8:53","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}],"id":9180,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10251,"src":"11225:16:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$8643_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":9182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11225:26:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9184,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9161,"src":"11262:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9185,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9163,"src":"11265:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9186,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9165,"src":"11268:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9183,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"11255:6:53","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":9187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11255:25:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11283:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11255:29:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11225:59:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9178,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"11209:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":9179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11218:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"11209:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11209:76:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11181:104:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9172,"id":9193,"nodeType":"Return","src":"11174:111:53"}]},"documentation":{"id":9159,"nodeType":"StructuredDocumentation","src":"10931:118:53","text":" @dev Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":9195,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11063:6:53","nodeType":"FunctionDefinition","parameters":{"id":9169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9161,"mutability":"mutable","name":"x","nameLocation":"11078:1:53","nodeType":"VariableDeclaration","scope":9195,"src":"11070:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9160,"name":"uint256","nodeType":"ElementaryTypeName","src":"11070:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9163,"mutability":"mutable","name":"y","nameLocation":"11089:1:53","nodeType":"VariableDeclaration","scope":9195,"src":"11081:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9162,"name":"uint256","nodeType":"ElementaryTypeName","src":"11081:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9165,"mutability":"mutable","name":"denominator","nameLocation":"11100:11:53","nodeType":"VariableDeclaration","scope":9195,"src":"11092:19:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9164,"name":"uint256","nodeType":"ElementaryTypeName","src":"11092:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9168,"mutability":"mutable","name":"rounding","nameLocation":"11122:8:53","nodeType":"VariableDeclaration","scope":9195,"src":"11113:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"},"typeName":{"id":9167,"nodeType":"UserDefinedTypeName","pathNode":{"id":9166,"name":"Rounding","nameLocations":["11113:8:53"],"nodeType":"IdentifierPath","referencedDeclaration":8643,"src":"11113:8:53"},"referencedDeclaration":8643,"src":"11113:8:53","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11069:62:53"},"returnParameters":{"id":9172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9171,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9195,"src":"11155:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9170,"name":"uint256","nodeType":"ElementaryTypeName","src":"11155:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11154:9:53"},"scope":10252,"src":"11054:238:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9244,"nodeType":"Block","src":"11500:245:53","statements":[{"id":9243,"nodeType":"UncheckedBlock","src":"11510:229:53","statements":[{"assignments":[9208,9210],"declarations":[{"constant":false,"id":9208,"mutability":"mutable","name":"high","nameLocation":"11543:4:53","nodeType":"VariableDeclaration","scope":9243,"src":"11535:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9207,"name":"uint256","nodeType":"ElementaryTypeName","src":"11535:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9210,"mutability":"mutable","name":"low","nameLocation":"11557:3:53","nodeType":"VariableDeclaration","scope":9243,"src":"11549:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9209,"name":"uint256","nodeType":"ElementaryTypeName","src":"11549:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9215,"initialValue":{"arguments":[{"id":9212,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9198,"src":"11571:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9213,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9200,"src":"11574:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9211,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8671,"src":"11564:6:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":9214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11564:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11534:42:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9216,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9208,"src":"11594:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":9217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11602:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":9218,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9202,"src":"11607:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11602:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11594:14:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9229,"nodeType":"IfStatement","src":"11590:86:53","trueBody":{"id":9228,"nodeType":"Block","src":"11610:66:53","statements":[{"expression":{"arguments":[{"expression":{"id":9224,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6737,"src":"11640:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$6737_$","typeString":"type(library Panic)"}},"id":9225,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11646:14:53","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":6700,"src":"11640:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9221,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6737,"src":"11628:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$6737_$","typeString":"type(library Panic)"}},"id":9223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11634:5:53","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":6736,"src":"11628:11:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11628:33:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9227,"nodeType":"ExpressionStatement","src":"11628:33:53"}]}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9230,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9208,"src":"11697:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":9233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":9231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11706:3:53","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9232,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9202,"src":"11712:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11706:7:53","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":9234,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11705:9:53","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"11697:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9236,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11696:19:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9237,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9210,"src":"11719:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":9238,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9202,"src":"11726:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11719:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9240,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11718:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11696:32:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9206,"id":9242,"nodeType":"Return","src":"11689:39:53"}]}]},"documentation":{"id":9196,"nodeType":"StructuredDocumentation","src":"11298:111:53","text":" @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256."},"id":9245,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11423:6:53","nodeType":"FunctionDefinition","parameters":{"id":9203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9198,"mutability":"mutable","name":"x","nameLocation":"11438:1:53","nodeType":"VariableDeclaration","scope":9245,"src":"11430:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9197,"name":"uint256","nodeType":"ElementaryTypeName","src":"11430:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9200,"mutability":"mutable","name":"y","nameLocation":"11449:1:53","nodeType":"VariableDeclaration","scope":9245,"src":"11441:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9199,"name":"uint256","nodeType":"ElementaryTypeName","src":"11441:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9202,"mutability":"mutable","name":"n","nameLocation":"11458:1:53","nodeType":"VariableDeclaration","scope":9245,"src":"11452:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9201,"name":"uint8","nodeType":"ElementaryTypeName","src":"11452:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"11429:31:53"},"returnParameters":{"id":9206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9205,"mutability":"mutable","name":"result","nameLocation":"11492:6:53","nodeType":"VariableDeclaration","scope":9245,"src":"11484:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9204,"name":"uint256","nodeType":"ElementaryTypeName","src":"11484:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11483:16:53"},"scope":10252,"src":"11414:331:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9283,"nodeType":"Block","src":"11963:113:53","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9261,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9248,"src":"11987:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9262,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9250,"src":"11990:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9263,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9252,"src":"11993:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":9260,"name":"mulShr","nodeType":"Identifier","overloadedDeclarations":[9245,9284],"referencedDeclaration":9245,"src":"11980:6:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint8) pure returns (uint256)"}},"id":9264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11980:15:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9268,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9255,"src":"12031:8:53","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}],"id":9267,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10251,"src":"12014:16:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$8643_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":9269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12014:26:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9271,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9248,"src":"12051:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9272,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9250,"src":"12054:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":9273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12057:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":9274,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9252,"src":"12062:1:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12057:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9270,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"12044:6:53","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":9276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12044:20:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12067:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12044:24:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12014:54:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9265,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"11998:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":9266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12007:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"11998:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11998:71:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11980:89:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9259,"id":9282,"nodeType":"Return","src":"11973:96:53"}]},"documentation":{"id":9246,"nodeType":"StructuredDocumentation","src":"11751:109:53","text":" @dev Calculates x * y >> n with full precision, following the selected rounding direction."},"id":9284,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11874:6:53","nodeType":"FunctionDefinition","parameters":{"id":9256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9248,"mutability":"mutable","name":"x","nameLocation":"11889:1:53","nodeType":"VariableDeclaration","scope":9284,"src":"11881:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9247,"name":"uint256","nodeType":"ElementaryTypeName","src":"11881:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9250,"mutability":"mutable","name":"y","nameLocation":"11900:1:53","nodeType":"VariableDeclaration","scope":9284,"src":"11892:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9249,"name":"uint256","nodeType":"ElementaryTypeName","src":"11892:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9252,"mutability":"mutable","name":"n","nameLocation":"11909:1:53","nodeType":"VariableDeclaration","scope":9284,"src":"11903:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9251,"name":"uint8","nodeType":"ElementaryTypeName","src":"11903:5:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":9255,"mutability":"mutable","name":"rounding","nameLocation":"11921:8:53","nodeType":"VariableDeclaration","scope":9284,"src":"11912:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"},"typeName":{"id":9254,"nodeType":"UserDefinedTypeName","pathNode":{"id":9253,"name":"Rounding","nameLocations":["11912:8:53"],"nodeType":"IdentifierPath","referencedDeclaration":8643,"src":"11912:8:53"},"referencedDeclaration":8643,"src":"11912:8:53","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11880:50:53"},"returnParameters":{"id":9259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9258,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9284,"src":"11954:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9257,"name":"uint256","nodeType":"ElementaryTypeName","src":"11954:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11953:9:53"},"scope":10252,"src":"11865:211:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9380,"nodeType":"Block","src":"12710:1849:53","statements":[{"id":9379,"nodeType":"UncheckedBlock","src":"12720:1833:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9294,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9289,"src":"12748:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12753:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12748:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9299,"nodeType":"IfStatement","src":"12744:20:53","trueBody":{"expression":{"hexValue":"30","id":9297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12763:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":9293,"id":9298,"nodeType":"Return","src":"12756:8:53"}},{"assignments":[9301],"declarations":[{"constant":false,"id":9301,"mutability":"mutable","name":"remainder","nameLocation":"13243:9:53","nodeType":"VariableDeclaration","scope":9379,"src":"13235:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9300,"name":"uint256","nodeType":"ElementaryTypeName","src":"13235:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9305,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9302,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9287,"src":"13255:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":9303,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9289,"src":"13259:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13255:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13235:25:53"},{"assignments":[9307],"declarations":[{"constant":false,"id":9307,"mutability":"mutable","name":"gcd","nameLocation":"13282:3:53","nodeType":"VariableDeclaration","scope":9379,"src":"13274:11:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9306,"name":"uint256","nodeType":"ElementaryTypeName","src":"13274:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9309,"initialValue":{"id":9308,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9289,"src":"13288:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13274:15:53"},{"assignments":[9311],"declarations":[{"constant":false,"id":9311,"mutability":"mutable","name":"x","nameLocation":"13432:1:53","nodeType":"VariableDeclaration","scope":9379,"src":"13425:8:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9310,"name":"int256","nodeType":"ElementaryTypeName","src":"13425:6:53","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":9313,"initialValue":{"hexValue":"30","id":9312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13436:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13425:12:53"},{"assignments":[9315],"declarations":[{"constant":false,"id":9315,"mutability":"mutable","name":"y","nameLocation":"13458:1:53","nodeType":"VariableDeclaration","scope":9379,"src":"13451:8:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":9314,"name":"int256","nodeType":"ElementaryTypeName","src":"13451:6:53","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":9317,"initialValue":{"hexValue":"31","id":9316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13462:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"13451:12:53"},{"body":{"id":9354,"nodeType":"Block","src":"13501:882:53","statements":[{"assignments":[9322],"declarations":[{"constant":false,"id":9322,"mutability":"mutable","name":"quotient","nameLocation":"13527:8:53","nodeType":"VariableDeclaration","scope":9354,"src":"13519:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9321,"name":"uint256","nodeType":"ElementaryTypeName","src":"13519:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9326,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9323,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9307,"src":"13538:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9324,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9301,"src":"13544:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13538:15:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13519:34:53"},{"expression":{"id":9337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":9327,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9307,"src":"13573:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9328,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9301,"src":"13578:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9329,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13572:16:53","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":9330,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9301,"src":"13678:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9331,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9307,"src":"13923:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9332,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9301,"src":"13929:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9333,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9322,"src":"13941:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13929:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13923:26:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9336,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13591:376:53","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"13572:395:53","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9338,"nodeType":"ExpressionStatement","src":"13572:395:53"},{"expression":{"id":9352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":9339,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9311,"src":"13987:1:53","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":9340,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9315,"src":"13990:1:53","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9341,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13986:6:53","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":9342,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9315,"src":"14072:1:53","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9343,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9311,"src":"14326:1:53","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9344,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9315,"src":"14330:1:53","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":9347,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9322,"src":"14341:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14334:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":9345,"name":"int256","nodeType":"ElementaryTypeName","src":"14334:6:53","typeDescriptions":{}}},"id":9348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14334:16:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14330:20:53","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14326:24:53","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":9351,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13995:373:53","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"src":"13986:382:53","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9353,"nodeType":"ExpressionStatement","src":"13986:382:53"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9318,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9301,"src":"13485:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":9319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13498:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13485:14:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9355,"nodeType":"WhileStatement","src":"13478:905:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9356,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9307,"src":"14401:3:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":9357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14408:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14401:8:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9361,"nodeType":"IfStatement","src":"14397:22:53","trueBody":{"expression":{"hexValue":"30","id":9359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14418:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":9293,"id":9360,"nodeType":"Return","src":"14411:8:53"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9363,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9311,"src":"14470:1:53","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":9364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14474:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14470:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9366,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9289,"src":"14477:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":9370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14489:2:53","subExpression":{"id":9369,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9311,"src":"14490:1:53","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14481:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9367,"name":"uint256","nodeType":"ElementaryTypeName","src":"14481:7:53","typeDescriptions":{}}},"id":9371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14481:11:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14477:15:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":9375,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9311,"src":"14502:1:53","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14494:7:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9373,"name":"uint256","nodeType":"ElementaryTypeName","src":"14494:7:53","typeDescriptions":{}}},"id":9376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14494:10:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9362,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8920,"src":"14462:7:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":9377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14462:43:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9293,"id":9378,"nodeType":"Return","src":"14455:50:53"}]}]},"documentation":{"id":9285,"nodeType":"StructuredDocumentation","src":"12082:553:53","text":" @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n If the input value is not inversible, 0 is returned.\n NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}."},"id":9381,"implemented":true,"kind":"function","modifiers":[],"name":"invMod","nameLocation":"12649:6:53","nodeType":"FunctionDefinition","parameters":{"id":9290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9287,"mutability":"mutable","name":"a","nameLocation":"12664:1:53","nodeType":"VariableDeclaration","scope":9381,"src":"12656:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9286,"name":"uint256","nodeType":"ElementaryTypeName","src":"12656:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9289,"mutability":"mutable","name":"n","nameLocation":"12675:1:53","nodeType":"VariableDeclaration","scope":9381,"src":"12667:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9288,"name":"uint256","nodeType":"ElementaryTypeName","src":"12667:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12655:22:53"},"returnParameters":{"id":9293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9381,"src":"12701:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9291,"name":"uint256","nodeType":"ElementaryTypeName","src":"12701:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12700:9:53"},"scope":10252,"src":"12640:1919:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9401,"nodeType":"Block","src":"15159:82:53","statements":[{"id":9400,"nodeType":"UncheckedBlock","src":"15169:66:53","statements":[{"expression":{"arguments":[{"id":9393,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9384,"src":"15212:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9394,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9386,"src":"15215:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"32","id":9395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15219:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15215:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9397,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9386,"src":"15222:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9391,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"15200:4:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$10252_$","typeString":"type(library Math)"}},"id":9392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15205:6:53","memberName":"modExp","nodeType":"MemberAccess","referencedDeclaration":9438,"src":"15200:11:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":9398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15200:24:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9390,"id":9399,"nodeType":"Return","src":"15193:31:53"}]}]},"documentation":{"id":9382,"nodeType":"StructuredDocumentation","src":"14565:514:53","text":" @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n NOTE: this function does NOT check that `p` is a prime greater than `2`."},"id":9402,"implemented":true,"kind":"function","modifiers":[],"name":"invModPrime","nameLocation":"15093:11:53","nodeType":"FunctionDefinition","parameters":{"id":9387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9384,"mutability":"mutable","name":"a","nameLocation":"15113:1:53","nodeType":"VariableDeclaration","scope":9402,"src":"15105:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9383,"name":"uint256","nodeType":"ElementaryTypeName","src":"15105:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9386,"mutability":"mutable","name":"p","nameLocation":"15124:1:53","nodeType":"VariableDeclaration","scope":9402,"src":"15116:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9385,"name":"uint256","nodeType":"ElementaryTypeName","src":"15116:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15104:22:53"},"returnParameters":{"id":9390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9389,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9402,"src":"15150:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9388,"name":"uint256","nodeType":"ElementaryTypeName","src":"15150:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15149:9:53"},"scope":10252,"src":"15084:157:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9437,"nodeType":"Block","src":"16011:174:53","statements":[{"assignments":[9415,9417],"declarations":[{"constant":false,"id":9415,"mutability":"mutable","name":"success","nameLocation":"16027:7:53","nodeType":"VariableDeclaration","scope":9437,"src":"16022:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9414,"name":"bool","nodeType":"ElementaryTypeName","src":"16022:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9417,"mutability":"mutable","name":"result","nameLocation":"16044:6:53","nodeType":"VariableDeclaration","scope":9437,"src":"16036:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9416,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9423,"initialValue":{"arguments":[{"id":9419,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9405,"src":"16064:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9420,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9407,"src":"16067:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9421,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9409,"src":"16070:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9418,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[9462,9544],"referencedDeclaration":9462,"src":"16054:9:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (bool,uint256)"}},"id":9422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16054:18:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16021:51:53"},{"condition":{"id":9425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16086:8:53","subExpression":{"id":9424,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9415,"src":"16087:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9434,"nodeType":"IfStatement","src":"16082:74:53","trueBody":{"id":9433,"nodeType":"Block","src":"16096:60:53","statements":[{"expression":{"arguments":[{"expression":{"id":9429,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6737,"src":"16122:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$6737_$","typeString":"type(library Panic)"}},"id":9430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16128:16:53","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":6704,"src":"16122:22:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9426,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6737,"src":"16110:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$6737_$","typeString":"type(library Panic)"}},"id":9428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16116:5:53","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":6736,"src":"16110:11:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16110:35:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9432,"nodeType":"ExpressionStatement","src":"16110:35:53"}]}},{"expression":{"id":9435,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9417,"src":"16172:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9413,"id":9436,"nodeType":"Return","src":"16165:13:53"}]},"documentation":{"id":9403,"nodeType":"StructuredDocumentation","src":"15247:678:53","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n Requirements:\n - modulus can't be zero\n - underlying staticcall to precompile must succeed\n IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n sure the chain you're using it on supports the precompiled contract for modular exponentiation\n at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n interpreted as 0."},"id":9438,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"15939:6:53","nodeType":"FunctionDefinition","parameters":{"id":9410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9405,"mutability":"mutable","name":"b","nameLocation":"15954:1:53","nodeType":"VariableDeclaration","scope":9438,"src":"15946:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9404,"name":"uint256","nodeType":"ElementaryTypeName","src":"15946:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9407,"mutability":"mutable","name":"e","nameLocation":"15965:1:53","nodeType":"VariableDeclaration","scope":9438,"src":"15957:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9406,"name":"uint256","nodeType":"ElementaryTypeName","src":"15957:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9409,"mutability":"mutable","name":"m","nameLocation":"15976:1:53","nodeType":"VariableDeclaration","scope":9438,"src":"15968:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9408,"name":"uint256","nodeType":"ElementaryTypeName","src":"15968:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15945:33:53"},"returnParameters":{"id":9413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9412,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9438,"src":"16002:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9411,"name":"uint256","nodeType":"ElementaryTypeName","src":"16002:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16001:9:53"},"scope":10252,"src":"15930:255:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9461,"nodeType":"Block","src":"17039:1493:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9452,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9445,"src":"17053:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17058:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17053:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9459,"nodeType":"IfStatement","src":"17049:29:53","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":9455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17069:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":9456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17076:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":9457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17068:10:53","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":9451,"id":9458,"nodeType":"Return","src":"17061:17:53"}},{"AST":{"nativeSrc":"17113:1413:53","nodeType":"YulBlock","src":"17113:1413:53","statements":[{"nativeSrc":"17127:22:53","nodeType":"YulVariableDeclaration","src":"17127:22:53","value":{"arguments":[{"kind":"number","nativeSrc":"17144:4:53","nodeType":"YulLiteral","src":"17144:4:53","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"17138:5:53","nodeType":"YulIdentifier","src":"17138:5:53"},"nativeSrc":"17138:11:53","nodeType":"YulFunctionCall","src":"17138:11:53"},"variables":[{"name":"ptr","nativeSrc":"17131:3:53","nodeType":"YulTypedName","src":"17131:3:53","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"18057:3:53","nodeType":"YulIdentifier","src":"18057:3:53"},{"kind":"number","nativeSrc":"18062:4:53","nodeType":"YulLiteral","src":"18062:4:53","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18050:6:53","nodeType":"YulIdentifier","src":"18050:6:53"},"nativeSrc":"18050:17:53","nodeType":"YulFunctionCall","src":"18050:17:53"},"nativeSrc":"18050:17:53","nodeType":"YulExpressionStatement","src":"18050:17:53"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18091:3:53","nodeType":"YulIdentifier","src":"18091:3:53"},{"kind":"number","nativeSrc":"18096:4:53","nodeType":"YulLiteral","src":"18096:4:53","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18087:3:53","nodeType":"YulIdentifier","src":"18087:3:53"},"nativeSrc":"18087:14:53","nodeType":"YulFunctionCall","src":"18087:14:53"},{"kind":"number","nativeSrc":"18103:4:53","nodeType":"YulLiteral","src":"18103:4:53","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18080:6:53","nodeType":"YulIdentifier","src":"18080:6:53"},"nativeSrc":"18080:28:53","nodeType":"YulFunctionCall","src":"18080:28:53"},"nativeSrc":"18080:28:53","nodeType":"YulExpressionStatement","src":"18080:28:53"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18132:3:53","nodeType":"YulIdentifier","src":"18132:3:53"},{"kind":"number","nativeSrc":"18137:4:53","nodeType":"YulLiteral","src":"18137:4:53","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"18128:3:53","nodeType":"YulIdentifier","src":"18128:3:53"},"nativeSrc":"18128:14:53","nodeType":"YulFunctionCall","src":"18128:14:53"},{"kind":"number","nativeSrc":"18144:4:53","nodeType":"YulLiteral","src":"18144:4:53","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18121:6:53","nodeType":"YulIdentifier","src":"18121:6:53"},"nativeSrc":"18121:28:53","nodeType":"YulFunctionCall","src":"18121:28:53"},"nativeSrc":"18121:28:53","nodeType":"YulExpressionStatement","src":"18121:28:53"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18173:3:53","nodeType":"YulIdentifier","src":"18173:3:53"},{"kind":"number","nativeSrc":"18178:4:53","nodeType":"YulLiteral","src":"18178:4:53","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"18169:3:53","nodeType":"YulIdentifier","src":"18169:3:53"},"nativeSrc":"18169:14:53","nodeType":"YulFunctionCall","src":"18169:14:53"},{"name":"b","nativeSrc":"18185:1:53","nodeType":"YulIdentifier","src":"18185:1:53"}],"functionName":{"name":"mstore","nativeSrc":"18162:6:53","nodeType":"YulIdentifier","src":"18162:6:53"},"nativeSrc":"18162:25:53","nodeType":"YulFunctionCall","src":"18162:25:53"},"nativeSrc":"18162:25:53","nodeType":"YulExpressionStatement","src":"18162:25:53"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18211:3:53","nodeType":"YulIdentifier","src":"18211:3:53"},{"kind":"number","nativeSrc":"18216:4:53","nodeType":"YulLiteral","src":"18216:4:53","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"18207:3:53","nodeType":"YulIdentifier","src":"18207:3:53"},"nativeSrc":"18207:14:53","nodeType":"YulFunctionCall","src":"18207:14:53"},{"name":"e","nativeSrc":"18223:1:53","nodeType":"YulIdentifier","src":"18223:1:53"}],"functionName":{"name":"mstore","nativeSrc":"18200:6:53","nodeType":"YulIdentifier","src":"18200:6:53"},"nativeSrc":"18200:25:53","nodeType":"YulFunctionCall","src":"18200:25:53"},"nativeSrc":"18200:25:53","nodeType":"YulExpressionStatement","src":"18200:25:53"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18249:3:53","nodeType":"YulIdentifier","src":"18249:3:53"},{"kind":"number","nativeSrc":"18254:4:53","nodeType":"YulLiteral","src":"18254:4:53","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"18245:3:53","nodeType":"YulIdentifier","src":"18245:3:53"},"nativeSrc":"18245:14:53","nodeType":"YulFunctionCall","src":"18245:14:53"},{"name":"m","nativeSrc":"18261:1:53","nodeType":"YulIdentifier","src":"18261:1:53"}],"functionName":{"name":"mstore","nativeSrc":"18238:6:53","nodeType":"YulIdentifier","src":"18238:6:53"},"nativeSrc":"18238:25:53","nodeType":"YulFunctionCall","src":"18238:25:53"},"nativeSrc":"18238:25:53","nodeType":"YulExpressionStatement","src":"18238:25:53"},{"nativeSrc":"18425:57:53","nodeType":"YulAssignment","src":"18425:57:53","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"18447:3:53","nodeType":"YulIdentifier","src":"18447:3:53"},"nativeSrc":"18447:5:53","nodeType":"YulFunctionCall","src":"18447:5:53"},{"kind":"number","nativeSrc":"18454:4:53","nodeType":"YulLiteral","src":"18454:4:53","type":"","value":"0x05"},{"name":"ptr","nativeSrc":"18460:3:53","nodeType":"YulIdentifier","src":"18460:3:53"},{"kind":"number","nativeSrc":"18465:4:53","nodeType":"YulLiteral","src":"18465:4:53","type":"","value":"0xc0"},{"kind":"number","nativeSrc":"18471:4:53","nodeType":"YulLiteral","src":"18471:4:53","type":"","value":"0x00"},{"kind":"number","nativeSrc":"18477:4:53","nodeType":"YulLiteral","src":"18477:4:53","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"18436:10:53","nodeType":"YulIdentifier","src":"18436:10:53"},"nativeSrc":"18436:46:53","nodeType":"YulFunctionCall","src":"18436:46:53"},"variableNames":[{"name":"success","nativeSrc":"18425:7:53","nodeType":"YulIdentifier","src":"18425:7:53"}]},{"nativeSrc":"18495:21:53","nodeType":"YulAssignment","src":"18495:21:53","value":{"arguments":[{"kind":"number","nativeSrc":"18511:4:53","nodeType":"YulLiteral","src":"18511:4:53","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"18505:5:53","nodeType":"YulIdentifier","src":"18505:5:53"},"nativeSrc":"18505:11:53","nodeType":"YulFunctionCall","src":"18505:11:53"},"variableNames":[{"name":"result","nativeSrc":"18495:6:53","nodeType":"YulIdentifier","src":"18495:6:53"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":9441,"isOffset":false,"isSlot":false,"src":"18185:1:53","valueSize":1},{"declaration":9443,"isOffset":false,"isSlot":false,"src":"18223:1:53","valueSize":1},{"declaration":9445,"isOffset":false,"isSlot":false,"src":"18261:1:53","valueSize":1},{"declaration":9450,"isOffset":false,"isSlot":false,"src":"18495:6:53","valueSize":1},{"declaration":9448,"isOffset":false,"isSlot":false,"src":"18425:7:53","valueSize":1}],"flags":["memory-safe"],"id":9460,"nodeType":"InlineAssembly","src":"17088:1438:53"}]},"documentation":{"id":9439,"nodeType":"StructuredDocumentation","src":"16191:738:53","text":" @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n to operate modulo 0 or if the underlying precompile reverted.\n IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n of a revert, but the result may be incorrectly interpreted as 0."},"id":9462,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"16943:9:53","nodeType":"FunctionDefinition","parameters":{"id":9446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9441,"mutability":"mutable","name":"b","nameLocation":"16961:1:53","nodeType":"VariableDeclaration","scope":9462,"src":"16953:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9440,"name":"uint256","nodeType":"ElementaryTypeName","src":"16953:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9443,"mutability":"mutable","name":"e","nameLocation":"16972:1:53","nodeType":"VariableDeclaration","scope":9462,"src":"16964:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9442,"name":"uint256","nodeType":"ElementaryTypeName","src":"16964:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9445,"mutability":"mutable","name":"m","nameLocation":"16983:1:53","nodeType":"VariableDeclaration","scope":9462,"src":"16975:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9444,"name":"uint256","nodeType":"ElementaryTypeName","src":"16975:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16952:33:53"},"returnParameters":{"id":9451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9448,"mutability":"mutable","name":"success","nameLocation":"17014:7:53","nodeType":"VariableDeclaration","scope":9462,"src":"17009:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9447,"name":"bool","nodeType":"ElementaryTypeName","src":"17009:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9450,"mutability":"mutable","name":"result","nameLocation":"17031:6:53","nodeType":"VariableDeclaration","scope":9462,"src":"17023:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9449,"name":"uint256","nodeType":"ElementaryTypeName","src":"17023:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17008:30:53"},"scope":10252,"src":"16934:1598:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9497,"nodeType":"Block","src":"18729:179:53","statements":[{"assignments":[9475,9477],"declarations":[{"constant":false,"id":9475,"mutability":"mutable","name":"success","nameLocation":"18745:7:53","nodeType":"VariableDeclaration","scope":9497,"src":"18740:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9474,"name":"bool","nodeType":"ElementaryTypeName","src":"18740:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9477,"mutability":"mutable","name":"result","nameLocation":"18767:6:53","nodeType":"VariableDeclaration","scope":9497,"src":"18754:19:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9476,"name":"bytes","nodeType":"ElementaryTypeName","src":"18754:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9483,"initialValue":{"arguments":[{"id":9479,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9465,"src":"18787:1:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9480,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9467,"src":"18790:1:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9481,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9469,"src":"18793:1:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9478,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[9462,9544],"referencedDeclaration":9544,"src":"18777:9:53","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory,bytes memory,bytes memory) view returns (bool,bytes memory)"}},"id":9482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18777:18:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"18739:56:53"},{"condition":{"id":9485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18809:8:53","subExpression":{"id":9484,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9475,"src":"18810:7:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9494,"nodeType":"IfStatement","src":"18805:74:53","trueBody":{"id":9493,"nodeType":"Block","src":"18819:60:53","statements":[{"expression":{"arguments":[{"expression":{"id":9489,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6737,"src":"18845:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$6737_$","typeString":"type(library Panic)"}},"id":9490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18851:16:53","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":6704,"src":"18845:22:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9486,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6737,"src":"18833:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$6737_$","typeString":"type(library Panic)"}},"id":9488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18839:5:53","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":6736,"src":"18833:11:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18833:35:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9492,"nodeType":"ExpressionStatement","src":"18833:35:53"}]}},{"expression":{"id":9495,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9477,"src":"18895:6:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":9473,"id":9496,"nodeType":"Return","src":"18888:13:53"}]},"documentation":{"id":9463,"nodeType":"StructuredDocumentation","src":"18538:85:53","text":" @dev Variant of {modExp} that supports inputs of arbitrary length."},"id":9498,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"18637:6:53","nodeType":"FunctionDefinition","parameters":{"id":9470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9465,"mutability":"mutable","name":"b","nameLocation":"18657:1:53","nodeType":"VariableDeclaration","scope":9498,"src":"18644:14:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9464,"name":"bytes","nodeType":"ElementaryTypeName","src":"18644:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9467,"mutability":"mutable","name":"e","nameLocation":"18673:1:53","nodeType":"VariableDeclaration","scope":9498,"src":"18660:14:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9466,"name":"bytes","nodeType":"ElementaryTypeName","src":"18660:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9469,"mutability":"mutable","name":"m","nameLocation":"18689:1:53","nodeType":"VariableDeclaration","scope":9498,"src":"18676:14:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9468,"name":"bytes","nodeType":"ElementaryTypeName","src":"18676:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18643:48:53"},"returnParameters":{"id":9473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9472,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9498,"src":"18715:12:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9471,"name":"bytes","nodeType":"ElementaryTypeName","src":"18715:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18714:14:53"},"scope":10252,"src":"18628:280:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9543,"nodeType":"Block","src":"19162:771:53","statements":[{"condition":{"arguments":[{"id":9513,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9505,"src":"19187:1:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9512,"name":"_zeroBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9577,"src":"19176:10:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":9514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19176:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9522,"nodeType":"IfStatement","src":"19172:47:53","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":9515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19199:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":9518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19216:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"19206:9:53","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":9516,"name":"bytes","nodeType":"ElementaryTypeName","src":"19210:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":9519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19206:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":9520,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19198:21:53","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"functionReturnParameters":9511,"id":9521,"nodeType":"Return","src":"19191:28:53"}},{"assignments":[9524],"declarations":[{"constant":false,"id":9524,"mutability":"mutable","name":"mLen","nameLocation":"19238:4:53","nodeType":"VariableDeclaration","scope":9543,"src":"19230:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9523,"name":"uint256","nodeType":"ElementaryTypeName","src":"19230:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9527,"initialValue":{"expression":{"id":9525,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9505,"src":"19245:1:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19247:6:53","memberName":"length","nodeType":"MemberAccess","src":"19245:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19230:23:53"},{"expression":{"id":9540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9528,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9510,"src":"19335:6:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":9531,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9501,"src":"19361:1:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19363:6:53","memberName":"length","nodeType":"MemberAccess","src":"19361:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9533,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9503,"src":"19371:1:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19373:6:53","memberName":"length","nodeType":"MemberAccess","src":"19371:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9535,"name":"mLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9524,"src":"19381:4:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9536,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9501,"src":"19387:1:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9537,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9503,"src":"19390:1:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9538,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9505,"src":"19393:1:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9529,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19344:3:53","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19348:12:53","memberName":"encodePacked","nodeType":"MemberAccess","src":"19344:16:53","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":9539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19344:51:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"19335:60:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9541,"nodeType":"ExpressionStatement","src":"19335:60:53"},{"AST":{"nativeSrc":"19431:496:53","nodeType":"YulBlock","src":"19431:496:53","statements":[{"nativeSrc":"19445:32:53","nodeType":"YulVariableDeclaration","src":"19445:32:53","value":{"arguments":[{"name":"result","nativeSrc":"19464:6:53","nodeType":"YulIdentifier","src":"19464:6:53"},{"kind":"number","nativeSrc":"19472:4:53","nodeType":"YulLiteral","src":"19472:4:53","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19460:3:53","nodeType":"YulIdentifier","src":"19460:3:53"},"nativeSrc":"19460:17:53","nodeType":"YulFunctionCall","src":"19460:17:53"},"variables":[{"name":"dataPtr","nativeSrc":"19449:7:53","nodeType":"YulTypedName","src":"19449:7:53","type":""}]},{"nativeSrc":"19567:73:53","nodeType":"YulAssignment","src":"19567:73:53","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"19589:3:53","nodeType":"YulIdentifier","src":"19589:3:53"},"nativeSrc":"19589:5:53","nodeType":"YulFunctionCall","src":"19589:5:53"},{"kind":"number","nativeSrc":"19596:4:53","nodeType":"YulLiteral","src":"19596:4:53","type":"","value":"0x05"},{"name":"dataPtr","nativeSrc":"19602:7:53","nodeType":"YulIdentifier","src":"19602:7:53"},{"arguments":[{"name":"result","nativeSrc":"19617:6:53","nodeType":"YulIdentifier","src":"19617:6:53"}],"functionName":{"name":"mload","nativeSrc":"19611:5:53","nodeType":"YulIdentifier","src":"19611:5:53"},"nativeSrc":"19611:13:53","nodeType":"YulFunctionCall","src":"19611:13:53"},{"name":"dataPtr","nativeSrc":"19626:7:53","nodeType":"YulIdentifier","src":"19626:7:53"},{"name":"mLen","nativeSrc":"19635:4:53","nodeType":"YulIdentifier","src":"19635:4:53"}],"functionName":{"name":"staticcall","nativeSrc":"19578:10:53","nodeType":"YulIdentifier","src":"19578:10:53"},"nativeSrc":"19578:62:53","nodeType":"YulFunctionCall","src":"19578:62:53"},"variableNames":[{"name":"success","nativeSrc":"19567:7:53","nodeType":"YulIdentifier","src":"19567:7:53"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"19796:6:53","nodeType":"YulIdentifier","src":"19796:6:53"},{"name":"mLen","nativeSrc":"19804:4:53","nodeType":"YulIdentifier","src":"19804:4:53"}],"functionName":{"name":"mstore","nativeSrc":"19789:6:53","nodeType":"YulIdentifier","src":"19789:6:53"},"nativeSrc":"19789:20:53","nodeType":"YulFunctionCall","src":"19789:20:53"},"nativeSrc":"19789:20:53","nodeType":"YulExpressionStatement","src":"19789:20:53"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19892:4:53","nodeType":"YulLiteral","src":"19892:4:53","type":"","value":"0x40"},{"arguments":[{"name":"dataPtr","nativeSrc":"19902:7:53","nodeType":"YulIdentifier","src":"19902:7:53"},{"name":"mLen","nativeSrc":"19911:4:53","nodeType":"YulIdentifier","src":"19911:4:53"}],"functionName":{"name":"add","nativeSrc":"19898:3:53","nodeType":"YulIdentifier","src":"19898:3:53"},"nativeSrc":"19898:18:53","nodeType":"YulFunctionCall","src":"19898:18:53"}],"functionName":{"name":"mstore","nativeSrc":"19885:6:53","nodeType":"YulIdentifier","src":"19885:6:53"},"nativeSrc":"19885:32:53","nodeType":"YulFunctionCall","src":"19885:32:53"},"nativeSrc":"19885:32:53","nodeType":"YulExpressionStatement","src":"19885:32:53"}]},"evmVersion":"paris","externalReferences":[{"declaration":9524,"isOffset":false,"isSlot":false,"src":"19635:4:53","valueSize":1},{"declaration":9524,"isOffset":false,"isSlot":false,"src":"19804:4:53","valueSize":1},{"declaration":9524,"isOffset":false,"isSlot":false,"src":"19911:4:53","valueSize":1},{"declaration":9510,"isOffset":false,"isSlot":false,"src":"19464:6:53","valueSize":1},{"declaration":9510,"isOffset":false,"isSlot":false,"src":"19617:6:53","valueSize":1},{"declaration":9510,"isOffset":false,"isSlot":false,"src":"19796:6:53","valueSize":1},{"declaration":9508,"isOffset":false,"isSlot":false,"src":"19567:7:53","valueSize":1}],"flags":["memory-safe"],"id":9542,"nodeType":"InlineAssembly","src":"19406:521:53"}]},"documentation":{"id":9499,"nodeType":"StructuredDocumentation","src":"18914:88:53","text":" @dev Variant of {tryModExp} that supports inputs of arbitrary length."},"id":9544,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"19016:9:53","nodeType":"FunctionDefinition","parameters":{"id":9506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9501,"mutability":"mutable","name":"b","nameLocation":"19048:1:53","nodeType":"VariableDeclaration","scope":9544,"src":"19035:14:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9500,"name":"bytes","nodeType":"ElementaryTypeName","src":"19035:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9503,"mutability":"mutable","name":"e","nameLocation":"19072:1:53","nodeType":"VariableDeclaration","scope":9544,"src":"19059:14:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9502,"name":"bytes","nodeType":"ElementaryTypeName","src":"19059:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":9505,"mutability":"mutable","name":"m","nameLocation":"19096:1:53","nodeType":"VariableDeclaration","scope":9544,"src":"19083:14:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9504,"name":"bytes","nodeType":"ElementaryTypeName","src":"19083:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19025:78:53"},"returnParameters":{"id":9511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9508,"mutability":"mutable","name":"success","nameLocation":"19132:7:53","nodeType":"VariableDeclaration","scope":9544,"src":"19127:12:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9507,"name":"bool","nodeType":"ElementaryTypeName","src":"19127:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9510,"mutability":"mutable","name":"result","nameLocation":"19154:6:53","nodeType":"VariableDeclaration","scope":9544,"src":"19141:19:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9509,"name":"bytes","nodeType":"ElementaryTypeName","src":"19141:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19126:35:53"},"scope":10252,"src":"19007:926:53","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9576,"nodeType":"Block","src":"20088:176:53","statements":[{"body":{"id":9572,"nodeType":"Block","src":"20145:92:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":9567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9563,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9547,"src":"20163:9:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9565,"indexExpression":{"id":9564,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9553,"src":"20173:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20163:12:53","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":9566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20179:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20163:17:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9571,"nodeType":"IfStatement","src":"20159:68:53","trueBody":{"id":9570,"nodeType":"Block","src":"20182:45:53","statements":[{"expression":{"hexValue":"66616c7365","id":9568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20207:5:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":9551,"id":9569,"nodeType":"Return","src":"20200:12:53"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9556,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9553,"src":"20118:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9557,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9547,"src":"20122:9:53","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20132:6:53","memberName":"length","nodeType":"MemberAccess","src":"20122:16:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20118:20:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9573,"initializationExpression":{"assignments":[9553],"declarations":[{"constant":false,"id":9553,"mutability":"mutable","name":"i","nameLocation":"20111:1:53","nodeType":"VariableDeclaration","scope":9573,"src":"20103:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9552,"name":"uint256","nodeType":"ElementaryTypeName","src":"20103:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9555,"initialValue":{"hexValue":"30","id":9554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20115:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20103:13:53"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":9561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"20140:3:53","subExpression":{"id":9560,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9553,"src":"20142:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9562,"nodeType":"ExpressionStatement","src":"20140:3:53"},"nodeType":"ForStatement","src":"20098:139:53"},{"expression":{"hexValue":"74727565","id":9574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20253:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9551,"id":9575,"nodeType":"Return","src":"20246:11:53"}]},"documentation":{"id":9545,"nodeType":"StructuredDocumentation","src":"19939:72:53","text":" @dev Returns whether the provided byte array is zero."},"id":9577,"implemented":true,"kind":"function","modifiers":[],"name":"_zeroBytes","nameLocation":"20025:10:53","nodeType":"FunctionDefinition","parameters":{"id":9548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9547,"mutability":"mutable","name":"byteArray","nameLocation":"20049:9:53","nodeType":"VariableDeclaration","scope":9577,"src":"20036:22:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9546,"name":"bytes","nodeType":"ElementaryTypeName","src":"20036:5:53","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20035:24:53"},"returnParameters":{"id":9551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9550,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9577,"src":"20082:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9549,"name":"bool","nodeType":"ElementaryTypeName","src":"20082:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20081:6:53"},"scope":10252,"src":"20016:248:53","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":9795,"nodeType":"Block","src":"20624:5124:53","statements":[{"id":9794,"nodeType":"UncheckedBlock","src":"20634:5108:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9585,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9580,"src":"20728:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":9586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20733:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20728:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9591,"nodeType":"IfStatement","src":"20724:53:53","trueBody":{"id":9590,"nodeType":"Block","src":"20736:41:53","statements":[{"expression":{"id":9588,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9580,"src":"20761:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9584,"id":9589,"nodeType":"Return","src":"20754:8:53"}]}},{"assignments":[9593],"declarations":[{"constant":false,"id":9593,"mutability":"mutable","name":"aa","nameLocation":"21712:2:53","nodeType":"VariableDeclaration","scope":9794,"src":"21704:10:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9592,"name":"uint256","nodeType":"ElementaryTypeName","src":"21704:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9595,"initialValue":{"id":9594,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9580,"src":"21717:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21704:14:53"},{"assignments":[9597],"declarations":[{"constant":false,"id":9597,"mutability":"mutable","name":"xn","nameLocation":"21740:2:53","nodeType":"VariableDeclaration","scope":9794,"src":"21732:10:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9596,"name":"uint256","nodeType":"ElementaryTypeName","src":"21732:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9599,"initialValue":{"hexValue":"31","id":9598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21745:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"21732:14:53"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9600,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9593,"src":"21765:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"id":9603,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":9601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21772:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":9602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21777:3:53","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21772:8:53","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}}],"id":9604,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21771:10:53","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"src":"21765:16:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9615,"nodeType":"IfStatement","src":"21761:92:53","trueBody":{"id":9614,"nodeType":"Block","src":"21783:70:53","statements":[{"expression":{"id":9608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9606,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9593,"src":"21801:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":9607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21808:3:53","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21801:10:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9609,"nodeType":"ExpressionStatement","src":"21801:10:53"},{"expression":{"id":9612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9610,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"21829:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3634","id":9611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21836:2:53","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21829:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9613,"nodeType":"ExpressionStatement","src":"21829:9:53"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9616,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9593,"src":"21870:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":9619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":9617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21877:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":9618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:53","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21877:7:53","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"id":9620,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21876:9:53","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"src":"21870:15:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9631,"nodeType":"IfStatement","src":"21866:90:53","trueBody":{"id":9630,"nodeType":"Block","src":"21887:69:53","statements":[{"expression":{"id":9624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9622,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9593,"src":"21905:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":9623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21912:2:53","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21905:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9625,"nodeType":"ExpressionStatement","src":"21905:9:53"},{"expression":{"id":9628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9626,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"21932:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3332","id":9627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21939:2:53","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21932:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9629,"nodeType":"ExpressionStatement","src":"21932:9:53"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9632,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9593,"src":"21973:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":9635,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":9633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21980:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":9634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21985:2:53","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21980:7:53","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":9636,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21979:9:53","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"21973:15:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9647,"nodeType":"IfStatement","src":"21969:90:53","trueBody":{"id":9646,"nodeType":"Block","src":"21990:69:53","statements":[{"expression":{"id":9640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9638,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9593,"src":"22008:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":9639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22015:2:53","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22008:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9641,"nodeType":"ExpressionStatement","src":"22008:9:53"},{"expression":{"id":9644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9642,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"22035:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3136","id":9643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22042:2:53","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22035:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9645,"nodeType":"ExpressionStatement","src":"22035:9:53"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9648,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9593,"src":"22076:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":9651,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":9649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22083:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":9650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22088:2:53","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22083:7:53","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}}],"id":9652,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22082:9:53","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"src":"22076:15:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9663,"nodeType":"IfStatement","src":"22072:89:53","trueBody":{"id":9662,"nodeType":"Block","src":"22093:68:53","statements":[{"expression":{"id":9656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9654,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9593,"src":"22111:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":9655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22118:2:53","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22111:9:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9657,"nodeType":"ExpressionStatement","src":"22111:9:53"},{"expression":{"id":9660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9658,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"22138:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":9659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22145:1:53","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22138:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9661,"nodeType":"ExpressionStatement","src":"22138:8:53"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9664,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9593,"src":"22178:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":9667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":9665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22185:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":9666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22190:1:53","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22185:6:53","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":9668,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22184:8:53","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"src":"22178:14:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9679,"nodeType":"IfStatement","src":"22174:87:53","trueBody":{"id":9678,"nodeType":"Block","src":"22194:67:53","statements":[{"expression":{"id":9672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9670,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9593,"src":"22212:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":9671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22219:1:53","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22212:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9673,"nodeType":"ExpressionStatement","src":"22212:8:53"},{"expression":{"id":9676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9674,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"22238:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"34","id":9675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22245:1:53","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22238:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9677,"nodeType":"ExpressionStatement","src":"22238:8:53"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9680,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9593,"src":"22278:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"id":9683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":9681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22285:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":9682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22290:1:53","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22285:6:53","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}}],"id":9684,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22284:8:53","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}},"src":"22278:14:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9695,"nodeType":"IfStatement","src":"22274:87:53","trueBody":{"id":9694,"nodeType":"Block","src":"22294:67:53","statements":[{"expression":{"id":9688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9686,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9593,"src":"22312:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":9687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22319:1:53","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22312:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9689,"nodeType":"ExpressionStatement","src":"22312:8:53"},{"expression":{"id":9692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9690,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"22338:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"32","id":9691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22345:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22338:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9693,"nodeType":"ExpressionStatement","src":"22338:8:53"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9696,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9593,"src":"22378:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"id":9699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":9697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22385:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":9698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22390:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22385:6:53","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}}],"id":9700,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22384:8:53","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}},"src":"22378:14:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9707,"nodeType":"IfStatement","src":"22374:61:53","trueBody":{"id":9706,"nodeType":"Block","src":"22394:41:53","statements":[{"expression":{"id":9704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9702,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"22412:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"31","id":9703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22419:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22412:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9705,"nodeType":"ExpressionStatement","src":"22412:8:53"}]}},{"expression":{"id":9715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9708,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"22855:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":9709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22861:1:53","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9710,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"22865:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22861:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9712,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22860:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":9713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22872:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22860:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22855:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9716,"nodeType":"ExpressionStatement","src":"22855:18:53"},{"expression":{"id":9726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9717,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"24760:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9718,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"24766:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9719,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9580,"src":"24771:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9720,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"24775:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24771:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24766:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9723,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24765:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":9724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24782:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24765:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24760:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9727,"nodeType":"ExpressionStatement","src":"24760:23:53"},{"expression":{"id":9737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9728,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"24869:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9729,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"24875:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9730,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9580,"src":"24880:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9731,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"24884:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24880:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24875:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9734,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24874:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":9735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24891:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24874:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24869:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9738,"nodeType":"ExpressionStatement","src":"24869:23:53"},{"expression":{"id":9748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9739,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"24980:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9740,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"24986:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9741,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9580,"src":"24991:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9742,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"24995:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24991:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24986:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9745,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24985:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":9746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25002:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24985:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24980:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9749,"nodeType":"ExpressionStatement","src":"24980:23:53"},{"expression":{"id":9759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9750,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"25089:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9751,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"25095:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9752,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9580,"src":"25100:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9753,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"25104:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25100:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25095:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9756,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25094:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":9757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25111:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25094:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25089:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9760,"nodeType":"ExpressionStatement","src":"25089:23:53"},{"expression":{"id":9770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9761,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"25199:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9762,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"25205:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9763,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9580,"src":"25210:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9764,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"25214:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25210:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25205:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9767,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25204:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":9768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25221:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25204:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25199:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9771,"nodeType":"ExpressionStatement","src":"25199:23:53"},{"expression":{"id":9781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9772,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"25309:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9773,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"25315:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9774,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9580,"src":"25320:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9775,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"25324:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25320:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25315:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9778,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25314:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":9779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25331:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25314:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25309:23:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9782,"nodeType":"ExpressionStatement","src":"25309:23:53"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9783,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"25698:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9786,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"25719:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9787,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9580,"src":"25724:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":9788,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"25728:2:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25724:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25719:11:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9784,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"25703:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":9785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25712:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"25703:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25703:28:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25698:33:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9584,"id":9793,"nodeType":"Return","src":"25691:40:53"}]}]},"documentation":{"id":9578,"nodeType":"StructuredDocumentation","src":"20270:292:53","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n using integer operations."},"id":9796,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"20576:4:53","nodeType":"FunctionDefinition","parameters":{"id":9581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9580,"mutability":"mutable","name":"a","nameLocation":"20589:1:53","nodeType":"VariableDeclaration","scope":9796,"src":"20581:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9579,"name":"uint256","nodeType":"ElementaryTypeName","src":"20581:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20580:11:53"},"returnParameters":{"id":9584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9583,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9796,"src":"20615:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9582,"name":"uint256","nodeType":"ElementaryTypeName","src":"20615:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20614:9:53"},"scope":10252,"src":"20567:5181:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9829,"nodeType":"Block","src":"25921:171:53","statements":[{"id":9828,"nodeType":"UncheckedBlock","src":"25931:155:53","statements":[{"assignments":[9808],"declarations":[{"constant":false,"id":9808,"mutability":"mutable","name":"result","nameLocation":"25963:6:53","nodeType":"VariableDeclaration","scope":9828,"src":"25955:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9807,"name":"uint256","nodeType":"ElementaryTypeName","src":"25955:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9812,"initialValue":{"arguments":[{"id":9810,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9799,"src":"25977:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9809,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[9796,9830],"referencedDeclaration":9796,"src":"25972:4:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":9811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25972:7:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25955:24:53"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9813,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9808,"src":"26000:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9817,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9802,"src":"26042:8:53","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}],"id":9816,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10251,"src":"26025:16:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$8643_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":9818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26025:26:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9819,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9808,"src":"26055:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":9820,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9808,"src":"26064:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26055:15:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9822,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9799,"src":"26073:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26055:19:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26025:49:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9814,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"26009:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":9815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26018:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"26009:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26009:66:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26000:75:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9806,"id":9827,"nodeType":"Return","src":"25993:82:53"}]}]},"documentation":{"id":9797,"nodeType":"StructuredDocumentation","src":"25754:86:53","text":" @dev Calculates sqrt(a), following the selected rounding direction."},"id":9830,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"25854:4:53","nodeType":"FunctionDefinition","parameters":{"id":9803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9799,"mutability":"mutable","name":"a","nameLocation":"25867:1:53","nodeType":"VariableDeclaration","scope":9830,"src":"25859:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9798,"name":"uint256","nodeType":"ElementaryTypeName","src":"25859:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9802,"mutability":"mutable","name":"rounding","nameLocation":"25879:8:53","nodeType":"VariableDeclaration","scope":9830,"src":"25870:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"},"typeName":{"id":9801,"nodeType":"UserDefinedTypeName","pathNode":{"id":9800,"name":"Rounding","nameLocations":["25870:8:53"],"nodeType":"IdentifierPath","referencedDeclaration":8643,"src":"25870:8:53"},"referencedDeclaration":8643,"src":"25870:8:53","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"25858:30:53"},"returnParameters":{"id":9806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9805,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9830,"src":"25912:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9804,"name":"uint256","nodeType":"ElementaryTypeName","src":"25912:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25911:9:53"},"scope":10252,"src":"25845:247:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9920,"nodeType":"Block","src":"26281:2334:53","statements":[{"expression":{"id":9847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9838,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9836,"src":"26363:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9841,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9833,"src":"26383:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":9842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26387:34:53","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"26383:38:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9839,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"26367:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":9840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26376:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"26367:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26367:55:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":9845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26426:1:53","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"26367:60:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26363:64:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9848,"nodeType":"ExpressionStatement","src":"26363:64:53"},{"expression":{"id":9861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9849,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9836,"src":"26503:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9852,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9833,"src":"26525:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":9853,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9836,"src":"26530:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26525:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9855,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26524:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":9856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26535:18:53","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"26524:29:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9850,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"26508:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":9851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26517:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"26508:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26508:46:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":9859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26558:1:53","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"26508:51:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26503:56:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9862,"nodeType":"ExpressionStatement","src":"26503:56:53"},{"expression":{"id":9875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9863,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9836,"src":"26634:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9866,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9833,"src":"26656:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":9867,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9836,"src":"26661:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26656:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9869,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26655:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":9870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26666:10:53","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"26655:21:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9864,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"26639:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":9865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26648:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"26639:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26639:38:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":9873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26681:1:53","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"26639:43:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26634:48:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9876,"nodeType":"ExpressionStatement","src":"26634:48:53"},{"expression":{"id":9889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9877,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9836,"src":"26757:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9880,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9833,"src":"26779:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":9881,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9836,"src":"26784:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26779:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9883,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26778:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":9884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26789:6:53","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"26778:17:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9878,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"26762:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":9879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26771:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"26762:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26762:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":9887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26800:1:53","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"26762:39:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26757:44:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9890,"nodeType":"ExpressionStatement","src":"26757:44:53"},{"expression":{"id":9903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9891,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9836,"src":"26874:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9894,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9833,"src":"26896:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":9895,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9836,"src":"26901:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26896:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9897,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26895:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":9898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26906:4:53","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"26895:15:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9892,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"26879:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":9893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26888:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"26879:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26879:32:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":9901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26915:1:53","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"26879:37:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26874:42:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9904,"nodeType":"ExpressionStatement","src":"26874:42:53"},{"expression":{"id":9917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9905,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9836,"src":"26988:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9908,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9833,"src":"27010:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":9909,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9836,"src":"27015:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27010:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9911,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27009:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866","id":9912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27020:3:53","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"27009:14:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9906,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"26993:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":9907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27002:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"26993:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26993:31:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":9915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27028:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"26993:36:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26988:41:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9918,"nodeType":"ExpressionStatement","src":"26988:41:53"},{"AST":{"nativeSrc":"28490:119:53","nodeType":"YulBlock","src":"28490:119:53","statements":[{"nativeSrc":"28504:95:53","nodeType":"YulAssignment","src":"28504:95:53","value":{"arguments":[{"name":"r","nativeSrc":"28512:1:53","nodeType":"YulIdentifier","src":"28512:1:53"},{"arguments":[{"arguments":[{"name":"r","nativeSrc":"28524:1:53","nodeType":"YulIdentifier","src":"28524:1:53"},{"name":"x","nativeSrc":"28527:1:53","nodeType":"YulIdentifier","src":"28527:1:53"}],"functionName":{"name":"shr","nativeSrc":"28520:3:53","nodeType":"YulIdentifier","src":"28520:3:53"},"nativeSrc":"28520:9:53","nodeType":"YulFunctionCall","src":"28520:9:53"},{"kind":"number","nativeSrc":"28531:66:53","nodeType":"YulLiteral","src":"28531:66:53","type":"","value":"0x0000010102020202030303030303030300000000000000000000000000000000"}],"functionName":{"name":"byte","nativeSrc":"28515:4:53","nodeType":"YulIdentifier","src":"28515:4:53"},"nativeSrc":"28515:83:53","nodeType":"YulFunctionCall","src":"28515:83:53"}],"functionName":{"name":"or","nativeSrc":"28509:2:53","nodeType":"YulIdentifier","src":"28509:2:53"},"nativeSrc":"28509:90:53","nodeType":"YulFunctionCall","src":"28509:90:53"},"variableNames":[{"name":"r","nativeSrc":"28504:1:53","nodeType":"YulIdentifier","src":"28504:1:53"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":9836,"isOffset":false,"isSlot":false,"src":"28504:1:53","valueSize":1},{"declaration":9836,"isOffset":false,"isSlot":false,"src":"28512:1:53","valueSize":1},{"declaration":9836,"isOffset":false,"isSlot":false,"src":"28524:1:53","valueSize":1},{"declaration":9833,"isOffset":false,"isSlot":false,"src":"28527:1:53","valueSize":1}],"flags":["memory-safe"],"id":9919,"nodeType":"InlineAssembly","src":"28465:144:53"}]},"documentation":{"id":9831,"nodeType":"StructuredDocumentation","src":"26098:119:53","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":9921,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"26231:4:53","nodeType":"FunctionDefinition","parameters":{"id":9834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9833,"mutability":"mutable","name":"x","nameLocation":"26244:1:53","nodeType":"VariableDeclaration","scope":9921,"src":"26236:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9832,"name":"uint256","nodeType":"ElementaryTypeName","src":"26236:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26235:11:53"},"returnParameters":{"id":9837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9836,"mutability":"mutable","name":"r","nameLocation":"26278:1:53","nodeType":"VariableDeclaration","scope":9921,"src":"26270:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9835,"name":"uint256","nodeType":"ElementaryTypeName","src":"26270:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26269:11:53"},"scope":10252,"src":"26222:2393:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":9954,"nodeType":"Block","src":"28848:175:53","statements":[{"id":9953,"nodeType":"UncheckedBlock","src":"28858:159:53","statements":[{"assignments":[9933],"declarations":[{"constant":false,"id":9933,"mutability":"mutable","name":"result","nameLocation":"28890:6:53","nodeType":"VariableDeclaration","scope":9953,"src":"28882:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9932,"name":"uint256","nodeType":"ElementaryTypeName","src":"28882:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9937,"initialValue":{"arguments":[{"id":9935,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9924,"src":"28904:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9934,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[9921,9955],"referencedDeclaration":9921,"src":"28899:4:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":9936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28899:11:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28882:28:53"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9938,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9933,"src":"28931:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":9942,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9927,"src":"28973:8:53","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}],"id":9941,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10251,"src":"28956:16:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$8643_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":9943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28956:26:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":9944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28986:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":9945,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9933,"src":"28991:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28986:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9947,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9924,"src":"29000:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28986:19:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28956:49:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":9939,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"28940:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":9940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28949:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"28940:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":9950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28940:66:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28931:75:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9931,"id":9952,"nodeType":"Return","src":"28924:82:53"}]}]},"documentation":{"id":9922,"nodeType":"StructuredDocumentation","src":"28621:142:53","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":9955,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"28777:4:53","nodeType":"FunctionDefinition","parameters":{"id":9928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9924,"mutability":"mutable","name":"value","nameLocation":"28790:5:53","nodeType":"VariableDeclaration","scope":9955,"src":"28782:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9923,"name":"uint256","nodeType":"ElementaryTypeName","src":"28782:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9927,"mutability":"mutable","name":"rounding","nameLocation":"28806:8:53","nodeType":"VariableDeclaration","scope":9955,"src":"28797:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"},"typeName":{"id":9926,"nodeType":"UserDefinedTypeName","pathNode":{"id":9925,"name":"Rounding","nameLocations":["28797:8:53"],"nodeType":"IdentifierPath","referencedDeclaration":8643,"src":"28797:8:53"},"referencedDeclaration":8643,"src":"28797:8:53","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"28781:34:53"},"returnParameters":{"id":9931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9930,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9955,"src":"28839:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9929,"name":"uint256","nodeType":"ElementaryTypeName","src":"28839:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28838:9:53"},"scope":10252,"src":"28768:255:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10083,"nodeType":"Block","src":"29216:854:53","statements":[{"assignments":[9964],"declarations":[{"constant":false,"id":9964,"mutability":"mutable","name":"result","nameLocation":"29234:6:53","nodeType":"VariableDeclaration","scope":10083,"src":"29226:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9963,"name":"uint256","nodeType":"ElementaryTypeName","src":"29226:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9966,"initialValue":{"hexValue":"30","id":9965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29243:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"29226:18:53"},{"id":10080,"nodeType":"UncheckedBlock","src":"29254:787:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9967,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"29282:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":9970,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":9968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29291:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":9969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29297:2:53","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29291:8:53","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29282:17:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9983,"nodeType":"IfStatement","src":"29278:103:53","trueBody":{"id":9982,"nodeType":"Block","src":"29301:80:53","statements":[{"expression":{"id":9976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9972,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"29319:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":9975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":9973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29328:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":9974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29334:2:53","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29328:8:53","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29319:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9977,"nodeType":"ExpressionStatement","src":"29319:17:53"},{"expression":{"id":9980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9978,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9964,"src":"29354:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":9979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29364:2:53","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29354:12:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9981,"nodeType":"ExpressionStatement","src":"29354:12:53"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9984,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"29398:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":9987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":9985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29407:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":9986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29413:2:53","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29407:8:53","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29398:17:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10000,"nodeType":"IfStatement","src":"29394:103:53","trueBody":{"id":9999,"nodeType":"Block","src":"29417:80:53","statements":[{"expression":{"id":9993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9989,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"29435:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":9992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":9990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29444:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":9991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29450:2:53","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29444:8:53","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29435:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9994,"nodeType":"ExpressionStatement","src":"29435:17:53"},{"expression":{"id":9997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9995,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9964,"src":"29470:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":9996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29480:2:53","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29470:12:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9998,"nodeType":"ExpressionStatement","src":"29470:12:53"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"29514:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":10004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29523:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":10003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29529:2:53","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29523:8:53","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29514:17:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10017,"nodeType":"IfStatement","src":"29510:103:53","trueBody":{"id":10016,"nodeType":"Block","src":"29533:80:53","statements":[{"expression":{"id":10010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10006,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"29551:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":10009,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29560:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":10008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29566:2:53","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29560:8:53","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29551:17:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10011,"nodeType":"ExpressionStatement","src":"29551:17:53"},{"expression":{"id":10014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10012,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9964,"src":"29586:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":10013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29596:2:53","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29586:12:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10015,"nodeType":"ExpressionStatement","src":"29586:12:53"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10018,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"29630:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":10021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29639:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":10020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29645:1:53","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29639:7:53","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29630:16:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10034,"nodeType":"IfStatement","src":"29626:100:53","trueBody":{"id":10033,"nodeType":"Block","src":"29648:78:53","statements":[{"expression":{"id":10027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10023,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"29666:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":10026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29675:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":10025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29681:1:53","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29675:7:53","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29666:16:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10028,"nodeType":"ExpressionStatement","src":"29666:16:53"},{"expression":{"id":10031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10029,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9964,"src":"29700:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":10030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29710:1:53","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29700:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10032,"nodeType":"ExpressionStatement","src":"29700:11:53"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10035,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"29743:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":10038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29752:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":10037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29758:1:53","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29752:7:53","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29743:16:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10051,"nodeType":"IfStatement","src":"29739:100:53","trueBody":{"id":10050,"nodeType":"Block","src":"29761:78:53","statements":[{"expression":{"id":10044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10040,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"29779:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":10043,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29788:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":10042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29794:1:53","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29788:7:53","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29779:16:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10045,"nodeType":"ExpressionStatement","src":"29779:16:53"},{"expression":{"id":10048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10046,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9964,"src":"29813:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":10047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29823:1:53","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29813:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10049,"nodeType":"ExpressionStatement","src":"29813:11:53"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"29856:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":10055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29865:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":10054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29871:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29865:7:53","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29856:16:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10068,"nodeType":"IfStatement","src":"29852:100:53","trueBody":{"id":10067,"nodeType":"Block","src":"29874:78:53","statements":[{"expression":{"id":10061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10057,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"29892:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":10060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29901:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":10059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29907:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29901:7:53","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29892:16:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10062,"nodeType":"ExpressionStatement","src":"29892:16:53"},{"expression":{"id":10065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10063,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9964,"src":"29926:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":10064,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29936:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29926:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10066,"nodeType":"ExpressionStatement","src":"29926:11:53"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10069,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9958,"src":"29969:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":10072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29978:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":10071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29984:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"29978:7:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"29969:16:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10079,"nodeType":"IfStatement","src":"29965:66:53","trueBody":{"id":10078,"nodeType":"Block","src":"29987:44:53","statements":[{"expression":{"id":10076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10074,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9964,"src":"30005:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":10075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30015:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30005:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10077,"nodeType":"ExpressionStatement","src":"30005:11:53"}]}}]},{"expression":{"id":10081,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9964,"src":"30057:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9962,"id":10082,"nodeType":"Return","src":"30050:13:53"}]},"documentation":{"id":9956,"nodeType":"StructuredDocumentation","src":"29029:120:53","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":10084,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"29163:5:53","nodeType":"FunctionDefinition","parameters":{"id":9959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9958,"mutability":"mutable","name":"value","nameLocation":"29177:5:53","nodeType":"VariableDeclaration","scope":10084,"src":"29169:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9957,"name":"uint256","nodeType":"ElementaryTypeName","src":"29169:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29168:15:53"},"returnParameters":{"id":9962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9961,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10084,"src":"29207:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9960,"name":"uint256","nodeType":"ElementaryTypeName","src":"29207:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29206:9:53"},"scope":10252,"src":"29154:916:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10117,"nodeType":"Block","src":"30305:177:53","statements":[{"id":10116,"nodeType":"UncheckedBlock","src":"30315:161:53","statements":[{"assignments":[10096],"declarations":[{"constant":false,"id":10096,"mutability":"mutable","name":"result","nameLocation":"30347:6:53","nodeType":"VariableDeclaration","scope":10116,"src":"30339:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10095,"name":"uint256","nodeType":"ElementaryTypeName","src":"30339:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10100,"initialValue":{"arguments":[{"id":10098,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10087,"src":"30362:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10097,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[10084,10118],"referencedDeclaration":10084,"src":"30356:5:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":10099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30356:12:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30339:29:53"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10101,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10096,"src":"30389:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10105,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10090,"src":"30431:8:53","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}],"id":10104,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10251,"src":"30414:16:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$8643_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":10106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30414:26:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":10107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30444:2:53","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":10108,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10096,"src":"30450:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30444:12:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10110,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10087,"src":"30459:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30444:20:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30414:50:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10102,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"30398:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":10103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30407:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"30398:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30398:67:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30389:76:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10094,"id":10115,"nodeType":"Return","src":"30382:83:53"}]}]},"documentation":{"id":10085,"nodeType":"StructuredDocumentation","src":"30076:143:53","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":10118,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"30233:5:53","nodeType":"FunctionDefinition","parameters":{"id":10091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10087,"mutability":"mutable","name":"value","nameLocation":"30247:5:53","nodeType":"VariableDeclaration","scope":10118,"src":"30239:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10086,"name":"uint256","nodeType":"ElementaryTypeName","src":"30239:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10090,"mutability":"mutable","name":"rounding","nameLocation":"30263:8:53","nodeType":"VariableDeclaration","scope":10118,"src":"30254:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"},"typeName":{"id":10089,"nodeType":"UserDefinedTypeName","pathNode":{"id":10088,"name":"Rounding","nameLocations":["30254:8:53"],"nodeType":"IdentifierPath","referencedDeclaration":8643,"src":"30254:8:53"},"referencedDeclaration":8643,"src":"30254:8:53","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"30238:34:53"},"returnParameters":{"id":10094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10093,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10118,"src":"30296:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10092,"name":"uint256","nodeType":"ElementaryTypeName","src":"30296:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30295:9:53"},"scope":10252,"src":"30224:258:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10194,"nodeType":"Block","src":"30800:675:53","statements":[{"expression":{"id":10135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10126,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"30882:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10129,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10121,"src":"30902:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":10130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30906:34:53","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"30902:38:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10127,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"30886:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":10128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30895:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"30886:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30886:55:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":10133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30945:1:53","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"30886:60:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30882:64:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10136,"nodeType":"ExpressionStatement","src":"30882:64:53"},{"expression":{"id":10149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10137,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"31022:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10140,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10121,"src":"31044:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":10141,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"31049:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31044:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10143,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31043:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":10144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31054:18:53","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"31043:29:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10138,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"31027:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":10139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31036:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"31027:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31027:46:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":10147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31077:1:53","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"31027:51:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31022:56:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10150,"nodeType":"ExpressionStatement","src":"31022:56:53"},{"expression":{"id":10163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10151,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"31153:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10154,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10121,"src":"31175:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":10155,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"31180:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31175:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10157,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31174:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":10158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31185:10:53","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"31174:21:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10152,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"31158:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":10153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31167:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"31158:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31158:38:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":10161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31200:1:53","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"31158:43:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31153:48:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10164,"nodeType":"ExpressionStatement","src":"31153:48:53"},{"expression":{"id":10177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10165,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"31276:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10168,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10121,"src":"31298:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":10169,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"31303:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31298:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10171,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31297:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":10172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31308:6:53","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"31297:17:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10166,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"31281:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":10167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31290:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"31281:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31281:34:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":10175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31319:1:53","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"31281:39:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31276:44:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10178,"nodeType":"ExpressionStatement","src":"31276:44:53"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10179,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"31426:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"33","id":10180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31431:1:53","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31426:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10182,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31425:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10185,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10121,"src":"31453:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":10186,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10124,"src":"31458:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31453:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10188,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31452:8:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":10189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31463:4:53","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"31452:15:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10183,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"31436:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":10184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31445:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"31436:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31436:32:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31425:43:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10125,"id":10193,"nodeType":"Return","src":"31418:50:53"}]},"documentation":{"id":10119,"nodeType":"StructuredDocumentation","src":"30488:246:53","text":" @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":10195,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"30748:6:53","nodeType":"FunctionDefinition","parameters":{"id":10122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10121,"mutability":"mutable","name":"x","nameLocation":"30763:1:53","nodeType":"VariableDeclaration","scope":10195,"src":"30755:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10120,"name":"uint256","nodeType":"ElementaryTypeName","src":"30755:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30754:11:53"},"returnParameters":{"id":10125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10124,"mutability":"mutable","name":"r","nameLocation":"30797:1:53","nodeType":"VariableDeclaration","scope":10195,"src":"30789:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10123,"name":"uint256","nodeType":"ElementaryTypeName","src":"30789:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30788:11:53"},"scope":10252,"src":"30739:736:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10231,"nodeType":"Block","src":"31712:184:53","statements":[{"id":10230,"nodeType":"UncheckedBlock","src":"31722:168:53","statements":[{"assignments":[10207],"declarations":[{"constant":false,"id":10207,"mutability":"mutable","name":"result","nameLocation":"31754:6:53","nodeType":"VariableDeclaration","scope":10230,"src":"31746:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10206,"name":"uint256","nodeType":"ElementaryTypeName","src":"31746:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10211,"initialValue":{"arguments":[{"id":10209,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10198,"src":"31770:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10208,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[10195,10232],"referencedDeclaration":10195,"src":"31763:6:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":10210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31763:13:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31746:30:53"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10212,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10207,"src":"31797:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10216,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10201,"src":"31839:8:53","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}],"id":10215,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10251,"src":"31822:16:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$8643_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":10217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31822:26:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":10218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31852:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10219,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10207,"src":"31858:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":10220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31868:1:53","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31858:11:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10222,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31857:13:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31852:18:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10224,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10198,"src":"31873:5:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31852:26:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31822:56:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10213,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"31806:8:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":10214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31815:6:53","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"31806:15:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":10227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31806:73:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31797:82:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10205,"id":10229,"nodeType":"Return","src":"31790:89:53"}]}]},"documentation":{"id":10196,"nodeType":"StructuredDocumentation","src":"31481:144:53","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":10232,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"31639:6:53","nodeType":"FunctionDefinition","parameters":{"id":10202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10198,"mutability":"mutable","name":"value","nameLocation":"31654:5:53","nodeType":"VariableDeclaration","scope":10232,"src":"31646:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10197,"name":"uint256","nodeType":"ElementaryTypeName","src":"31646:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10201,"mutability":"mutable","name":"rounding","nameLocation":"31670:8:53","nodeType":"VariableDeclaration","scope":10232,"src":"31661:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"},"typeName":{"id":10200,"nodeType":"UserDefinedTypeName","pathNode":{"id":10199,"name":"Rounding","nameLocations":["31661:8:53"],"nodeType":"IdentifierPath","referencedDeclaration":8643,"src":"31661:8:53"},"referencedDeclaration":8643,"src":"31661:8:53","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"31645:34:53"},"returnParameters":{"id":10205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10204,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10232,"src":"31703:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10203,"name":"uint256","nodeType":"ElementaryTypeName","src":"31703:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31702:9:53"},"scope":10252,"src":"31630:266:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10250,"nodeType":"Block","src":"32094:48:53","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":10248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":10246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":10243,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10236,"src":"32117:8:53","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}],"id":10242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32111:5:53","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":10241,"name":"uint8","nodeType":"ElementaryTypeName","src":"32111:5:53","typeDescriptions":{}}},"id":10244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32111:15:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":10245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32129:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"32111:19:53","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":10247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32134:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"32111:24:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10240,"id":10249,"nodeType":"Return","src":"32104:31:53"}]},"documentation":{"id":10233,"nodeType":"StructuredDocumentation","src":"31902:113:53","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"id":10251,"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"32029:16:53","nodeType":"FunctionDefinition","parameters":{"id":10237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10236,"mutability":"mutable","name":"rounding","nameLocation":"32055:8:53","nodeType":"VariableDeclaration","scope":10251,"src":"32046:17:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"},"typeName":{"id":10235,"nodeType":"UserDefinedTypeName","pathNode":{"id":10234,"name":"Rounding","nameLocations":["32046:8:53"],"nodeType":"IdentifierPath","referencedDeclaration":8643,"src":"32046:8:53"},"referencedDeclaration":8643,"src":"32046:8:53","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$8643","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"32045:19:53"},"returnParameters":{"id":10240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10239,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10251,"src":"32088:4:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10238,"name":"bool","nodeType":"ElementaryTypeName","src":"32088:4:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"32087:6:53"},"scope":10252,"src":"32020:122:53","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":10253,"src":"281:31863:53","usedErrors":[],"usedEvents":[]}],"src":"103:32042:53"},"id":53},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","exportedSymbols":{"SafeCast":[12017]},"id":12018,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10254,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"192:24:54"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":10255,"nodeType":"StructuredDocumentation","src":"218:550:54","text":" @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"id":12017,"linearizedBaseContracts":[12017],"name":"SafeCast","nameLocation":"777:8:54","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":10256,"nodeType":"StructuredDocumentation","src":"792:68:54","text":" @dev Value doesn't fit in an uint of `bits` size."},"errorSelector":"6dfcc650","id":10262,"name":"SafeCastOverflowedUintDowncast","nameLocation":"871:30:54","nodeType":"ErrorDefinition","parameters":{"id":10261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10258,"mutability":"mutable","name":"bits","nameLocation":"908:4:54","nodeType":"VariableDeclaration","scope":10262,"src":"902:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10257,"name":"uint8","nodeType":"ElementaryTypeName","src":"902:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":10260,"mutability":"mutable","name":"value","nameLocation":"922:5:54","nodeType":"VariableDeclaration","scope":10262,"src":"914:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10259,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"901:27:54"},"src":"865:64:54"},{"documentation":{"id":10263,"nodeType":"StructuredDocumentation","src":"935:75:54","text":" @dev An int value doesn't fit in an uint of `bits` size."},"errorSelector":"a8ce4432","id":10267,"name":"SafeCastOverflowedIntToUint","nameLocation":"1021:27:54","nodeType":"ErrorDefinition","parameters":{"id":10266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10265,"mutability":"mutable","name":"value","nameLocation":"1056:5:54","nodeType":"VariableDeclaration","scope":10267,"src":"1049:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10264,"name":"int256","nodeType":"ElementaryTypeName","src":"1049:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1048:14:54"},"src":"1015:48:54"},{"documentation":{"id":10268,"nodeType":"StructuredDocumentation","src":"1069:67:54","text":" @dev Value doesn't fit in an int of `bits` size."},"errorSelector":"327269a7","id":10274,"name":"SafeCastOverflowedIntDowncast","nameLocation":"1147:29:54","nodeType":"ErrorDefinition","parameters":{"id":10273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10270,"mutability":"mutable","name":"bits","nameLocation":"1183:4:54","nodeType":"VariableDeclaration","scope":10274,"src":"1177:10:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":10269,"name":"uint8","nodeType":"ElementaryTypeName","src":"1177:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":10272,"mutability":"mutable","name":"value","nameLocation":"1196:5:54","nodeType":"VariableDeclaration","scope":10274,"src":"1189:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":10271,"name":"int256","nodeType":"ElementaryTypeName","src":"1189:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1176:26:54"},"src":"1141:62:54"},{"documentation":{"id":10275,"nodeType":"StructuredDocumentation","src":"1209:75:54","text":" @dev An uint value doesn't fit in an int of `bits` size."},"errorSelector":"24775e06","id":10279,"name":"SafeCastOverflowedUintToInt","nameLocation":"1295:27:54","nodeType":"ErrorDefinition","parameters":{"id":10278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10277,"mutability":"mutable","name":"value","nameLocation":"1331:5:54","nodeType":"VariableDeclaration","scope":10279,"src":"1323:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10276,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1322:15:54"},"src":"1289:49:54"},{"body":{"id":10306,"nodeType":"Block","src":"1695:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10287,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10282,"src":"1709:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10290,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1722:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":10289,"name":"uint248","nodeType":"ElementaryTypeName","src":"1722:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":10288,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1717:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1717:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":10292,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1731:3:54","memberName":"max","nodeType":"MemberAccess","src":"1717:17:54","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1709:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10300,"nodeType":"IfStatement","src":"1705:105:54","trueBody":{"id":10299,"nodeType":"Block","src":"1736:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":10295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1788:3:54","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":10296,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10282,"src":"1793:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10294,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"1757:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1757:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10298,"nodeType":"RevertStatement","src":"1750:49:54"}]}},{"expression":{"arguments":[{"id":10303,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10282,"src":"1834:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1826:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":10301,"name":"uint248","nodeType":"ElementaryTypeName","src":"1826:7:54","typeDescriptions":{}}},"id":10304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1826:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":10286,"id":10305,"nodeType":"Return","src":"1819:21:54"}]},"documentation":{"id":10280,"nodeType":"StructuredDocumentation","src":"1344:280:54","text":" @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":10307,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1638:9:54","nodeType":"FunctionDefinition","parameters":{"id":10283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10282,"mutability":"mutable","name":"value","nameLocation":"1656:5:54","nodeType":"VariableDeclaration","scope":10307,"src":"1648:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10281,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1647:15:54"},"returnParameters":{"id":10286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10307,"src":"1686:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":10284,"name":"uint248","nodeType":"ElementaryTypeName","src":"1686:7:54","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1685:9:54"},"scope":12017,"src":"1629:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10334,"nodeType":"Block","src":"2204:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10315,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10310,"src":"2218:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2231:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":10317,"name":"uint240","nodeType":"ElementaryTypeName","src":"2231:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":10316,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2226:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2226:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":10320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2240:3:54","memberName":"max","nodeType":"MemberAccess","src":"2226:17:54","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"2218:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10328,"nodeType":"IfStatement","src":"2214:105:54","trueBody":{"id":10327,"nodeType":"Block","src":"2245:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":10323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:3:54","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":10324,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10310,"src":"2302:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10322,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"2266:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2266:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10326,"nodeType":"RevertStatement","src":"2259:49:54"}]}},{"expression":{"arguments":[{"id":10331,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10310,"src":"2343:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2335:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":10329,"name":"uint240","nodeType":"ElementaryTypeName","src":"2335:7:54","typeDescriptions":{}}},"id":10332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2335:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":10314,"id":10333,"nodeType":"Return","src":"2328:21:54"}]},"documentation":{"id":10308,"nodeType":"StructuredDocumentation","src":"1853:280:54","text":" @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":10335,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"2147:9:54","nodeType":"FunctionDefinition","parameters":{"id":10311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10310,"mutability":"mutable","name":"value","nameLocation":"2165:5:54","nodeType":"VariableDeclaration","scope":10335,"src":"2157:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10309,"name":"uint256","nodeType":"ElementaryTypeName","src":"2157:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2156:15:54"},"returnParameters":{"id":10314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10313,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10335,"src":"2195:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":10312,"name":"uint240","nodeType":"ElementaryTypeName","src":"2195:7:54","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"2194:9:54"},"scope":12017,"src":"2138:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10362,"nodeType":"Block","src":"2713:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10343,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10338,"src":"2727:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2740:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":10345,"name":"uint232","nodeType":"ElementaryTypeName","src":"2740:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":10344,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2735:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2735:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":10348,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2749:3:54","memberName":"max","nodeType":"MemberAccess","src":"2735:17:54","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2727:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10356,"nodeType":"IfStatement","src":"2723:105:54","trueBody":{"id":10355,"nodeType":"Block","src":"2754:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":10351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2806:3:54","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":10352,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10338,"src":"2811:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10350,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"2775:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2775:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10354,"nodeType":"RevertStatement","src":"2768:49:54"}]}},{"expression":{"arguments":[{"id":10359,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10338,"src":"2852:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2844:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":10357,"name":"uint232","nodeType":"ElementaryTypeName","src":"2844:7:54","typeDescriptions":{}}},"id":10360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2844:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":10342,"id":10361,"nodeType":"Return","src":"2837:21:54"}]},"documentation":{"id":10336,"nodeType":"StructuredDocumentation","src":"2362:280:54","text":" @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":10363,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2656:9:54","nodeType":"FunctionDefinition","parameters":{"id":10339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10338,"mutability":"mutable","name":"value","nameLocation":"2674:5:54","nodeType":"VariableDeclaration","scope":10363,"src":"2666:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10337,"name":"uint256","nodeType":"ElementaryTypeName","src":"2666:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:15:54"},"returnParameters":{"id":10342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10341,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10363,"src":"2704:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":10340,"name":"uint232","nodeType":"ElementaryTypeName","src":"2704:7:54","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2703:9:54"},"scope":12017,"src":"2647:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10390,"nodeType":"Block","src":"3222:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10371,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10366,"src":"3236:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3249:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":10373,"name":"uint224","nodeType":"ElementaryTypeName","src":"3249:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":10372,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3244:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3244:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":10376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3258:3:54","memberName":"max","nodeType":"MemberAccess","src":"3244:17:54","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3236:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10384,"nodeType":"IfStatement","src":"3232:105:54","trueBody":{"id":10383,"nodeType":"Block","src":"3263:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":10379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3315:3:54","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":10380,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10366,"src":"3320:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10378,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"3284:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3284:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10382,"nodeType":"RevertStatement","src":"3277:49:54"}]}},{"expression":{"arguments":[{"id":10387,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10366,"src":"3361:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3353:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":10385,"name":"uint224","nodeType":"ElementaryTypeName","src":"3353:7:54","typeDescriptions":{}}},"id":10388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3353:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":10370,"id":10389,"nodeType":"Return","src":"3346:21:54"}]},"documentation":{"id":10364,"nodeType":"StructuredDocumentation","src":"2871:280:54","text":" @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":10391,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"3165:9:54","nodeType":"FunctionDefinition","parameters":{"id":10367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10366,"mutability":"mutable","name":"value","nameLocation":"3183:5:54","nodeType":"VariableDeclaration","scope":10391,"src":"3175:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10365,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3174:15:54"},"returnParameters":{"id":10370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10369,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10391,"src":"3213:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":10368,"name":"uint224","nodeType":"ElementaryTypeName","src":"3213:7:54","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3212:9:54"},"scope":12017,"src":"3156:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10418,"nodeType":"Block","src":"3731:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10399,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10394,"src":"3745:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3758:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":10401,"name":"uint216","nodeType":"ElementaryTypeName","src":"3758:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":10400,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3753:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3753:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":10404,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3767:3:54","memberName":"max","nodeType":"MemberAccess","src":"3753:17:54","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3745:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10412,"nodeType":"IfStatement","src":"3741:105:54","trueBody":{"id":10411,"nodeType":"Block","src":"3772:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":10407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3824:3:54","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":10408,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10394,"src":"3829:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10406,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"3793:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10410,"nodeType":"RevertStatement","src":"3786:49:54"}]}},{"expression":{"arguments":[{"id":10415,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10394,"src":"3870:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3862:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":10413,"name":"uint216","nodeType":"ElementaryTypeName","src":"3862:7:54","typeDescriptions":{}}},"id":10416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3862:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":10398,"id":10417,"nodeType":"Return","src":"3855:21:54"}]},"documentation":{"id":10392,"nodeType":"StructuredDocumentation","src":"3380:280:54","text":" @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":10419,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3674:9:54","nodeType":"FunctionDefinition","parameters":{"id":10395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10394,"mutability":"mutable","name":"value","nameLocation":"3692:5:54","nodeType":"VariableDeclaration","scope":10419,"src":"3684:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10393,"name":"uint256","nodeType":"ElementaryTypeName","src":"3684:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3683:15:54"},"returnParameters":{"id":10398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10397,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10419,"src":"3722:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":10396,"name":"uint216","nodeType":"ElementaryTypeName","src":"3722:7:54","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3721:9:54"},"scope":12017,"src":"3665:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10446,"nodeType":"Block","src":"4240:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10427,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10422,"src":"4254:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4267:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":10429,"name":"uint208","nodeType":"ElementaryTypeName","src":"4267:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":10428,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4262:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4262:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":10432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4276:3:54","memberName":"max","nodeType":"MemberAccess","src":"4262:17:54","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"4254:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10440,"nodeType":"IfStatement","src":"4250:105:54","trueBody":{"id":10439,"nodeType":"Block","src":"4281:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":10435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4333:3:54","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":10436,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10422,"src":"4338:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10434,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"4302:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4302:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10438,"nodeType":"RevertStatement","src":"4295:49:54"}]}},{"expression":{"arguments":[{"id":10443,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10422,"src":"4379:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10442,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4371:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":10441,"name":"uint208","nodeType":"ElementaryTypeName","src":"4371:7:54","typeDescriptions":{}}},"id":10444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4371:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":10426,"id":10445,"nodeType":"Return","src":"4364:21:54"}]},"documentation":{"id":10420,"nodeType":"StructuredDocumentation","src":"3889:280:54","text":" @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":10447,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"4183:9:54","nodeType":"FunctionDefinition","parameters":{"id":10423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10422,"mutability":"mutable","name":"value","nameLocation":"4201:5:54","nodeType":"VariableDeclaration","scope":10447,"src":"4193:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10421,"name":"uint256","nodeType":"ElementaryTypeName","src":"4193:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4192:15:54"},"returnParameters":{"id":10426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10425,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10447,"src":"4231:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":10424,"name":"uint208","nodeType":"ElementaryTypeName","src":"4231:7:54","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"4230:9:54"},"scope":12017,"src":"4174:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10474,"nodeType":"Block","src":"4749:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10455,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10450,"src":"4763:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4776:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":10457,"name":"uint200","nodeType":"ElementaryTypeName","src":"4776:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":10456,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4771:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4771:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":10460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4785:3:54","memberName":"max","nodeType":"MemberAccess","src":"4771:17:54","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4763:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10468,"nodeType":"IfStatement","src":"4759:105:54","trueBody":{"id":10467,"nodeType":"Block","src":"4790:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":10463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4842:3:54","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":10464,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10450,"src":"4847:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10462,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"4811:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4811:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10466,"nodeType":"RevertStatement","src":"4804:49:54"}]}},{"expression":{"arguments":[{"id":10471,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10450,"src":"4888:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4880:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":10469,"name":"uint200","nodeType":"ElementaryTypeName","src":"4880:7:54","typeDescriptions":{}}},"id":10472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4880:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":10454,"id":10473,"nodeType":"Return","src":"4873:21:54"}]},"documentation":{"id":10448,"nodeType":"StructuredDocumentation","src":"4398:280:54","text":" @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":10475,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4692:9:54","nodeType":"FunctionDefinition","parameters":{"id":10451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10450,"mutability":"mutable","name":"value","nameLocation":"4710:5:54","nodeType":"VariableDeclaration","scope":10475,"src":"4702:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10449,"name":"uint256","nodeType":"ElementaryTypeName","src":"4702:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4701:15:54"},"returnParameters":{"id":10454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10475,"src":"4740:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":10452,"name":"uint200","nodeType":"ElementaryTypeName","src":"4740:7:54","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4739:9:54"},"scope":12017,"src":"4683:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10502,"nodeType":"Block","src":"5258:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10483,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10478,"src":"5272:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5285:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":10485,"name":"uint192","nodeType":"ElementaryTypeName","src":"5285:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":10484,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5280:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5280:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":10488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5294:3:54","memberName":"max","nodeType":"MemberAccess","src":"5280:17:54","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5272:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10496,"nodeType":"IfStatement","src":"5268:105:54","trueBody":{"id":10495,"nodeType":"Block","src":"5299:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":10491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5351:3:54","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":10492,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10478,"src":"5356:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10490,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"5320:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10494,"nodeType":"RevertStatement","src":"5313:49:54"}]}},{"expression":{"arguments":[{"id":10499,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10478,"src":"5397:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5389:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":10497,"name":"uint192","nodeType":"ElementaryTypeName","src":"5389:7:54","typeDescriptions":{}}},"id":10500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5389:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":10482,"id":10501,"nodeType":"Return","src":"5382:21:54"}]},"documentation":{"id":10476,"nodeType":"StructuredDocumentation","src":"4907:280:54","text":" @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":10503,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"5201:9:54","nodeType":"FunctionDefinition","parameters":{"id":10479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10478,"mutability":"mutable","name":"value","nameLocation":"5219:5:54","nodeType":"VariableDeclaration","scope":10503,"src":"5211:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10477,"name":"uint256","nodeType":"ElementaryTypeName","src":"5211:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5210:15:54"},"returnParameters":{"id":10482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10481,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10503,"src":"5249:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":10480,"name":"uint192","nodeType":"ElementaryTypeName","src":"5249:7:54","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"5248:9:54"},"scope":12017,"src":"5192:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10530,"nodeType":"Block","src":"5767:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10511,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10506,"src":"5781:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10514,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5794:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":10513,"name":"uint184","nodeType":"ElementaryTypeName","src":"5794:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":10512,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5789:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5789:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":10516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5803:3:54","memberName":"max","nodeType":"MemberAccess","src":"5789:17:54","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5781:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10524,"nodeType":"IfStatement","src":"5777:105:54","trueBody":{"id":10523,"nodeType":"Block","src":"5808:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":10519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5860:3:54","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":10520,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10506,"src":"5865:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10518,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"5829:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10522,"nodeType":"RevertStatement","src":"5822:49:54"}]}},{"expression":{"arguments":[{"id":10527,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10506,"src":"5906:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5898:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":10525,"name":"uint184","nodeType":"ElementaryTypeName","src":"5898:7:54","typeDescriptions":{}}},"id":10528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5898:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":10510,"id":10529,"nodeType":"Return","src":"5891:21:54"}]},"documentation":{"id":10504,"nodeType":"StructuredDocumentation","src":"5416:280:54","text":" @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":10531,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5710:9:54","nodeType":"FunctionDefinition","parameters":{"id":10507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10506,"mutability":"mutable","name":"value","nameLocation":"5728:5:54","nodeType":"VariableDeclaration","scope":10531,"src":"5720:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10505,"name":"uint256","nodeType":"ElementaryTypeName","src":"5720:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5719:15:54"},"returnParameters":{"id":10510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10509,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10531,"src":"5758:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":10508,"name":"uint184","nodeType":"ElementaryTypeName","src":"5758:7:54","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5757:9:54"},"scope":12017,"src":"5701:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10558,"nodeType":"Block","src":"6276:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10539,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10534,"src":"6290:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6303:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":10541,"name":"uint176","nodeType":"ElementaryTypeName","src":"6303:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":10540,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6298:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6298:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":10544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6312:3:54","memberName":"max","nodeType":"MemberAccess","src":"6298:17:54","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6290:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10552,"nodeType":"IfStatement","src":"6286:105:54","trueBody":{"id":10551,"nodeType":"Block","src":"6317:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":10547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6369:3:54","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":10548,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10534,"src":"6374:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10546,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"6338:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6338:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10550,"nodeType":"RevertStatement","src":"6331:49:54"}]}},{"expression":{"arguments":[{"id":10555,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10534,"src":"6415:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10554,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6407:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":10553,"name":"uint176","nodeType":"ElementaryTypeName","src":"6407:7:54","typeDescriptions":{}}},"id":10556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6407:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":10538,"id":10557,"nodeType":"Return","src":"6400:21:54"}]},"documentation":{"id":10532,"nodeType":"StructuredDocumentation","src":"5925:280:54","text":" @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":10559,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"6219:9:54","nodeType":"FunctionDefinition","parameters":{"id":10535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10534,"mutability":"mutable","name":"value","nameLocation":"6237:5:54","nodeType":"VariableDeclaration","scope":10559,"src":"6229:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10533,"name":"uint256","nodeType":"ElementaryTypeName","src":"6229:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6228:15:54"},"returnParameters":{"id":10538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10537,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10559,"src":"6267:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":10536,"name":"uint176","nodeType":"ElementaryTypeName","src":"6267:7:54","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6266:9:54"},"scope":12017,"src":"6210:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10586,"nodeType":"Block","src":"6785:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10567,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"6799:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6812:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":10569,"name":"uint168","nodeType":"ElementaryTypeName","src":"6812:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":10568,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6807:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6807:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":10572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6821:3:54","memberName":"max","nodeType":"MemberAccess","src":"6807:17:54","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6799:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10580,"nodeType":"IfStatement","src":"6795:105:54","trueBody":{"id":10579,"nodeType":"Block","src":"6826:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":10575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6878:3:54","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":10576,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"6883:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10574,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"6847:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6847:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10578,"nodeType":"RevertStatement","src":"6840:49:54"}]}},{"expression":{"arguments":[{"id":10583,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10562,"src":"6924:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6916:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":10581,"name":"uint168","nodeType":"ElementaryTypeName","src":"6916:7:54","typeDescriptions":{}}},"id":10584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6916:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":10566,"id":10585,"nodeType":"Return","src":"6909:21:54"}]},"documentation":{"id":10560,"nodeType":"StructuredDocumentation","src":"6434:280:54","text":" @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":10587,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6728:9:54","nodeType":"FunctionDefinition","parameters":{"id":10563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10562,"mutability":"mutable","name":"value","nameLocation":"6746:5:54","nodeType":"VariableDeclaration","scope":10587,"src":"6738:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10561,"name":"uint256","nodeType":"ElementaryTypeName","src":"6738:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6737:15:54"},"returnParameters":{"id":10566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10565,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10587,"src":"6776:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":10564,"name":"uint168","nodeType":"ElementaryTypeName","src":"6776:7:54","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6775:9:54"},"scope":12017,"src":"6719:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10614,"nodeType":"Block","src":"7294:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10595,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10590,"src":"7308:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7321:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":10597,"name":"uint160","nodeType":"ElementaryTypeName","src":"7321:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":10596,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7316:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7316:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":10600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7330:3:54","memberName":"max","nodeType":"MemberAccess","src":"7316:17:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7308:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10608,"nodeType":"IfStatement","src":"7304:105:54","trueBody":{"id":10607,"nodeType":"Block","src":"7335:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":10603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7387:3:54","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":10604,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10590,"src":"7392:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10602,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"7356:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7356:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10606,"nodeType":"RevertStatement","src":"7349:49:54"}]}},{"expression":{"arguments":[{"id":10611,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10590,"src":"7433:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7425:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":10609,"name":"uint160","nodeType":"ElementaryTypeName","src":"7425:7:54","typeDescriptions":{}}},"id":10612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7425:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":10594,"id":10613,"nodeType":"Return","src":"7418:21:54"}]},"documentation":{"id":10588,"nodeType":"StructuredDocumentation","src":"6943:280:54","text":" @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":10615,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7237:9:54","nodeType":"FunctionDefinition","parameters":{"id":10591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10590,"mutability":"mutable","name":"value","nameLocation":"7255:5:54","nodeType":"VariableDeclaration","scope":10615,"src":"7247:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10589,"name":"uint256","nodeType":"ElementaryTypeName","src":"7247:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7246:15:54"},"returnParameters":{"id":10594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10593,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10615,"src":"7285:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":10592,"name":"uint160","nodeType":"ElementaryTypeName","src":"7285:7:54","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7284:9:54"},"scope":12017,"src":"7228:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10642,"nodeType":"Block","src":"7803:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10623,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10618,"src":"7817:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10626,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7830:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":10625,"name":"uint152","nodeType":"ElementaryTypeName","src":"7830:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":10624,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7825:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7825:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":10628,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7839:3:54","memberName":"max","nodeType":"MemberAccess","src":"7825:17:54","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7817:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10636,"nodeType":"IfStatement","src":"7813:105:54","trueBody":{"id":10635,"nodeType":"Block","src":"7844:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":10631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7896:3:54","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":10632,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10618,"src":"7901:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10630,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"7865:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7865:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10634,"nodeType":"RevertStatement","src":"7858:49:54"}]}},{"expression":{"arguments":[{"id":10639,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10618,"src":"7942:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10638,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7934:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":10637,"name":"uint152","nodeType":"ElementaryTypeName","src":"7934:7:54","typeDescriptions":{}}},"id":10640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7934:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":10622,"id":10641,"nodeType":"Return","src":"7927:21:54"}]},"documentation":{"id":10616,"nodeType":"StructuredDocumentation","src":"7452:280:54","text":" @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":10643,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7746:9:54","nodeType":"FunctionDefinition","parameters":{"id":10619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10618,"mutability":"mutable","name":"value","nameLocation":"7764:5:54","nodeType":"VariableDeclaration","scope":10643,"src":"7756:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10617,"name":"uint256","nodeType":"ElementaryTypeName","src":"7756:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7755:15:54"},"returnParameters":{"id":10622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10621,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10643,"src":"7794:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":10620,"name":"uint152","nodeType":"ElementaryTypeName","src":"7794:7:54","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7793:9:54"},"scope":12017,"src":"7737:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10670,"nodeType":"Block","src":"8312:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10651,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10646,"src":"8326:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10654,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8339:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":10653,"name":"uint144","nodeType":"ElementaryTypeName","src":"8339:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":10652,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8334:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8334:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":10656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8348:3:54","memberName":"max","nodeType":"MemberAccess","src":"8334:17:54","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8326:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10664,"nodeType":"IfStatement","src":"8322:105:54","trueBody":{"id":10663,"nodeType":"Block","src":"8353:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":10659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8405:3:54","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":10660,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10646,"src":"8410:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10658,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"8374:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8374:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10662,"nodeType":"RevertStatement","src":"8367:49:54"}]}},{"expression":{"arguments":[{"id":10667,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10646,"src":"8451:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8443:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":10665,"name":"uint144","nodeType":"ElementaryTypeName","src":"8443:7:54","typeDescriptions":{}}},"id":10668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8443:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":10650,"id":10669,"nodeType":"Return","src":"8436:21:54"}]},"documentation":{"id":10644,"nodeType":"StructuredDocumentation","src":"7961:280:54","text":" @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":10671,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8255:9:54","nodeType":"FunctionDefinition","parameters":{"id":10647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10646,"mutability":"mutable","name":"value","nameLocation":"8273:5:54","nodeType":"VariableDeclaration","scope":10671,"src":"8265:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10645,"name":"uint256","nodeType":"ElementaryTypeName","src":"8265:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8264:15:54"},"returnParameters":{"id":10650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10649,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10671,"src":"8303:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":10648,"name":"uint144","nodeType":"ElementaryTypeName","src":"8303:7:54","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8302:9:54"},"scope":12017,"src":"8246:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10698,"nodeType":"Block","src":"8821:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10679,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10674,"src":"8835:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10682,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8848:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":10681,"name":"uint136","nodeType":"ElementaryTypeName","src":"8848:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":10680,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8843:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8843:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":10684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8857:3:54","memberName":"max","nodeType":"MemberAccess","src":"8843:17:54","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8835:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10692,"nodeType":"IfStatement","src":"8831:105:54","trueBody":{"id":10691,"nodeType":"Block","src":"8862:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":10687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8914:3:54","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":10688,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10674,"src":"8919:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10686,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"8883:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8883:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10690,"nodeType":"RevertStatement","src":"8876:49:54"}]}},{"expression":{"arguments":[{"id":10695,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10674,"src":"8960:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8952:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":10693,"name":"uint136","nodeType":"ElementaryTypeName","src":"8952:7:54","typeDescriptions":{}}},"id":10696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8952:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":10678,"id":10697,"nodeType":"Return","src":"8945:21:54"}]},"documentation":{"id":10672,"nodeType":"StructuredDocumentation","src":"8470:280:54","text":" @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":10699,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8764:9:54","nodeType":"FunctionDefinition","parameters":{"id":10675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10674,"mutability":"mutable","name":"value","nameLocation":"8782:5:54","nodeType":"VariableDeclaration","scope":10699,"src":"8774:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10673,"name":"uint256","nodeType":"ElementaryTypeName","src":"8774:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8773:15:54"},"returnParameters":{"id":10678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10677,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10699,"src":"8812:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":10676,"name":"uint136","nodeType":"ElementaryTypeName","src":"8812:7:54","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8811:9:54"},"scope":12017,"src":"8755:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10726,"nodeType":"Block","src":"9330:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10707,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"9344:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9357:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":10709,"name":"uint128","nodeType":"ElementaryTypeName","src":"9357:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":10708,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9352:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9352:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":10712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9366:3:54","memberName":"max","nodeType":"MemberAccess","src":"9352:17:54","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9344:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10720,"nodeType":"IfStatement","src":"9340:105:54","trueBody":{"id":10719,"nodeType":"Block","src":"9371:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":10715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9423:3:54","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":10716,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"9428:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10714,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"9392:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9392:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10718,"nodeType":"RevertStatement","src":"9385:49:54"}]}},{"expression":{"arguments":[{"id":10723,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10702,"src":"9469:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10722,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9461:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":10721,"name":"uint128","nodeType":"ElementaryTypeName","src":"9461:7:54","typeDescriptions":{}}},"id":10724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9461:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":10706,"id":10725,"nodeType":"Return","src":"9454:21:54"}]},"documentation":{"id":10700,"nodeType":"StructuredDocumentation","src":"8979:280:54","text":" @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":10727,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9273:9:54","nodeType":"FunctionDefinition","parameters":{"id":10703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10702,"mutability":"mutable","name":"value","nameLocation":"9291:5:54","nodeType":"VariableDeclaration","scope":10727,"src":"9283:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10701,"name":"uint256","nodeType":"ElementaryTypeName","src":"9283:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9282:15:54"},"returnParameters":{"id":10706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10705,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10727,"src":"9321:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":10704,"name":"uint128","nodeType":"ElementaryTypeName","src":"9321:7:54","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9320:9:54"},"scope":12017,"src":"9264:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10754,"nodeType":"Block","src":"9839:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10735,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10730,"src":"9853:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9866:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":10737,"name":"uint120","nodeType":"ElementaryTypeName","src":"9866:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":10736,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9861:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":10740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9875:3:54","memberName":"max","nodeType":"MemberAccess","src":"9861:17:54","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9853:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10748,"nodeType":"IfStatement","src":"9849:105:54","trueBody":{"id":10747,"nodeType":"Block","src":"9880:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":10743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9932:3:54","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":10744,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10730,"src":"9937:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10742,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"9901:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9901:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10746,"nodeType":"RevertStatement","src":"9894:49:54"}]}},{"expression":{"arguments":[{"id":10751,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10730,"src":"9978:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9970:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":10749,"name":"uint120","nodeType":"ElementaryTypeName","src":"9970:7:54","typeDescriptions":{}}},"id":10752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9970:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":10734,"id":10753,"nodeType":"Return","src":"9963:21:54"}]},"documentation":{"id":10728,"nodeType":"StructuredDocumentation","src":"9488:280:54","text":" @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":10755,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9782:9:54","nodeType":"FunctionDefinition","parameters":{"id":10731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10730,"mutability":"mutable","name":"value","nameLocation":"9800:5:54","nodeType":"VariableDeclaration","scope":10755,"src":"9792:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10729,"name":"uint256","nodeType":"ElementaryTypeName","src":"9792:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9791:15:54"},"returnParameters":{"id":10734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10733,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10755,"src":"9830:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":10732,"name":"uint120","nodeType":"ElementaryTypeName","src":"9830:7:54","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9829:9:54"},"scope":12017,"src":"9773:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10782,"nodeType":"Block","src":"10348:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10763,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10758,"src":"10362:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10766,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10375:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":10765,"name":"uint112","nodeType":"ElementaryTypeName","src":"10375:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":10764,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10370:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10370:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":10768,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10384:3:54","memberName":"max","nodeType":"MemberAccess","src":"10370:17:54","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10362:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10776,"nodeType":"IfStatement","src":"10358:105:54","trueBody":{"id":10775,"nodeType":"Block","src":"10389:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":10771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10441:3:54","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":10772,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10758,"src":"10446:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10770,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"10410:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10410:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10774,"nodeType":"RevertStatement","src":"10403:49:54"}]}},{"expression":{"arguments":[{"id":10779,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10758,"src":"10487:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10479:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":10777,"name":"uint112","nodeType":"ElementaryTypeName","src":"10479:7:54","typeDescriptions":{}}},"id":10780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10479:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":10762,"id":10781,"nodeType":"Return","src":"10472:21:54"}]},"documentation":{"id":10756,"nodeType":"StructuredDocumentation","src":"9997:280:54","text":" @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":10783,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10291:9:54","nodeType":"FunctionDefinition","parameters":{"id":10759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10758,"mutability":"mutable","name":"value","nameLocation":"10309:5:54","nodeType":"VariableDeclaration","scope":10783,"src":"10301:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10757,"name":"uint256","nodeType":"ElementaryTypeName","src":"10301:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10300:15:54"},"returnParameters":{"id":10762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10783,"src":"10339:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":10760,"name":"uint112","nodeType":"ElementaryTypeName","src":"10339:7:54","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10338:9:54"},"scope":12017,"src":"10282:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10810,"nodeType":"Block","src":"10857:152:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10791,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10786,"src":"10871:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10794,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10884:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":10793,"name":"uint104","nodeType":"ElementaryTypeName","src":"10884:7:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":10792,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10879:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10879:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":10796,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10893:3:54","memberName":"max","nodeType":"MemberAccess","src":"10879:17:54","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10871:25:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10804,"nodeType":"IfStatement","src":"10867:105:54","trueBody":{"id":10803,"nodeType":"Block","src":"10898:74:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":10799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10950:3:54","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":10800,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10786,"src":"10955:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10798,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"10919:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10919:42:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10802,"nodeType":"RevertStatement","src":"10912:49:54"}]}},{"expression":{"arguments":[{"id":10807,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10786,"src":"10996:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10988:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":10805,"name":"uint104","nodeType":"ElementaryTypeName","src":"10988:7:54","typeDescriptions":{}}},"id":10808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10988:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":10790,"id":10809,"nodeType":"Return","src":"10981:21:54"}]},"documentation":{"id":10784,"nodeType":"StructuredDocumentation","src":"10506:280:54","text":" @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":10811,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10800:9:54","nodeType":"FunctionDefinition","parameters":{"id":10787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10786,"mutability":"mutable","name":"value","nameLocation":"10818:5:54","nodeType":"VariableDeclaration","scope":10811,"src":"10810:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10785,"name":"uint256","nodeType":"ElementaryTypeName","src":"10810:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10809:15:54"},"returnParameters":{"id":10790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10789,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10811,"src":"10848:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":10788,"name":"uint104","nodeType":"ElementaryTypeName","src":"10848:7:54","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10847:9:54"},"scope":12017,"src":"10791:218:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10838,"nodeType":"Block","src":"11360:149:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10819,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10814,"src":"11374:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11387:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":10821,"name":"uint96","nodeType":"ElementaryTypeName","src":"11387:6:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":10820,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11382:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11382:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":10824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11395:3:54","memberName":"max","nodeType":"MemberAccess","src":"11382:16:54","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11374:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10832,"nodeType":"IfStatement","src":"11370:103:54","trueBody":{"id":10831,"nodeType":"Block","src":"11400:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":10827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11452:2:54","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":10828,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10814,"src":"11456:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10826,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"11421:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11421:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10830,"nodeType":"RevertStatement","src":"11414:48:54"}]}},{"expression":{"arguments":[{"id":10835,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10814,"src":"11496:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10834,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11489:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":10833,"name":"uint96","nodeType":"ElementaryTypeName","src":"11489:6:54","typeDescriptions":{}}},"id":10836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11489:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":10818,"id":10837,"nodeType":"Return","src":"11482:20:54"}]},"documentation":{"id":10812,"nodeType":"StructuredDocumentation","src":"11015:276:54","text":" @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":10839,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11305:8:54","nodeType":"FunctionDefinition","parameters":{"id":10815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10814,"mutability":"mutable","name":"value","nameLocation":"11322:5:54","nodeType":"VariableDeclaration","scope":10839,"src":"11314:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10813,"name":"uint256","nodeType":"ElementaryTypeName","src":"11314:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11313:15:54"},"returnParameters":{"id":10818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10817,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10839,"src":"11352:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":10816,"name":"uint96","nodeType":"ElementaryTypeName","src":"11352:6:54","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11351:8:54"},"scope":12017,"src":"11296:213:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10866,"nodeType":"Block","src":"11860:149:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10847,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10842,"src":"11874:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11887:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":10849,"name":"uint88","nodeType":"ElementaryTypeName","src":"11887:6:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":10848,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11882:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11882:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":10852,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11895:3:54","memberName":"max","nodeType":"MemberAccess","src":"11882:16:54","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11874:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10860,"nodeType":"IfStatement","src":"11870:103:54","trueBody":{"id":10859,"nodeType":"Block","src":"11900:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":10855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11952:2:54","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":10856,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10842,"src":"11956:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10854,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"11921:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11921:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10858,"nodeType":"RevertStatement","src":"11914:48:54"}]}},{"expression":{"arguments":[{"id":10863,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10842,"src":"11996:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11989:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":10861,"name":"uint88","nodeType":"ElementaryTypeName","src":"11989:6:54","typeDescriptions":{}}},"id":10864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11989:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":10846,"id":10865,"nodeType":"Return","src":"11982:20:54"}]},"documentation":{"id":10840,"nodeType":"StructuredDocumentation","src":"11515:276:54","text":" @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":10867,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11805:8:54","nodeType":"FunctionDefinition","parameters":{"id":10843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10842,"mutability":"mutable","name":"value","nameLocation":"11822:5:54","nodeType":"VariableDeclaration","scope":10867,"src":"11814:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10841,"name":"uint256","nodeType":"ElementaryTypeName","src":"11814:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11813:15:54"},"returnParameters":{"id":10846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10845,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10867,"src":"11852:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":10844,"name":"uint88","nodeType":"ElementaryTypeName","src":"11852:6:54","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11851:8:54"},"scope":12017,"src":"11796:213:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10894,"nodeType":"Block","src":"12360:149:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10875,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10870,"src":"12374:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12387:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":10877,"name":"uint80","nodeType":"ElementaryTypeName","src":"12387:6:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":10876,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12382:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12382:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":10880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12395:3:54","memberName":"max","nodeType":"MemberAccess","src":"12382:16:54","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12374:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10888,"nodeType":"IfStatement","src":"12370:103:54","trueBody":{"id":10887,"nodeType":"Block","src":"12400:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":10883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12452:2:54","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":10884,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10870,"src":"12456:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10882,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"12421:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12421:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10886,"nodeType":"RevertStatement","src":"12414:48:54"}]}},{"expression":{"arguments":[{"id":10891,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10870,"src":"12496:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12489:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":10889,"name":"uint80","nodeType":"ElementaryTypeName","src":"12489:6:54","typeDescriptions":{}}},"id":10892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12489:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":10874,"id":10893,"nodeType":"Return","src":"12482:20:54"}]},"documentation":{"id":10868,"nodeType":"StructuredDocumentation","src":"12015:276:54","text":" @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":10895,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12305:8:54","nodeType":"FunctionDefinition","parameters":{"id":10871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10870,"mutability":"mutable","name":"value","nameLocation":"12322:5:54","nodeType":"VariableDeclaration","scope":10895,"src":"12314:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10869,"name":"uint256","nodeType":"ElementaryTypeName","src":"12314:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12313:15:54"},"returnParameters":{"id":10874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10873,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10895,"src":"12352:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":10872,"name":"uint80","nodeType":"ElementaryTypeName","src":"12352:6:54","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12351:8:54"},"scope":12017,"src":"12296:213:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10922,"nodeType":"Block","src":"12860:149:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10903,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10898,"src":"12874:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12887:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":10905,"name":"uint72","nodeType":"ElementaryTypeName","src":"12887:6:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":10904,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12882:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12882:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":10908,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12895:3:54","memberName":"max","nodeType":"MemberAccess","src":"12882:16:54","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12874:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10916,"nodeType":"IfStatement","src":"12870:103:54","trueBody":{"id":10915,"nodeType":"Block","src":"12900:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":10911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12952:2:54","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":10912,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10898,"src":"12956:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10910,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"12921:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12921:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10914,"nodeType":"RevertStatement","src":"12914:48:54"}]}},{"expression":{"arguments":[{"id":10919,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10898,"src":"12996:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10918,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12989:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":10917,"name":"uint72","nodeType":"ElementaryTypeName","src":"12989:6:54","typeDescriptions":{}}},"id":10920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12989:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":10902,"id":10921,"nodeType":"Return","src":"12982:20:54"}]},"documentation":{"id":10896,"nodeType":"StructuredDocumentation","src":"12515:276:54","text":" @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":10923,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12805:8:54","nodeType":"FunctionDefinition","parameters":{"id":10899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10898,"mutability":"mutable","name":"value","nameLocation":"12822:5:54","nodeType":"VariableDeclaration","scope":10923,"src":"12814:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10897,"name":"uint256","nodeType":"ElementaryTypeName","src":"12814:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12813:15:54"},"returnParameters":{"id":10902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10901,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10923,"src":"12852:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":10900,"name":"uint72","nodeType":"ElementaryTypeName","src":"12852:6:54","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12851:8:54"},"scope":12017,"src":"12796:213:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10950,"nodeType":"Block","src":"13360:149:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10931,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10926,"src":"13374:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13387:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":10933,"name":"uint64","nodeType":"ElementaryTypeName","src":"13387:6:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":10932,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13382:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13382:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":10936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13395:3:54","memberName":"max","nodeType":"MemberAccess","src":"13382:16:54","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13374:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10944,"nodeType":"IfStatement","src":"13370:103:54","trueBody":{"id":10943,"nodeType":"Block","src":"13400:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":10939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13452:2:54","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":10940,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10926,"src":"13456:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10938,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"13421:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13421:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10942,"nodeType":"RevertStatement","src":"13414:48:54"}]}},{"expression":{"arguments":[{"id":10947,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10926,"src":"13496:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10946,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13489:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":10945,"name":"uint64","nodeType":"ElementaryTypeName","src":"13489:6:54","typeDescriptions":{}}},"id":10948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13489:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":10930,"id":10949,"nodeType":"Return","src":"13482:20:54"}]},"documentation":{"id":10924,"nodeType":"StructuredDocumentation","src":"13015:276:54","text":" @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":10951,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13305:8:54","nodeType":"FunctionDefinition","parameters":{"id":10927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10926,"mutability":"mutable","name":"value","nameLocation":"13322:5:54","nodeType":"VariableDeclaration","scope":10951,"src":"13314:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10925,"name":"uint256","nodeType":"ElementaryTypeName","src":"13314:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13313:15:54"},"returnParameters":{"id":10930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10929,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10951,"src":"13352:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":10928,"name":"uint64","nodeType":"ElementaryTypeName","src":"13352:6:54","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13351:8:54"},"scope":12017,"src":"13296:213:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":10978,"nodeType":"Block","src":"13860:149:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10959,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10954,"src":"13874:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10962,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13887:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":10961,"name":"uint56","nodeType":"ElementaryTypeName","src":"13887:6:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":10960,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13882:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13882:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":10964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13895:3:54","memberName":"max","nodeType":"MemberAccess","src":"13882:16:54","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13874:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10972,"nodeType":"IfStatement","src":"13870:103:54","trueBody":{"id":10971,"nodeType":"Block","src":"13900:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":10967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13952:2:54","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":10968,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10954,"src":"13956:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10966,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"13921:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13921:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10970,"nodeType":"RevertStatement","src":"13914:48:54"}]}},{"expression":{"arguments":[{"id":10975,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10954,"src":"13996:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10974,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13989:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":10973,"name":"uint56","nodeType":"ElementaryTypeName","src":"13989:6:54","typeDescriptions":{}}},"id":10976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13989:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":10958,"id":10977,"nodeType":"Return","src":"13982:20:54"}]},"documentation":{"id":10952,"nodeType":"StructuredDocumentation","src":"13515:276:54","text":" @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":10979,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13805:8:54","nodeType":"FunctionDefinition","parameters":{"id":10955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10954,"mutability":"mutable","name":"value","nameLocation":"13822:5:54","nodeType":"VariableDeclaration","scope":10979,"src":"13814:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10953,"name":"uint256","nodeType":"ElementaryTypeName","src":"13814:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13813:15:54"},"returnParameters":{"id":10958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10957,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10979,"src":"13852:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":10956,"name":"uint56","nodeType":"ElementaryTypeName","src":"13852:6:54","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13851:8:54"},"scope":12017,"src":"13796:213:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11006,"nodeType":"Block","src":"14360:149:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10987,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10982,"src":"14374:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":10990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14387:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":10989,"name":"uint48","nodeType":"ElementaryTypeName","src":"14387:6:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":10988,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14382:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":10991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14382:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":10992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14395:3:54","memberName":"max","nodeType":"MemberAccess","src":"14382:16:54","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14374:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11000,"nodeType":"IfStatement","src":"14370:103:54","trueBody":{"id":10999,"nodeType":"Block","src":"14400:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":10995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14452:2:54","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":10996,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10982,"src":"14456:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10994,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"14421:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":10997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14421:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":10998,"nodeType":"RevertStatement","src":"14414:48:54"}]}},{"expression":{"arguments":[{"id":11003,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10982,"src":"14496:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14489:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":11001,"name":"uint48","nodeType":"ElementaryTypeName","src":"14489:6:54","typeDescriptions":{}}},"id":11004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14489:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":10986,"id":11005,"nodeType":"Return","src":"14482:20:54"}]},"documentation":{"id":10980,"nodeType":"StructuredDocumentation","src":"14015:276:54","text":" @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":11007,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14305:8:54","nodeType":"FunctionDefinition","parameters":{"id":10983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10982,"mutability":"mutable","name":"value","nameLocation":"14322:5:54","nodeType":"VariableDeclaration","scope":11007,"src":"14314:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10981,"name":"uint256","nodeType":"ElementaryTypeName","src":"14314:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14313:15:54"},"returnParameters":{"id":10986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10985,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11007,"src":"14352:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":10984,"name":"uint48","nodeType":"ElementaryTypeName","src":"14352:6:54","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14351:8:54"},"scope":12017,"src":"14296:213:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11034,"nodeType":"Block","src":"14860:149:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11015,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11010,"src":"14874:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14887:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":11017,"name":"uint40","nodeType":"ElementaryTypeName","src":"14887:6:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":11016,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14882:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14882:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":11020,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14895:3:54","memberName":"max","nodeType":"MemberAccess","src":"14882:16:54","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14874:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11028,"nodeType":"IfStatement","src":"14870:103:54","trueBody":{"id":11027,"nodeType":"Block","src":"14900:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":11023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14952:2:54","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":11024,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11010,"src":"14956:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11022,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"14921:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14921:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11026,"nodeType":"RevertStatement","src":"14914:48:54"}]}},{"expression":{"arguments":[{"id":11031,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11010,"src":"14996:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11030,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14989:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":11029,"name":"uint40","nodeType":"ElementaryTypeName","src":"14989:6:54","typeDescriptions":{}}},"id":11032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14989:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":11014,"id":11033,"nodeType":"Return","src":"14982:20:54"}]},"documentation":{"id":11008,"nodeType":"StructuredDocumentation","src":"14515:276:54","text":" @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":11035,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14805:8:54","nodeType":"FunctionDefinition","parameters":{"id":11011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11010,"mutability":"mutable","name":"value","nameLocation":"14822:5:54","nodeType":"VariableDeclaration","scope":11035,"src":"14814:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11009,"name":"uint256","nodeType":"ElementaryTypeName","src":"14814:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14813:15:54"},"returnParameters":{"id":11014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11013,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11035,"src":"14852:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":11012,"name":"uint40","nodeType":"ElementaryTypeName","src":"14852:6:54","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14851:8:54"},"scope":12017,"src":"14796:213:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11062,"nodeType":"Block","src":"15360:149:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11043,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11038,"src":"15374:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15387:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":11045,"name":"uint32","nodeType":"ElementaryTypeName","src":"15387:6:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":11044,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15382:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15382:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":11048,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15395:3:54","memberName":"max","nodeType":"MemberAccess","src":"15382:16:54","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15374:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11056,"nodeType":"IfStatement","src":"15370:103:54","trueBody":{"id":11055,"nodeType":"Block","src":"15400:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":11051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15452:2:54","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":11052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11038,"src":"15456:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11050,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"15421:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15421:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11054,"nodeType":"RevertStatement","src":"15414:48:54"}]}},{"expression":{"arguments":[{"id":11059,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11038,"src":"15496:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15489:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":11057,"name":"uint32","nodeType":"ElementaryTypeName","src":"15489:6:54","typeDescriptions":{}}},"id":11060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15489:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":11042,"id":11061,"nodeType":"Return","src":"15482:20:54"}]},"documentation":{"id":11036,"nodeType":"StructuredDocumentation","src":"15015:276:54","text":" @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":11063,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15305:8:54","nodeType":"FunctionDefinition","parameters":{"id":11039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11038,"mutability":"mutable","name":"value","nameLocation":"15322:5:54","nodeType":"VariableDeclaration","scope":11063,"src":"15314:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11037,"name":"uint256","nodeType":"ElementaryTypeName","src":"15314:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15313:15:54"},"returnParameters":{"id":11042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11041,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11063,"src":"15352:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":11040,"name":"uint32","nodeType":"ElementaryTypeName","src":"15352:6:54","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15351:8:54"},"scope":12017,"src":"15296:213:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11090,"nodeType":"Block","src":"15860:149:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11071,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11066,"src":"15874:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11074,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15887:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":11073,"name":"uint24","nodeType":"ElementaryTypeName","src":"15887:6:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":11072,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15882:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15882:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":11076,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15895:3:54","memberName":"max","nodeType":"MemberAccess","src":"15882:16:54","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15874:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11084,"nodeType":"IfStatement","src":"15870:103:54","trueBody":{"id":11083,"nodeType":"Block","src":"15900:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":11079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15952:2:54","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":11080,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11066,"src":"15956:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11078,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"15921:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15921:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11082,"nodeType":"RevertStatement","src":"15914:48:54"}]}},{"expression":{"arguments":[{"id":11087,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11066,"src":"15996:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15989:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":11085,"name":"uint24","nodeType":"ElementaryTypeName","src":"15989:6:54","typeDescriptions":{}}},"id":11088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15989:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":11070,"id":11089,"nodeType":"Return","src":"15982:20:54"}]},"documentation":{"id":11064,"nodeType":"StructuredDocumentation","src":"15515:276:54","text":" @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":11091,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15805:8:54","nodeType":"FunctionDefinition","parameters":{"id":11067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11066,"mutability":"mutable","name":"value","nameLocation":"15822:5:54","nodeType":"VariableDeclaration","scope":11091,"src":"15814:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11065,"name":"uint256","nodeType":"ElementaryTypeName","src":"15814:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15813:15:54"},"returnParameters":{"id":11070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11069,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11091,"src":"15852:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":11068,"name":"uint24","nodeType":"ElementaryTypeName","src":"15852:6:54","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15851:8:54"},"scope":12017,"src":"15796:213:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11118,"nodeType":"Block","src":"16360:149:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11099,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11094,"src":"16374:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16387:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":11101,"name":"uint16","nodeType":"ElementaryTypeName","src":"16387:6:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":11100,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16382:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16382:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":11104,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16395:3:54","memberName":"max","nodeType":"MemberAccess","src":"16382:16:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16374:24:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11112,"nodeType":"IfStatement","src":"16370:103:54","trueBody":{"id":11111,"nodeType":"Block","src":"16400:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":11107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16452:2:54","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":11108,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11094,"src":"16456:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11106,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"16421:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16421:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11110,"nodeType":"RevertStatement","src":"16414:48:54"}]}},{"expression":{"arguments":[{"id":11115,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11094,"src":"16496:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11114,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16489:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":11113,"name":"uint16","nodeType":"ElementaryTypeName","src":"16489:6:54","typeDescriptions":{}}},"id":11116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16489:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":11098,"id":11117,"nodeType":"Return","src":"16482:20:54"}]},"documentation":{"id":11092,"nodeType":"StructuredDocumentation","src":"16015:276:54","text":" @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":11119,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16305:8:54","nodeType":"FunctionDefinition","parameters":{"id":11095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11094,"mutability":"mutable","name":"value","nameLocation":"16322:5:54","nodeType":"VariableDeclaration","scope":11119,"src":"16314:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11093,"name":"uint256","nodeType":"ElementaryTypeName","src":"16314:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16313:15:54"},"returnParameters":{"id":11098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11097,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11119,"src":"16352:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11096,"name":"uint16","nodeType":"ElementaryTypeName","src":"16352:6:54","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16351:8:54"},"scope":12017,"src":"16296:213:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11146,"nodeType":"Block","src":"16854:146:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11122,"src":"16868:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":11130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16881:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":11129,"name":"uint8","nodeType":"ElementaryTypeName","src":"16881:5:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":11128,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16876:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16876:11:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":11132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16888:3:54","memberName":"max","nodeType":"MemberAccess","src":"16876:15:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16868:23:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11140,"nodeType":"IfStatement","src":"16864:101:54","trueBody":{"id":11139,"nodeType":"Block","src":"16893:72:54","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":11135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16945:1:54","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":11136,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11122,"src":"16948:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11134,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"16914:30:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":11137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16914:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11138,"nodeType":"RevertStatement","src":"16907:47:54"}]}},{"expression":{"arguments":[{"id":11143,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11122,"src":"16987:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16981:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":11141,"name":"uint8","nodeType":"ElementaryTypeName","src":"16981:5:54","typeDescriptions":{}}},"id":11144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16981:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":11126,"id":11145,"nodeType":"Return","src":"16974:19:54"}]},"documentation":{"id":11120,"nodeType":"StructuredDocumentation","src":"16515:272:54","text":" @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":11147,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16801:7:54","nodeType":"FunctionDefinition","parameters":{"id":11123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11122,"mutability":"mutable","name":"value","nameLocation":"16817:5:54","nodeType":"VariableDeclaration","scope":11147,"src":"16809:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11121,"name":"uint256","nodeType":"ElementaryTypeName","src":"16809:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16808:15:54"},"returnParameters":{"id":11126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11125,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11147,"src":"16847:5:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11124,"name":"uint8","nodeType":"ElementaryTypeName","src":"16847:5:54","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16846:7:54"},"scope":12017,"src":"16792:208:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11169,"nodeType":"Block","src":"17236:128:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11155,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11150,"src":"17250:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":11156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17258:1:54","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17250:9:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11163,"nodeType":"IfStatement","src":"17246:81:54","trueBody":{"id":11162,"nodeType":"Block","src":"17261:66:54","statements":[{"errorCall":{"arguments":[{"id":11159,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11150,"src":"17310:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11158,"name":"SafeCastOverflowedIntToUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10267,"src":"17282:27:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$_t_error_$","typeString":"function (int256) pure returns (error)"}},"id":11160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17282:34:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11161,"nodeType":"RevertStatement","src":"17275:41:54"}]}},{"expression":{"arguments":[{"id":11166,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11150,"src":"17351:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17343:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11164,"name":"uint256","nodeType":"ElementaryTypeName","src":"17343:7:54","typeDescriptions":{}}},"id":11167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17343:14:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11154,"id":11168,"nodeType":"Return","src":"17336:21:54"}]},"documentation":{"id":11148,"nodeType":"StructuredDocumentation","src":"17006:160:54","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."},"id":11170,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17180:9:54","nodeType":"FunctionDefinition","parameters":{"id":11151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11150,"mutability":"mutable","name":"value","nameLocation":"17197:5:54","nodeType":"VariableDeclaration","scope":11170,"src":"17190:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11149,"name":"int256","nodeType":"ElementaryTypeName","src":"17190:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17189:14:54"},"returnParameters":{"id":11154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11170,"src":"17227:7:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11152,"name":"uint256","nodeType":"ElementaryTypeName","src":"17227:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17226:9:54"},"scope":12017,"src":"17171:193:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11195,"nodeType":"Block","src":"17761:150:54","statements":[{"expression":{"id":11183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11178,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11176,"src":"17771:10:54","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11181,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11173,"src":"17791:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11180,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17784:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":11179,"name":"int248","nodeType":"ElementaryTypeName","src":"17784:6:54","typeDescriptions":{}}},"id":11182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17784:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17771:26:54","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":11184,"nodeType":"ExpressionStatement","src":"17771:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11185,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11176,"src":"17811:10:54","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11186,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11173,"src":"17825:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17811:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11194,"nodeType":"IfStatement","src":"17807:98:54","trueBody":{"id":11193,"nodeType":"Block","src":"17832:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":11189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17883:3:54","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":11190,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11173,"src":"17888:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11188,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"17853:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17853:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11192,"nodeType":"RevertStatement","src":"17846:48:54"}]}}]},"documentation":{"id":11171,"nodeType":"StructuredDocumentation","src":"17370:312:54","text":" @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits"},"id":11196,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17696:8:54","nodeType":"FunctionDefinition","parameters":{"id":11174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11173,"mutability":"mutable","name":"value","nameLocation":"17712:5:54","nodeType":"VariableDeclaration","scope":11196,"src":"17705:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11172,"name":"int256","nodeType":"ElementaryTypeName","src":"17705:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17704:14:54"},"returnParameters":{"id":11177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11176,"mutability":"mutable","name":"downcasted","nameLocation":"17749:10:54","nodeType":"VariableDeclaration","scope":11196,"src":"17742:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":11175,"name":"int248","nodeType":"ElementaryTypeName","src":"17742:6:54","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17741:19:54"},"scope":12017,"src":"17687:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11221,"nodeType":"Block","src":"18308:150:54","statements":[{"expression":{"id":11209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11204,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11202,"src":"18318:10:54","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11207,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11199,"src":"18338:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11206,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18331:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":11205,"name":"int240","nodeType":"ElementaryTypeName","src":"18331:6:54","typeDescriptions":{}}},"id":11208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18331:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18318:26:54","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":11210,"nodeType":"ExpressionStatement","src":"18318:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11211,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11202,"src":"18358:10:54","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11212,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11199,"src":"18372:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18358:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11220,"nodeType":"IfStatement","src":"18354:98:54","trueBody":{"id":11219,"nodeType":"Block","src":"18379:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":11215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:3:54","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":11216,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11199,"src":"18435:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11214,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"18400:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18400:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11218,"nodeType":"RevertStatement","src":"18393:48:54"}]}}]},"documentation":{"id":11197,"nodeType":"StructuredDocumentation","src":"17917:312:54","text":" @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits"},"id":11222,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18243:8:54","nodeType":"FunctionDefinition","parameters":{"id":11200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11199,"mutability":"mutable","name":"value","nameLocation":"18259:5:54","nodeType":"VariableDeclaration","scope":11222,"src":"18252:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11198,"name":"int256","nodeType":"ElementaryTypeName","src":"18252:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18251:14:54"},"returnParameters":{"id":11203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11202,"mutability":"mutable","name":"downcasted","nameLocation":"18296:10:54","nodeType":"VariableDeclaration","scope":11222,"src":"18289:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":11201,"name":"int240","nodeType":"ElementaryTypeName","src":"18289:6:54","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18288:19:54"},"scope":12017,"src":"18234:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11247,"nodeType":"Block","src":"18855:150:54","statements":[{"expression":{"id":11235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11230,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11228,"src":"18865:10:54","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11233,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11225,"src":"18885:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18878:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":11231,"name":"int232","nodeType":"ElementaryTypeName","src":"18878:6:54","typeDescriptions":{}}},"id":11234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18878:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18865:26:54","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":11236,"nodeType":"ExpressionStatement","src":"18865:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11237,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11228,"src":"18905:10:54","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11238,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11225,"src":"18919:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18905:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11246,"nodeType":"IfStatement","src":"18901:98:54","trueBody":{"id":11245,"nodeType":"Block","src":"18926:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":11241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18977:3:54","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":11242,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11225,"src":"18982:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11240,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"18947:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18947:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11244,"nodeType":"RevertStatement","src":"18940:48:54"}]}}]},"documentation":{"id":11223,"nodeType":"StructuredDocumentation","src":"18464:312:54","text":" @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits"},"id":11248,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18790:8:54","nodeType":"FunctionDefinition","parameters":{"id":11226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11225,"mutability":"mutable","name":"value","nameLocation":"18806:5:54","nodeType":"VariableDeclaration","scope":11248,"src":"18799:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11224,"name":"int256","nodeType":"ElementaryTypeName","src":"18799:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18798:14:54"},"returnParameters":{"id":11229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11228,"mutability":"mutable","name":"downcasted","nameLocation":"18843:10:54","nodeType":"VariableDeclaration","scope":11248,"src":"18836:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":11227,"name":"int232","nodeType":"ElementaryTypeName","src":"18836:6:54","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18835:19:54"},"scope":12017,"src":"18781:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11273,"nodeType":"Block","src":"19402:150:54","statements":[{"expression":{"id":11261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11256,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11254,"src":"19412:10:54","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11259,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11251,"src":"19432:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19425:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":11257,"name":"int224","nodeType":"ElementaryTypeName","src":"19425:6:54","typeDescriptions":{}}},"id":11260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19425:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19412:26:54","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":11262,"nodeType":"ExpressionStatement","src":"19412:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11263,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11254,"src":"19452:10:54","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11264,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11251,"src":"19466:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19452:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11272,"nodeType":"IfStatement","src":"19448:98:54","trueBody":{"id":11271,"nodeType":"Block","src":"19473:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":11267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19524:3:54","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":11268,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11251,"src":"19529:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11266,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"19494:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19494:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11270,"nodeType":"RevertStatement","src":"19487:48:54"}]}}]},"documentation":{"id":11249,"nodeType":"StructuredDocumentation","src":"19011:312:54","text":" @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits"},"id":11274,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19337:8:54","nodeType":"FunctionDefinition","parameters":{"id":11252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11251,"mutability":"mutable","name":"value","nameLocation":"19353:5:54","nodeType":"VariableDeclaration","scope":11274,"src":"19346:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11250,"name":"int256","nodeType":"ElementaryTypeName","src":"19346:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19345:14:54"},"returnParameters":{"id":11255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11254,"mutability":"mutable","name":"downcasted","nameLocation":"19390:10:54","nodeType":"VariableDeclaration","scope":11274,"src":"19383:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":11253,"name":"int224","nodeType":"ElementaryTypeName","src":"19383:6:54","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19382:19:54"},"scope":12017,"src":"19328:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11299,"nodeType":"Block","src":"19949:150:54","statements":[{"expression":{"id":11287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11282,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11280,"src":"19959:10:54","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11285,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11277,"src":"19979:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19972:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":11283,"name":"int216","nodeType":"ElementaryTypeName","src":"19972:6:54","typeDescriptions":{}}},"id":11286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19972:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"19959:26:54","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":11288,"nodeType":"ExpressionStatement","src":"19959:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11289,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11280,"src":"19999:10:54","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11290,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11277,"src":"20013:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19999:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11298,"nodeType":"IfStatement","src":"19995:98:54","trueBody":{"id":11297,"nodeType":"Block","src":"20020:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":11293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20071:3:54","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":11294,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11277,"src":"20076:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11292,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"20041:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20041:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11296,"nodeType":"RevertStatement","src":"20034:48:54"}]}}]},"documentation":{"id":11275,"nodeType":"StructuredDocumentation","src":"19558:312:54","text":" @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits"},"id":11300,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19884:8:54","nodeType":"FunctionDefinition","parameters":{"id":11278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11277,"mutability":"mutable","name":"value","nameLocation":"19900:5:54","nodeType":"VariableDeclaration","scope":11300,"src":"19893:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11276,"name":"int256","nodeType":"ElementaryTypeName","src":"19893:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19892:14:54"},"returnParameters":{"id":11281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11280,"mutability":"mutable","name":"downcasted","nameLocation":"19937:10:54","nodeType":"VariableDeclaration","scope":11300,"src":"19930:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":11279,"name":"int216","nodeType":"ElementaryTypeName","src":"19930:6:54","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"19929:19:54"},"scope":12017,"src":"19875:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11325,"nodeType":"Block","src":"20496:150:54","statements":[{"expression":{"id":11313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11308,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11306,"src":"20506:10:54","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11311,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11303,"src":"20526:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11310,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20519:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":11309,"name":"int208","nodeType":"ElementaryTypeName","src":"20519:6:54","typeDescriptions":{}}},"id":11312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20519:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20506:26:54","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":11314,"nodeType":"ExpressionStatement","src":"20506:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11315,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11306,"src":"20546:10:54","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11316,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11303,"src":"20560:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20546:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11324,"nodeType":"IfStatement","src":"20542:98:54","trueBody":{"id":11323,"nodeType":"Block","src":"20567:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":11319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20618:3:54","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":11320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11303,"src":"20623:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11318,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"20588:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20588:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11322,"nodeType":"RevertStatement","src":"20581:48:54"}]}}]},"documentation":{"id":11301,"nodeType":"StructuredDocumentation","src":"20105:312:54","text":" @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits"},"id":11326,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20431:8:54","nodeType":"FunctionDefinition","parameters":{"id":11304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11303,"mutability":"mutable","name":"value","nameLocation":"20447:5:54","nodeType":"VariableDeclaration","scope":11326,"src":"20440:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11302,"name":"int256","nodeType":"ElementaryTypeName","src":"20440:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20439:14:54"},"returnParameters":{"id":11307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11306,"mutability":"mutable","name":"downcasted","nameLocation":"20484:10:54","nodeType":"VariableDeclaration","scope":11326,"src":"20477:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":11305,"name":"int208","nodeType":"ElementaryTypeName","src":"20477:6:54","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20476:19:54"},"scope":12017,"src":"20422:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11351,"nodeType":"Block","src":"21043:150:54","statements":[{"expression":{"id":11339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11334,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11332,"src":"21053:10:54","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11337,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11329,"src":"21073:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21066:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":11335,"name":"int200","nodeType":"ElementaryTypeName","src":"21066:6:54","typeDescriptions":{}}},"id":11338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21066:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21053:26:54","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":11340,"nodeType":"ExpressionStatement","src":"21053:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11341,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11332,"src":"21093:10:54","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11342,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11329,"src":"21107:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21093:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11350,"nodeType":"IfStatement","src":"21089:98:54","trueBody":{"id":11349,"nodeType":"Block","src":"21114:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":11345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21165:3:54","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":11346,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11329,"src":"21170:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11344,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"21135:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21135:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11348,"nodeType":"RevertStatement","src":"21128:48:54"}]}}]},"documentation":{"id":11327,"nodeType":"StructuredDocumentation","src":"20652:312:54","text":" @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits"},"id":11352,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"20978:8:54","nodeType":"FunctionDefinition","parameters":{"id":11330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11329,"mutability":"mutable","name":"value","nameLocation":"20994:5:54","nodeType":"VariableDeclaration","scope":11352,"src":"20987:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11328,"name":"int256","nodeType":"ElementaryTypeName","src":"20987:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20986:14:54"},"returnParameters":{"id":11333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11332,"mutability":"mutable","name":"downcasted","nameLocation":"21031:10:54","nodeType":"VariableDeclaration","scope":11352,"src":"21024:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":11331,"name":"int200","nodeType":"ElementaryTypeName","src":"21024:6:54","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21023:19:54"},"scope":12017,"src":"20969:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11377,"nodeType":"Block","src":"21590:150:54","statements":[{"expression":{"id":11365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11360,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11358,"src":"21600:10:54","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11363,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11355,"src":"21620:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21613:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":11361,"name":"int192","nodeType":"ElementaryTypeName","src":"21613:6:54","typeDescriptions":{}}},"id":11364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21613:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21600:26:54","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":11366,"nodeType":"ExpressionStatement","src":"21600:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11367,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11358,"src":"21640:10:54","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11368,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11355,"src":"21654:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21640:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11376,"nodeType":"IfStatement","src":"21636:98:54","trueBody":{"id":11375,"nodeType":"Block","src":"21661:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":11371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21712:3:54","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":11372,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11355,"src":"21717:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11370,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"21682:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21682:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11374,"nodeType":"RevertStatement","src":"21675:48:54"}]}}]},"documentation":{"id":11353,"nodeType":"StructuredDocumentation","src":"21199:312:54","text":" @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits"},"id":11378,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21525:8:54","nodeType":"FunctionDefinition","parameters":{"id":11356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11355,"mutability":"mutable","name":"value","nameLocation":"21541:5:54","nodeType":"VariableDeclaration","scope":11378,"src":"21534:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11354,"name":"int256","nodeType":"ElementaryTypeName","src":"21534:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21533:14:54"},"returnParameters":{"id":11359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11358,"mutability":"mutable","name":"downcasted","nameLocation":"21578:10:54","nodeType":"VariableDeclaration","scope":11378,"src":"21571:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":11357,"name":"int192","nodeType":"ElementaryTypeName","src":"21571:6:54","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21570:19:54"},"scope":12017,"src":"21516:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11403,"nodeType":"Block","src":"22137:150:54","statements":[{"expression":{"id":11391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11386,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11384,"src":"22147:10:54","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11389,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11381,"src":"22167:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11388,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22160:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":11387,"name":"int184","nodeType":"ElementaryTypeName","src":"22160:6:54","typeDescriptions":{}}},"id":11390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22160:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22147:26:54","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":11392,"nodeType":"ExpressionStatement","src":"22147:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11393,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11384,"src":"22187:10:54","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11394,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11381,"src":"22201:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22187:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11402,"nodeType":"IfStatement","src":"22183:98:54","trueBody":{"id":11401,"nodeType":"Block","src":"22208:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":11397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22259:3:54","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":11398,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11381,"src":"22264:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11396,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"22229:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22229:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11400,"nodeType":"RevertStatement","src":"22222:48:54"}]}}]},"documentation":{"id":11379,"nodeType":"StructuredDocumentation","src":"21746:312:54","text":" @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits"},"id":11404,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22072:8:54","nodeType":"FunctionDefinition","parameters":{"id":11382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11381,"mutability":"mutable","name":"value","nameLocation":"22088:5:54","nodeType":"VariableDeclaration","scope":11404,"src":"22081:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11380,"name":"int256","nodeType":"ElementaryTypeName","src":"22081:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22080:14:54"},"returnParameters":{"id":11385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11384,"mutability":"mutable","name":"downcasted","nameLocation":"22125:10:54","nodeType":"VariableDeclaration","scope":11404,"src":"22118:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":11383,"name":"int184","nodeType":"ElementaryTypeName","src":"22118:6:54","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22117:19:54"},"scope":12017,"src":"22063:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11429,"nodeType":"Block","src":"22684:150:54","statements":[{"expression":{"id":11417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11412,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11410,"src":"22694:10:54","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11415,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11407,"src":"22714:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22707:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":11413,"name":"int176","nodeType":"ElementaryTypeName","src":"22707:6:54","typeDescriptions":{}}},"id":11416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22707:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22694:26:54","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":11418,"nodeType":"ExpressionStatement","src":"22694:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11419,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11410,"src":"22734:10:54","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11420,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11407,"src":"22748:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22734:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11428,"nodeType":"IfStatement","src":"22730:98:54","trueBody":{"id":11427,"nodeType":"Block","src":"22755:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":11423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22806:3:54","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":11424,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11407,"src":"22811:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11422,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"22776:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22776:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11426,"nodeType":"RevertStatement","src":"22769:48:54"}]}}]},"documentation":{"id":11405,"nodeType":"StructuredDocumentation","src":"22293:312:54","text":" @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits"},"id":11430,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22619:8:54","nodeType":"FunctionDefinition","parameters":{"id":11408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11407,"mutability":"mutable","name":"value","nameLocation":"22635:5:54","nodeType":"VariableDeclaration","scope":11430,"src":"22628:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11406,"name":"int256","nodeType":"ElementaryTypeName","src":"22628:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22627:14:54"},"returnParameters":{"id":11411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11410,"mutability":"mutable","name":"downcasted","nameLocation":"22672:10:54","nodeType":"VariableDeclaration","scope":11430,"src":"22665:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":11409,"name":"int176","nodeType":"ElementaryTypeName","src":"22665:6:54","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22664:19:54"},"scope":12017,"src":"22610:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11455,"nodeType":"Block","src":"23231:150:54","statements":[{"expression":{"id":11443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11438,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11436,"src":"23241:10:54","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11441,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"23261:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23254:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":11439,"name":"int168","nodeType":"ElementaryTypeName","src":"23254:6:54","typeDescriptions":{}}},"id":11442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23254:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23241:26:54","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":11444,"nodeType":"ExpressionStatement","src":"23241:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11445,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11436,"src":"23281:10:54","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11446,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"23295:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23281:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11454,"nodeType":"IfStatement","src":"23277:98:54","trueBody":{"id":11453,"nodeType":"Block","src":"23302:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":11449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23353:3:54","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":11450,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11433,"src":"23358:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11448,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"23323:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23323:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11452,"nodeType":"RevertStatement","src":"23316:48:54"}]}}]},"documentation":{"id":11431,"nodeType":"StructuredDocumentation","src":"22840:312:54","text":" @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits"},"id":11456,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23166:8:54","nodeType":"FunctionDefinition","parameters":{"id":11434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11433,"mutability":"mutable","name":"value","nameLocation":"23182:5:54","nodeType":"VariableDeclaration","scope":11456,"src":"23175:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11432,"name":"int256","nodeType":"ElementaryTypeName","src":"23175:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23174:14:54"},"returnParameters":{"id":11437,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11436,"mutability":"mutable","name":"downcasted","nameLocation":"23219:10:54","nodeType":"VariableDeclaration","scope":11456,"src":"23212:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":11435,"name":"int168","nodeType":"ElementaryTypeName","src":"23212:6:54","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23211:19:54"},"scope":12017,"src":"23157:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11481,"nodeType":"Block","src":"23778:150:54","statements":[{"expression":{"id":11469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11464,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11462,"src":"23788:10:54","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11467,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11459,"src":"23808:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23801:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":11465,"name":"int160","nodeType":"ElementaryTypeName","src":"23801:6:54","typeDescriptions":{}}},"id":11468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23801:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23788:26:54","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":11470,"nodeType":"ExpressionStatement","src":"23788:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11471,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11462,"src":"23828:10:54","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11472,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11459,"src":"23842:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23828:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11480,"nodeType":"IfStatement","src":"23824:98:54","trueBody":{"id":11479,"nodeType":"Block","src":"23849:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":11475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23900:3:54","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":11476,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11459,"src":"23905:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11474,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"23870:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23870:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11478,"nodeType":"RevertStatement","src":"23863:48:54"}]}}]},"documentation":{"id":11457,"nodeType":"StructuredDocumentation","src":"23387:312:54","text":" @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits"},"id":11482,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23713:8:54","nodeType":"FunctionDefinition","parameters":{"id":11460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11459,"mutability":"mutable","name":"value","nameLocation":"23729:5:54","nodeType":"VariableDeclaration","scope":11482,"src":"23722:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11458,"name":"int256","nodeType":"ElementaryTypeName","src":"23722:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23721:14:54"},"returnParameters":{"id":11463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11462,"mutability":"mutable","name":"downcasted","nameLocation":"23766:10:54","nodeType":"VariableDeclaration","scope":11482,"src":"23759:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":11461,"name":"int160","nodeType":"ElementaryTypeName","src":"23759:6:54","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23758:19:54"},"scope":12017,"src":"23704:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11507,"nodeType":"Block","src":"24325:150:54","statements":[{"expression":{"id":11495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11490,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11488,"src":"24335:10:54","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11493,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11485,"src":"24355:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24348:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":11491,"name":"int152","nodeType":"ElementaryTypeName","src":"24348:6:54","typeDescriptions":{}}},"id":11494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24348:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24335:26:54","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":11496,"nodeType":"ExpressionStatement","src":"24335:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11497,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11488,"src":"24375:10:54","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11498,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11485,"src":"24389:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24375:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11506,"nodeType":"IfStatement","src":"24371:98:54","trueBody":{"id":11505,"nodeType":"Block","src":"24396:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":11501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24447:3:54","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":11502,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11485,"src":"24452:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11500,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"24417:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24417:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11504,"nodeType":"RevertStatement","src":"24410:48:54"}]}}]},"documentation":{"id":11483,"nodeType":"StructuredDocumentation","src":"23934:312:54","text":" @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits"},"id":11508,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24260:8:54","nodeType":"FunctionDefinition","parameters":{"id":11486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11485,"mutability":"mutable","name":"value","nameLocation":"24276:5:54","nodeType":"VariableDeclaration","scope":11508,"src":"24269:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11484,"name":"int256","nodeType":"ElementaryTypeName","src":"24269:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24268:14:54"},"returnParameters":{"id":11489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11488,"mutability":"mutable","name":"downcasted","nameLocation":"24313:10:54","nodeType":"VariableDeclaration","scope":11508,"src":"24306:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":11487,"name":"int152","nodeType":"ElementaryTypeName","src":"24306:6:54","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24305:19:54"},"scope":12017,"src":"24251:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11533,"nodeType":"Block","src":"24872:150:54","statements":[{"expression":{"id":11521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11516,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11514,"src":"24882:10:54","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11519,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11511,"src":"24902:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24895:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":11517,"name":"int144","nodeType":"ElementaryTypeName","src":"24895:6:54","typeDescriptions":{}}},"id":11520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24895:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"24882:26:54","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":11522,"nodeType":"ExpressionStatement","src":"24882:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11523,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11514,"src":"24922:10:54","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11524,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11511,"src":"24936:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24922:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11532,"nodeType":"IfStatement","src":"24918:98:54","trueBody":{"id":11531,"nodeType":"Block","src":"24943:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":11527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24994:3:54","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":11528,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11511,"src":"24999:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11526,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"24964:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24964:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11530,"nodeType":"RevertStatement","src":"24957:48:54"}]}}]},"documentation":{"id":11509,"nodeType":"StructuredDocumentation","src":"24481:312:54","text":" @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits"},"id":11534,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"24807:8:54","nodeType":"FunctionDefinition","parameters":{"id":11512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11511,"mutability":"mutable","name":"value","nameLocation":"24823:5:54","nodeType":"VariableDeclaration","scope":11534,"src":"24816:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11510,"name":"int256","nodeType":"ElementaryTypeName","src":"24816:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24815:14:54"},"returnParameters":{"id":11515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11514,"mutability":"mutable","name":"downcasted","nameLocation":"24860:10:54","nodeType":"VariableDeclaration","scope":11534,"src":"24853:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":11513,"name":"int144","nodeType":"ElementaryTypeName","src":"24853:6:54","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"24852:19:54"},"scope":12017,"src":"24798:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11559,"nodeType":"Block","src":"25419:150:54","statements":[{"expression":{"id":11547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11542,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11540,"src":"25429:10:54","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11545,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11537,"src":"25449:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25442:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":11543,"name":"int136","nodeType":"ElementaryTypeName","src":"25442:6:54","typeDescriptions":{}}},"id":11546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25442:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25429:26:54","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":11548,"nodeType":"ExpressionStatement","src":"25429:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11549,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11540,"src":"25469:10:54","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11550,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11537,"src":"25483:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25469:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11558,"nodeType":"IfStatement","src":"25465:98:54","trueBody":{"id":11557,"nodeType":"Block","src":"25490:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":11553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25541:3:54","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":11554,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11537,"src":"25546:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11552,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"25511:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25511:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11556,"nodeType":"RevertStatement","src":"25504:48:54"}]}}]},"documentation":{"id":11535,"nodeType":"StructuredDocumentation","src":"25028:312:54","text":" @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits"},"id":11560,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25354:8:54","nodeType":"FunctionDefinition","parameters":{"id":11538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11537,"mutability":"mutable","name":"value","nameLocation":"25370:5:54","nodeType":"VariableDeclaration","scope":11560,"src":"25363:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11536,"name":"int256","nodeType":"ElementaryTypeName","src":"25363:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25362:14:54"},"returnParameters":{"id":11541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11540,"mutability":"mutable","name":"downcasted","nameLocation":"25407:10:54","nodeType":"VariableDeclaration","scope":11560,"src":"25400:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":11539,"name":"int136","nodeType":"ElementaryTypeName","src":"25400:6:54","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25399:19:54"},"scope":12017,"src":"25345:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11585,"nodeType":"Block","src":"25966:150:54","statements":[{"expression":{"id":11573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11568,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11566,"src":"25976:10:54","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11571,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11563,"src":"25996:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25989:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":11569,"name":"int128","nodeType":"ElementaryTypeName","src":"25989:6:54","typeDescriptions":{}}},"id":11572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25989:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25976:26:54","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":11574,"nodeType":"ExpressionStatement","src":"25976:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11575,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11566,"src":"26016:10:54","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11576,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11563,"src":"26030:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26016:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11584,"nodeType":"IfStatement","src":"26012:98:54","trueBody":{"id":11583,"nodeType":"Block","src":"26037:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":11579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26088:3:54","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":11580,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11563,"src":"26093:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11578,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"26058:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26058:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11582,"nodeType":"RevertStatement","src":"26051:48:54"}]}}]},"documentation":{"id":11561,"nodeType":"StructuredDocumentation","src":"25575:312:54","text":" @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits"},"id":11586,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"25901:8:54","nodeType":"FunctionDefinition","parameters":{"id":11564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11563,"mutability":"mutable","name":"value","nameLocation":"25917:5:54","nodeType":"VariableDeclaration","scope":11586,"src":"25910:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11562,"name":"int256","nodeType":"ElementaryTypeName","src":"25910:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25909:14:54"},"returnParameters":{"id":11567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11566,"mutability":"mutable","name":"downcasted","nameLocation":"25954:10:54","nodeType":"VariableDeclaration","scope":11586,"src":"25947:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":11565,"name":"int128","nodeType":"ElementaryTypeName","src":"25947:6:54","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"25946:19:54"},"scope":12017,"src":"25892:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11611,"nodeType":"Block","src":"26513:150:54","statements":[{"expression":{"id":11599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11594,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11592,"src":"26523:10:54","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11597,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11589,"src":"26543:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26536:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":11595,"name":"int120","nodeType":"ElementaryTypeName","src":"26536:6:54","typeDescriptions":{}}},"id":11598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26536:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26523:26:54","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":11600,"nodeType":"ExpressionStatement","src":"26523:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11601,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11592,"src":"26563:10:54","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11602,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11589,"src":"26577:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26563:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11610,"nodeType":"IfStatement","src":"26559:98:54","trueBody":{"id":11609,"nodeType":"Block","src":"26584:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":11605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26635:3:54","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":11606,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11589,"src":"26640:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11604,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"26605:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26605:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11608,"nodeType":"RevertStatement","src":"26598:48:54"}]}}]},"documentation":{"id":11587,"nodeType":"StructuredDocumentation","src":"26122:312:54","text":" @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits"},"id":11612,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26448:8:54","nodeType":"FunctionDefinition","parameters":{"id":11590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11589,"mutability":"mutable","name":"value","nameLocation":"26464:5:54","nodeType":"VariableDeclaration","scope":11612,"src":"26457:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11588,"name":"int256","nodeType":"ElementaryTypeName","src":"26457:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26456:14:54"},"returnParameters":{"id":11593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11592,"mutability":"mutable","name":"downcasted","nameLocation":"26501:10:54","nodeType":"VariableDeclaration","scope":11612,"src":"26494:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":11591,"name":"int120","nodeType":"ElementaryTypeName","src":"26494:6:54","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26493:19:54"},"scope":12017,"src":"26439:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11637,"nodeType":"Block","src":"27060:150:54","statements":[{"expression":{"id":11625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11620,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11618,"src":"27070:10:54","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11623,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11615,"src":"27090:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27083:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":11621,"name":"int112","nodeType":"ElementaryTypeName","src":"27083:6:54","typeDescriptions":{}}},"id":11624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27083:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27070:26:54","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":11626,"nodeType":"ExpressionStatement","src":"27070:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11627,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11618,"src":"27110:10:54","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11628,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11615,"src":"27124:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27110:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11636,"nodeType":"IfStatement","src":"27106:98:54","trueBody":{"id":11635,"nodeType":"Block","src":"27131:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":11631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27182:3:54","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":11632,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11615,"src":"27187:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11630,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"27152:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27152:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11634,"nodeType":"RevertStatement","src":"27145:48:54"}]}}]},"documentation":{"id":11613,"nodeType":"StructuredDocumentation","src":"26669:312:54","text":" @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits"},"id":11638,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"26995:8:54","nodeType":"FunctionDefinition","parameters":{"id":11616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11615,"mutability":"mutable","name":"value","nameLocation":"27011:5:54","nodeType":"VariableDeclaration","scope":11638,"src":"27004:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11614,"name":"int256","nodeType":"ElementaryTypeName","src":"27004:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27003:14:54"},"returnParameters":{"id":11619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11618,"mutability":"mutable","name":"downcasted","nameLocation":"27048:10:54","nodeType":"VariableDeclaration","scope":11638,"src":"27041:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":11617,"name":"int112","nodeType":"ElementaryTypeName","src":"27041:6:54","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27040:19:54"},"scope":12017,"src":"26986:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11663,"nodeType":"Block","src":"27607:150:54","statements":[{"expression":{"id":11651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11646,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11644,"src":"27617:10:54","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11649,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11641,"src":"27637:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27630:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":11647,"name":"int104","nodeType":"ElementaryTypeName","src":"27630:6:54","typeDescriptions":{}}},"id":11650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27630:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27617:26:54","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":11652,"nodeType":"ExpressionStatement","src":"27617:26:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11653,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11644,"src":"27657:10:54","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11654,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11641,"src":"27671:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27657:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11662,"nodeType":"IfStatement","src":"27653:98:54","trueBody":{"id":11661,"nodeType":"Block","src":"27678:73:54","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":11657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27729:3:54","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":11658,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11641,"src":"27734:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11656,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"27699:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27699:41:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11660,"nodeType":"RevertStatement","src":"27692:48:54"}]}}]},"documentation":{"id":11639,"nodeType":"StructuredDocumentation","src":"27216:312:54","text":" @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits"},"id":11664,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27542:8:54","nodeType":"FunctionDefinition","parameters":{"id":11642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11641,"mutability":"mutable","name":"value","nameLocation":"27558:5:54","nodeType":"VariableDeclaration","scope":11664,"src":"27551:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11640,"name":"int256","nodeType":"ElementaryTypeName","src":"27551:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27550:14:54"},"returnParameters":{"id":11645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11644,"mutability":"mutable","name":"downcasted","nameLocation":"27595:10:54","nodeType":"VariableDeclaration","scope":11664,"src":"27588:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":11643,"name":"int104","nodeType":"ElementaryTypeName","src":"27588:6:54","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27587:19:54"},"scope":12017,"src":"27533:224:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11689,"nodeType":"Block","src":"28147:148:54","statements":[{"expression":{"id":11677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11672,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11670,"src":"28157:10:54","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11675,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11667,"src":"28176:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28170:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":11673,"name":"int96","nodeType":"ElementaryTypeName","src":"28170:5:54","typeDescriptions":{}}},"id":11676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28170:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28157:25:54","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":11678,"nodeType":"ExpressionStatement","src":"28157:25:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11679,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11670,"src":"28196:10:54","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11680,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11667,"src":"28210:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28196:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11688,"nodeType":"IfStatement","src":"28192:97:54","trueBody":{"id":11687,"nodeType":"Block","src":"28217:72:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":11683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28268:2:54","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":11684,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11667,"src":"28272:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11682,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"28238:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28238:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11686,"nodeType":"RevertStatement","src":"28231:47:54"}]}}]},"documentation":{"id":11665,"nodeType":"StructuredDocumentation","src":"27763:307:54","text":" @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits"},"id":11690,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28084:7:54","nodeType":"FunctionDefinition","parameters":{"id":11668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11667,"mutability":"mutable","name":"value","nameLocation":"28099:5:54","nodeType":"VariableDeclaration","scope":11690,"src":"28092:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11666,"name":"int256","nodeType":"ElementaryTypeName","src":"28092:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28091:14:54"},"returnParameters":{"id":11671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11670,"mutability":"mutable","name":"downcasted","nameLocation":"28135:10:54","nodeType":"VariableDeclaration","scope":11690,"src":"28129:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":11669,"name":"int96","nodeType":"ElementaryTypeName","src":"28129:5:54","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28128:18:54"},"scope":12017,"src":"28075:220:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11715,"nodeType":"Block","src":"28685:148:54","statements":[{"expression":{"id":11703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11698,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11696,"src":"28695:10:54","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11701,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11693,"src":"28714:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11700,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28708:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":11699,"name":"int88","nodeType":"ElementaryTypeName","src":"28708:5:54","typeDescriptions":{}}},"id":11702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28708:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28695:25:54","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":11704,"nodeType":"ExpressionStatement","src":"28695:25:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11705,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11696,"src":"28734:10:54","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11706,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11693,"src":"28748:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28734:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11714,"nodeType":"IfStatement","src":"28730:97:54","trueBody":{"id":11713,"nodeType":"Block","src":"28755:72:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":11709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28806:2:54","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":11710,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11693,"src":"28810:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11708,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"28776:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28776:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11712,"nodeType":"RevertStatement","src":"28769:47:54"}]}}]},"documentation":{"id":11691,"nodeType":"StructuredDocumentation","src":"28301:307:54","text":" @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits"},"id":11716,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28622:7:54","nodeType":"FunctionDefinition","parameters":{"id":11694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11693,"mutability":"mutable","name":"value","nameLocation":"28637:5:54","nodeType":"VariableDeclaration","scope":11716,"src":"28630:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11692,"name":"int256","nodeType":"ElementaryTypeName","src":"28630:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28629:14:54"},"returnParameters":{"id":11697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11696,"mutability":"mutable","name":"downcasted","nameLocation":"28673:10:54","nodeType":"VariableDeclaration","scope":11716,"src":"28667:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":11695,"name":"int88","nodeType":"ElementaryTypeName","src":"28667:5:54","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28666:18:54"},"scope":12017,"src":"28613:220:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11741,"nodeType":"Block","src":"29223:148:54","statements":[{"expression":{"id":11729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11724,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11722,"src":"29233:10:54","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11727,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11719,"src":"29252:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29246:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":11725,"name":"int80","nodeType":"ElementaryTypeName","src":"29246:5:54","typeDescriptions":{}}},"id":11728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29246:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29233:25:54","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":11730,"nodeType":"ExpressionStatement","src":"29233:25:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11731,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11722,"src":"29272:10:54","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11732,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11719,"src":"29286:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29272:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11740,"nodeType":"IfStatement","src":"29268:97:54","trueBody":{"id":11739,"nodeType":"Block","src":"29293:72:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":11735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29344:2:54","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":11736,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11719,"src":"29348:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11734,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"29314:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29314:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11738,"nodeType":"RevertStatement","src":"29307:47:54"}]}}]},"documentation":{"id":11717,"nodeType":"StructuredDocumentation","src":"28839:307:54","text":" @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits"},"id":11742,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29160:7:54","nodeType":"FunctionDefinition","parameters":{"id":11720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11719,"mutability":"mutable","name":"value","nameLocation":"29175:5:54","nodeType":"VariableDeclaration","scope":11742,"src":"29168:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11718,"name":"int256","nodeType":"ElementaryTypeName","src":"29168:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29167:14:54"},"returnParameters":{"id":11723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11722,"mutability":"mutable","name":"downcasted","nameLocation":"29211:10:54","nodeType":"VariableDeclaration","scope":11742,"src":"29205:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":11721,"name":"int80","nodeType":"ElementaryTypeName","src":"29205:5:54","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29204:18:54"},"scope":12017,"src":"29151:220:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11767,"nodeType":"Block","src":"29761:148:54","statements":[{"expression":{"id":11755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11750,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11748,"src":"29771:10:54","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11753,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11745,"src":"29790:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29784:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":11751,"name":"int72","nodeType":"ElementaryTypeName","src":"29784:5:54","typeDescriptions":{}}},"id":11754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29784:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"29771:25:54","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":11756,"nodeType":"ExpressionStatement","src":"29771:25:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11757,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11748,"src":"29810:10:54","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11758,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11745,"src":"29824:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29810:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11766,"nodeType":"IfStatement","src":"29806:97:54","trueBody":{"id":11765,"nodeType":"Block","src":"29831:72:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":11761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29882:2:54","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":11762,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11745,"src":"29886:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11760,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"29852:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29852:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11764,"nodeType":"RevertStatement","src":"29845:47:54"}]}}]},"documentation":{"id":11743,"nodeType":"StructuredDocumentation","src":"29377:307:54","text":" @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits"},"id":11768,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"29698:7:54","nodeType":"FunctionDefinition","parameters":{"id":11746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11745,"mutability":"mutable","name":"value","nameLocation":"29713:5:54","nodeType":"VariableDeclaration","scope":11768,"src":"29706:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11744,"name":"int256","nodeType":"ElementaryTypeName","src":"29706:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29705:14:54"},"returnParameters":{"id":11749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11748,"mutability":"mutable","name":"downcasted","nameLocation":"29749:10:54","nodeType":"VariableDeclaration","scope":11768,"src":"29743:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":11747,"name":"int72","nodeType":"ElementaryTypeName","src":"29743:5:54","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"29742:18:54"},"scope":12017,"src":"29689:220:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11793,"nodeType":"Block","src":"30299:148:54","statements":[{"expression":{"id":11781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11776,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11774,"src":"30309:10:54","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11779,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11771,"src":"30328:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30322:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":11777,"name":"int64","nodeType":"ElementaryTypeName","src":"30322:5:54","typeDescriptions":{}}},"id":11780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30322:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30309:25:54","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":11782,"nodeType":"ExpressionStatement","src":"30309:25:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11783,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11774,"src":"30348:10:54","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11784,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11771,"src":"30362:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30348:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11792,"nodeType":"IfStatement","src":"30344:97:54","trueBody":{"id":11791,"nodeType":"Block","src":"30369:72:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":11787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30420:2:54","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":11788,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11771,"src":"30424:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11786,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"30390:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30390:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11790,"nodeType":"RevertStatement","src":"30383:47:54"}]}}]},"documentation":{"id":11769,"nodeType":"StructuredDocumentation","src":"29915:307:54","text":" @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits"},"id":11794,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30236:7:54","nodeType":"FunctionDefinition","parameters":{"id":11772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11771,"mutability":"mutable","name":"value","nameLocation":"30251:5:54","nodeType":"VariableDeclaration","scope":11794,"src":"30244:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11770,"name":"int256","nodeType":"ElementaryTypeName","src":"30244:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30243:14:54"},"returnParameters":{"id":11775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11774,"mutability":"mutable","name":"downcasted","nameLocation":"30287:10:54","nodeType":"VariableDeclaration","scope":11794,"src":"30281:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":11773,"name":"int64","nodeType":"ElementaryTypeName","src":"30281:5:54","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30280:18:54"},"scope":12017,"src":"30227:220:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11819,"nodeType":"Block","src":"30837:148:54","statements":[{"expression":{"id":11807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11802,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11800,"src":"30847:10:54","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11805,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11797,"src":"30866:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30860:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":11803,"name":"int56","nodeType":"ElementaryTypeName","src":"30860:5:54","typeDescriptions":{}}},"id":11806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30860:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"30847:25:54","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":11808,"nodeType":"ExpressionStatement","src":"30847:25:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11809,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11800,"src":"30886:10:54","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11810,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11797,"src":"30900:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30886:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11818,"nodeType":"IfStatement","src":"30882:97:54","trueBody":{"id":11817,"nodeType":"Block","src":"30907:72:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":11813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30958:2:54","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":11814,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11797,"src":"30962:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11812,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"30928:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30928:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11816,"nodeType":"RevertStatement","src":"30921:47:54"}]}}]},"documentation":{"id":11795,"nodeType":"StructuredDocumentation","src":"30453:307:54","text":" @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits"},"id":11820,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"30774:7:54","nodeType":"FunctionDefinition","parameters":{"id":11798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11797,"mutability":"mutable","name":"value","nameLocation":"30789:5:54","nodeType":"VariableDeclaration","scope":11820,"src":"30782:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11796,"name":"int256","nodeType":"ElementaryTypeName","src":"30782:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30781:14:54"},"returnParameters":{"id":11801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11800,"mutability":"mutable","name":"downcasted","nameLocation":"30825:10:54","nodeType":"VariableDeclaration","scope":11820,"src":"30819:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":11799,"name":"int56","nodeType":"ElementaryTypeName","src":"30819:5:54","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"30818:18:54"},"scope":12017,"src":"30765:220:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11845,"nodeType":"Block","src":"31375:148:54","statements":[{"expression":{"id":11833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11828,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11826,"src":"31385:10:54","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11831,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11823,"src":"31404:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11830,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31398:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":11829,"name":"int48","nodeType":"ElementaryTypeName","src":"31398:5:54","typeDescriptions":{}}},"id":11832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31398:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31385:25:54","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":11834,"nodeType":"ExpressionStatement","src":"31385:25:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11835,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11826,"src":"31424:10:54","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11836,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11823,"src":"31438:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31424:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11844,"nodeType":"IfStatement","src":"31420:97:54","trueBody":{"id":11843,"nodeType":"Block","src":"31445:72:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":11839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31496:2:54","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":11840,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11823,"src":"31500:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11838,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"31466:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31466:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11842,"nodeType":"RevertStatement","src":"31459:47:54"}]}}]},"documentation":{"id":11821,"nodeType":"StructuredDocumentation","src":"30991:307:54","text":" @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits"},"id":11846,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31312:7:54","nodeType":"FunctionDefinition","parameters":{"id":11824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11823,"mutability":"mutable","name":"value","nameLocation":"31327:5:54","nodeType":"VariableDeclaration","scope":11846,"src":"31320:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11822,"name":"int256","nodeType":"ElementaryTypeName","src":"31320:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31319:14:54"},"returnParameters":{"id":11827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11826,"mutability":"mutable","name":"downcasted","nameLocation":"31363:10:54","nodeType":"VariableDeclaration","scope":11846,"src":"31357:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":11825,"name":"int48","nodeType":"ElementaryTypeName","src":"31357:5:54","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31356:18:54"},"scope":12017,"src":"31303:220:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11871,"nodeType":"Block","src":"31913:148:54","statements":[{"expression":{"id":11859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11854,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11852,"src":"31923:10:54","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11857,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11849,"src":"31942:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11856,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31936:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":11855,"name":"int40","nodeType":"ElementaryTypeName","src":"31936:5:54","typeDescriptions":{}}},"id":11858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31936:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"31923:25:54","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":11860,"nodeType":"ExpressionStatement","src":"31923:25:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11861,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11852,"src":"31962:10:54","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11862,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11849,"src":"31976:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31962:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11870,"nodeType":"IfStatement","src":"31958:97:54","trueBody":{"id":11869,"nodeType":"Block","src":"31983:72:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":11865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32034:2:54","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":11866,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11849,"src":"32038:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11864,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"32004:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32004:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11868,"nodeType":"RevertStatement","src":"31997:47:54"}]}}]},"documentation":{"id":11847,"nodeType":"StructuredDocumentation","src":"31529:307:54","text":" @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits"},"id":11872,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"31850:7:54","nodeType":"FunctionDefinition","parameters":{"id":11850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11849,"mutability":"mutable","name":"value","nameLocation":"31865:5:54","nodeType":"VariableDeclaration","scope":11872,"src":"31858:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11848,"name":"int256","nodeType":"ElementaryTypeName","src":"31858:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31857:14:54"},"returnParameters":{"id":11853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11852,"mutability":"mutable","name":"downcasted","nameLocation":"31901:10:54","nodeType":"VariableDeclaration","scope":11872,"src":"31895:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":11851,"name":"int40","nodeType":"ElementaryTypeName","src":"31895:5:54","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"31894:18:54"},"scope":12017,"src":"31841:220:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11897,"nodeType":"Block","src":"32451:148:54","statements":[{"expression":{"id":11885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11880,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11878,"src":"32461:10:54","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11883,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11875,"src":"32480:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32474:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":11881,"name":"int32","nodeType":"ElementaryTypeName","src":"32474:5:54","typeDescriptions":{}}},"id":11884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32474:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32461:25:54","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":11886,"nodeType":"ExpressionStatement","src":"32461:25:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11887,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11878,"src":"32500:10:54","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11888,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11875,"src":"32514:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32500:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11896,"nodeType":"IfStatement","src":"32496:97:54","trueBody":{"id":11895,"nodeType":"Block","src":"32521:72:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":11891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32572:2:54","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":11892,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11875,"src":"32576:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11890,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"32542:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32542:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11894,"nodeType":"RevertStatement","src":"32535:47:54"}]}}]},"documentation":{"id":11873,"nodeType":"StructuredDocumentation","src":"32067:307:54","text":" @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits"},"id":11898,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32388:7:54","nodeType":"FunctionDefinition","parameters":{"id":11876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11875,"mutability":"mutable","name":"value","nameLocation":"32403:5:54","nodeType":"VariableDeclaration","scope":11898,"src":"32396:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11874,"name":"int256","nodeType":"ElementaryTypeName","src":"32396:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32395:14:54"},"returnParameters":{"id":11879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11878,"mutability":"mutable","name":"downcasted","nameLocation":"32439:10:54","nodeType":"VariableDeclaration","scope":11898,"src":"32433:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":11877,"name":"int32","nodeType":"ElementaryTypeName","src":"32433:5:54","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32432:18:54"},"scope":12017,"src":"32379:220:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11923,"nodeType":"Block","src":"32989:148:54","statements":[{"expression":{"id":11911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11906,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11904,"src":"32999:10:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11901,"src":"33018:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11908,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33012:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":11907,"name":"int24","nodeType":"ElementaryTypeName","src":"33012:5:54","typeDescriptions":{}}},"id":11910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33012:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32999:25:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":11912,"nodeType":"ExpressionStatement","src":"32999:25:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11913,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11904,"src":"33038:10:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11914,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11901,"src":"33052:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33038:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11922,"nodeType":"IfStatement","src":"33034:97:54","trueBody":{"id":11921,"nodeType":"Block","src":"33059:72:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":11917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33110:2:54","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":11918,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11901,"src":"33114:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11916,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"33080:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33080:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11920,"nodeType":"RevertStatement","src":"33073:47:54"}]}}]},"documentation":{"id":11899,"nodeType":"StructuredDocumentation","src":"32605:307:54","text":" @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits"},"id":11924,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"32926:7:54","nodeType":"FunctionDefinition","parameters":{"id":11902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11901,"mutability":"mutable","name":"value","nameLocation":"32941:5:54","nodeType":"VariableDeclaration","scope":11924,"src":"32934:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11900,"name":"int256","nodeType":"ElementaryTypeName","src":"32934:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32933:14:54"},"returnParameters":{"id":11905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11904,"mutability":"mutable","name":"downcasted","nameLocation":"32977:10:54","nodeType":"VariableDeclaration","scope":11924,"src":"32971:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":11903,"name":"int24","nodeType":"ElementaryTypeName","src":"32971:5:54","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"32970:18:54"},"scope":12017,"src":"32917:220:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11949,"nodeType":"Block","src":"33527:148:54","statements":[{"expression":{"id":11937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11932,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11930,"src":"33537:10:54","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11935,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11927,"src":"33556:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33550:5:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":11933,"name":"int16","nodeType":"ElementaryTypeName","src":"33550:5:54","typeDescriptions":{}}},"id":11936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33550:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33537:25:54","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":11938,"nodeType":"ExpressionStatement","src":"33537:25:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11939,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11930,"src":"33576:10:54","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11940,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11927,"src":"33590:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33576:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11948,"nodeType":"IfStatement","src":"33572:97:54","trueBody":{"id":11947,"nodeType":"Block","src":"33597:72:54","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":11943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33648:2:54","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":11944,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11927,"src":"33652:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11942,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"33618:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33618:40:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11946,"nodeType":"RevertStatement","src":"33611:47:54"}]}}]},"documentation":{"id":11925,"nodeType":"StructuredDocumentation","src":"33143:307:54","text":" @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits"},"id":11950,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33464:7:54","nodeType":"FunctionDefinition","parameters":{"id":11928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11927,"mutability":"mutable","name":"value","nameLocation":"33479:5:54","nodeType":"VariableDeclaration","scope":11950,"src":"33472:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11926,"name":"int256","nodeType":"ElementaryTypeName","src":"33472:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33471:14:54"},"returnParameters":{"id":11931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11930,"mutability":"mutable","name":"downcasted","nameLocation":"33515:10:54","nodeType":"VariableDeclaration","scope":11950,"src":"33509:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":11929,"name":"int16","nodeType":"ElementaryTypeName","src":"33509:5:54","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33508:18:54"},"scope":12017,"src":"33455:220:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11975,"nodeType":"Block","src":"34058:146:54","statements":[{"expression":{"id":11963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11958,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11956,"src":"34068:10:54","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11961,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11953,"src":"34086:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34081:4:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":11959,"name":"int8","nodeType":"ElementaryTypeName","src":"34081:4:54","typeDescriptions":{}}},"id":11962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34081:11:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34068:24:54","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":11964,"nodeType":"ExpressionStatement","src":"34068:24:54"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":11967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11965,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11956,"src":"34106:10:54","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":11966,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11953,"src":"34120:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34106:19:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11974,"nodeType":"IfStatement","src":"34102:96:54","trueBody":{"id":11973,"nodeType":"Block","src":"34127:71:54","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":11969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34178:1:54","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":11970,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11953,"src":"34181:5:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11968,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10274,"src":"34148:29:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":11971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34148:39:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11972,"nodeType":"RevertStatement","src":"34141:46:54"}]}}]},"documentation":{"id":11951,"nodeType":"StructuredDocumentation","src":"33681:302:54","text":" @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits"},"id":11976,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"33997:6:54","nodeType":"FunctionDefinition","parameters":{"id":11954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11953,"mutability":"mutable","name":"value","nameLocation":"34011:5:54","nodeType":"VariableDeclaration","scope":11976,"src":"34004:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11952,"name":"int256","nodeType":"ElementaryTypeName","src":"34004:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34003:14:54"},"returnParameters":{"id":11957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11956,"mutability":"mutable","name":"downcasted","nameLocation":"34046:10:54","nodeType":"VariableDeclaration","scope":11976,"src":"34041:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":11955,"name":"int8","nodeType":"ElementaryTypeName","src":"34041:4:54","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34040:17:54"},"scope":12017,"src":"33988:216:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12005,"nodeType":"Block","src":"34444:250:54","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11984,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11979,"src":"34557:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":11989,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34578:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":11988,"name":"int256","nodeType":"ElementaryTypeName","src":"34578:6:54","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":11987,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"34573:4:54","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":11990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34573:12:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":11991,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34586:3:54","memberName":"max","nodeType":"MemberAccess","src":"34573:16:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":11986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34565:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11985,"name":"uint256","nodeType":"ElementaryTypeName","src":"34565:7:54","typeDescriptions":{}}},"id":11992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34565:25:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34557:33:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11999,"nodeType":"IfStatement","src":"34553:105:54","trueBody":{"id":11998,"nodeType":"Block","src":"34592:66:54","statements":[{"errorCall":{"arguments":[{"id":11995,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11979,"src":"34641:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11994,"name":"SafeCastOverflowedUintToInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10279,"src":"34613:27:54","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":11996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34613:34:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":11997,"nodeType":"RevertStatement","src":"34606:41:54"}]}},{"expression":{"arguments":[{"id":12002,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11979,"src":"34681:5:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34674:6:54","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":12000,"name":"int256","nodeType":"ElementaryTypeName","src":"34674:6:54","typeDescriptions":{}}},"id":12003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34674:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":11983,"id":12004,"nodeType":"Return","src":"34667:20:54"}]},"documentation":{"id":11977,"nodeType":"StructuredDocumentation","src":"34210:165:54","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":12006,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34389:8:54","nodeType":"FunctionDefinition","parameters":{"id":11980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11979,"mutability":"mutable","name":"value","nameLocation":"34406:5:54","nodeType":"VariableDeclaration","scope":12006,"src":"34398:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11978,"name":"uint256","nodeType":"ElementaryTypeName","src":"34398:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34397:15:54"},"returnParameters":{"id":11983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11982,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12006,"src":"34436:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":11981,"name":"int256","nodeType":"ElementaryTypeName","src":"34436:6:54","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34435:8:54"},"scope":12017,"src":"34380:314:54","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12015,"nodeType":"Block","src":"34853:87:54","statements":[{"AST":{"nativeSrc":"34888:46:54","nodeType":"YulBlock","src":"34888:46:54","statements":[{"nativeSrc":"34902:22:54","nodeType":"YulAssignment","src":"34902:22:54","value":{"arguments":[{"arguments":[{"name":"b","nativeSrc":"34921:1:54","nodeType":"YulIdentifier","src":"34921:1:54"}],"functionName":{"name":"iszero","nativeSrc":"34914:6:54","nodeType":"YulIdentifier","src":"34914:6:54"},"nativeSrc":"34914:9:54","nodeType":"YulFunctionCall","src":"34914:9:54"}],"functionName":{"name":"iszero","nativeSrc":"34907:6:54","nodeType":"YulIdentifier","src":"34907:6:54"},"nativeSrc":"34907:17:54","nodeType":"YulFunctionCall","src":"34907:17:54"},"variableNames":[{"name":"u","nativeSrc":"34902:1:54","nodeType":"YulIdentifier","src":"34902:1:54"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":12009,"isOffset":false,"isSlot":false,"src":"34921:1:54","valueSize":1},{"declaration":12012,"isOffset":false,"isSlot":false,"src":"34902:1:54","valueSize":1}],"flags":["memory-safe"],"id":12014,"nodeType":"InlineAssembly","src":"34863:71:54"}]},"documentation":{"id":12007,"nodeType":"StructuredDocumentation","src":"34700:90:54","text":" @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump."},"id":12016,"implemented":true,"kind":"function","modifiers":[],"name":"toUint","nameLocation":"34804:6:54","nodeType":"FunctionDefinition","parameters":{"id":12010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12009,"mutability":"mutable","name":"b","nameLocation":"34816:1:54","nodeType":"VariableDeclaration","scope":12016,"src":"34811:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12008,"name":"bool","nodeType":"ElementaryTypeName","src":"34811:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34810:8:54"},"returnParameters":{"id":12013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12012,"mutability":"mutable","name":"u","nameLocation":"34850:1:54","nodeType":"VariableDeclaration","scope":12016,"src":"34842:9:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12011,"name":"uint256","nodeType":"ElementaryTypeName","src":"34842:7:54","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34841:11:54"},"scope":12017,"src":"34795:145:54","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":12018,"src":"769:34173:54","usedErrors":[10262,10267,10274,10279],"usedEvents":[]}],"src":"192:34751:54"},"id":54},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SafeCast":[12017],"SignedMath":[12161]},"id":12162,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":12019,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:55"},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":12021,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12162,"sourceUnit":12018,"src":"135:40:55","symbolAliases":[{"foreign":{"id":12020,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"143:8:55","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":12022,"nodeType":"StructuredDocumentation","src":"177:80:55","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":12161,"linearizedBaseContracts":[12161],"name":"SignedMath","nameLocation":"266:10:55","nodeType":"ContractDefinition","nodes":[{"body":{"id":12051,"nodeType":"Block","src":"746:215:55","statements":[{"id":12050,"nodeType":"UncheckedBlock","src":"756:199:55","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12034,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12029,"src":"894:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12035,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12027,"src":"900:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":12036,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12029,"src":"904:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"900:5:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":12038,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"899:7:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"arguments":[{"id":12043,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12025,"src":"932:9:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":12041,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12017,"src":"916:8:55","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$12017_$","typeString":"type(library SafeCast)"}},"id":12042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"925:6:55","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":12016,"src":"916:15:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":12044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"916:26:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"909:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":12039,"name":"int256","nodeType":"ElementaryTypeName","src":"909:6:55","typeDescriptions":{}}},"id":12045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"909:34:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"899:44:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":12047,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"898:46:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"894:50:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":12033,"id":12049,"nodeType":"Return","src":"887:57:55"}]}]},"documentation":{"id":12023,"nodeType":"StructuredDocumentation","src":"283:374:55","text":" @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive."},"id":12052,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"671:7:55","nodeType":"FunctionDefinition","parameters":{"id":12030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12025,"mutability":"mutable","name":"condition","nameLocation":"684:9:55","nodeType":"VariableDeclaration","scope":12052,"src":"679:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12024,"name":"bool","nodeType":"ElementaryTypeName","src":"679:4:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":12027,"mutability":"mutable","name":"a","nameLocation":"702:1:55","nodeType":"VariableDeclaration","scope":12052,"src":"695:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12026,"name":"int256","nodeType":"ElementaryTypeName","src":"695:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":12029,"mutability":"mutable","name":"b","nameLocation":"712:1:55","nodeType":"VariableDeclaration","scope":12052,"src":"705:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12028,"name":"int256","nodeType":"ElementaryTypeName","src":"705:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"678:36:55"},"returnParameters":{"id":12033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12032,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12052,"src":"738:6:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12031,"name":"int256","nodeType":"ElementaryTypeName","src":"738:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"737:8:55"},"scope":12161,"src":"662:299:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12070,"nodeType":"Block","src":"1102:44:55","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12063,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12055,"src":"1127:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12064,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12057,"src":"1131:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1127:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":12066,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12055,"src":"1134:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":12067,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12057,"src":"1137:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12062,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12052,"src":"1119:7:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$","typeString":"function (bool,int256,int256) pure returns (int256)"}},"id":12068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1119:20:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":12061,"id":12069,"nodeType":"Return","src":"1112:27:55"}]},"documentation":{"id":12053,"nodeType":"StructuredDocumentation","src":"967:66:55","text":" @dev Returns the largest of two signed numbers."},"id":12071,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"1047:3:55","nodeType":"FunctionDefinition","parameters":{"id":12058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12055,"mutability":"mutable","name":"a","nameLocation":"1058:1:55","nodeType":"VariableDeclaration","scope":12071,"src":"1051:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12054,"name":"int256","nodeType":"ElementaryTypeName","src":"1051:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":12057,"mutability":"mutable","name":"b","nameLocation":"1068:1:55","nodeType":"VariableDeclaration","scope":12071,"src":"1061:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12056,"name":"int256","nodeType":"ElementaryTypeName","src":"1061:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1050:20:55"},"returnParameters":{"id":12061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12060,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12071,"src":"1094:6:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12059,"name":"int256","nodeType":"ElementaryTypeName","src":"1094:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1093:8:55"},"scope":12161,"src":"1038:108:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12089,"nodeType":"Block","src":"1288:44:55","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12082,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12074,"src":"1313:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12083,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12076,"src":"1317:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1313:5:55","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":12085,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12074,"src":"1320:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":12086,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12076,"src":"1323:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12081,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12052,"src":"1305:7:55","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$","typeString":"function (bool,int256,int256) pure returns (int256)"}},"id":12087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1305:20:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":12080,"id":12088,"nodeType":"Return","src":"1298:27:55"}]},"documentation":{"id":12072,"nodeType":"StructuredDocumentation","src":"1152:67:55","text":" @dev Returns the smallest of two signed numbers."},"id":12090,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"1233:3:55","nodeType":"FunctionDefinition","parameters":{"id":12077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12074,"mutability":"mutable","name":"a","nameLocation":"1244:1:55","nodeType":"VariableDeclaration","scope":12090,"src":"1237:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12073,"name":"int256","nodeType":"ElementaryTypeName","src":"1237:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":12076,"mutability":"mutable","name":"b","nameLocation":"1254:1:55","nodeType":"VariableDeclaration","scope":12090,"src":"1247:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12075,"name":"int256","nodeType":"ElementaryTypeName","src":"1247:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1236:20:55"},"returnParameters":{"id":12080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12079,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12090,"src":"1280:6:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12078,"name":"int256","nodeType":"ElementaryTypeName","src":"1280:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1279:8:55"},"scope":12161,"src":"1224:108:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12133,"nodeType":"Block","src":"1537:162:55","statements":[{"assignments":[12101],"declarations":[{"constant":false,"id":12101,"mutability":"mutable","name":"x","nameLocation":"1606:1:55","nodeType":"VariableDeclaration","scope":12133,"src":"1599:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12100,"name":"int256","nodeType":"ElementaryTypeName","src":"1599:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":12114,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12102,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12093,"src":"1611:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":12103,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12095,"src":"1615:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1611:5:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":12105,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1610:7:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12106,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12093,"src":"1622:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":12107,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12095,"src":"1626:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1622:5:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":12109,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1621:7:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":12110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1632:1:55","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1621:12:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":12112,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1620:14:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1610:24:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1599:35:55"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12115,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12101,"src":"1651:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12120,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12101,"src":"1671:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1663:7:55","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1663:7:55","typeDescriptions":{}}},"id":12121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1663:10:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":12122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1677:3:55","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"1663:17:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1656:6:55","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":12116,"name":"int256","nodeType":"ElementaryTypeName","src":"1656:6:55","typeDescriptions":{}}},"id":12124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1656:25:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12125,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12093,"src":"1685:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":12126,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12095,"src":"1689:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1685:5:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":12128,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1684:7:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1656:35:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":12130,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1655:37:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1651:41:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":12099,"id":12132,"nodeType":"Return","src":"1644:48:55"}]},"documentation":{"id":12091,"nodeType":"StructuredDocumentation","src":"1338:126:55","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":12134,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"1478:7:55","nodeType":"FunctionDefinition","parameters":{"id":12096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12093,"mutability":"mutable","name":"a","nameLocation":"1493:1:55","nodeType":"VariableDeclaration","scope":12134,"src":"1486:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12092,"name":"int256","nodeType":"ElementaryTypeName","src":"1486:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":12095,"mutability":"mutable","name":"b","nameLocation":"1503:1:55","nodeType":"VariableDeclaration","scope":12134,"src":"1496:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12094,"name":"int256","nodeType":"ElementaryTypeName","src":"1496:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1485:20:55"},"returnParameters":{"id":12099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12134,"src":"1529:6:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12097,"name":"int256","nodeType":"ElementaryTypeName","src":"1529:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1528:8:55"},"scope":12161,"src":"1469:230:55","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12159,"nodeType":"Block","src":"1843:767:55","statements":[{"id":12158,"nodeType":"UncheckedBlock","src":"1853:751:55","statements":[{"assignments":[12143],"declarations":[{"constant":false,"id":12143,"mutability":"mutable","name":"mask","nameLocation":"2424:4:55","nodeType":"VariableDeclaration","scope":12158,"src":"2417:11:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12142,"name":"int256","nodeType":"ElementaryTypeName","src":"2417:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":12147,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12144,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12137,"src":"2431:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":12145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2436:3:55","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"2431:8:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"2417:22:55"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":12152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12150,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12137,"src":"2576:1:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":12151,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12143,"src":"2580:4:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2576:8:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":12153,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2575:10:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":12154,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12143,"src":"2588:4:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2575:17:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":12149,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2567:7:55","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12148,"name":"uint256","nodeType":"ElementaryTypeName","src":"2567:7:55","typeDescriptions":{}}},"id":12156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2567:26:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12141,"id":12157,"nodeType":"Return","src":"2560:33:55"}]}]},"documentation":{"id":12135,"nodeType":"StructuredDocumentation","src":"1705:78:55","text":" @dev Returns the absolute unsigned value of a signed value."},"id":12160,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1797:3:55","nodeType":"FunctionDefinition","parameters":{"id":12138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12137,"mutability":"mutable","name":"n","nameLocation":"1808:1:55","nodeType":"VariableDeclaration","scope":12160,"src":"1801:8:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":12136,"name":"int256","nodeType":"ElementaryTypeName","src":"1801:6:55","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1800:10:55"},"returnParameters":{"id":12141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12140,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12160,"src":"1834:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12139,"name":"uint256","nodeType":"ElementaryTypeName","src":"1834:7:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1833:9:55"},"scope":12161,"src":"1788:822:55","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":12162,"src":"258:2354:55","usedErrors":[],"usedEvents":[]}],"src":"109:2504:55"},"id":55},"contracts/ERC6551Account.sol":{"ast":{"absolutePath":"contracts/ERC6551Account.sol","exportedSymbols":{"ECDSA":[8487],"ERC6551Account":[12459],"IERC1271":[3994],"IERC165":[8631],"IERC6551Account":[13429],"IERC6551Executable":[13447],"IERC721":[6406],"SignatureChecker":[8595]},"id":12460,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":12163,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:56"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"@openzeppelin/contracts/utils/introspection/IERC165.sol","id":12164,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12460,"sourceUnit":8632,"src":"57:65:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":12165,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12460,"sourceUnit":6407,"src":"123:58:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1271.sol","file":"@openzeppelin/contracts/interfaces/IERC1271.sol","id":12166,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12460,"sourceUnit":3995,"src":"182:57:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol","file":"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol","id":12167,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12460,"sourceUnit":8596,"src":"240:73:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IERC6551Account.sol","file":"./interfaces/IERC6551Account.sol","id":12168,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12460,"sourceUnit":13430,"src":"314:42:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IERC6551Executable.sol","file":"./interfaces/IERC6551Executable.sol","id":12169,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12460,"sourceUnit":13448,"src":"357:45:56","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12171,"name":"IERC165","nameLocations":["519:7:56"],"nodeType":"IdentifierPath","referencedDeclaration":8631,"src":"519:7:56"},"id":12172,"nodeType":"InheritanceSpecifier","src":"519:7:56"},{"baseName":{"id":12173,"name":"IERC1271","nameLocations":["532:8:56"],"nodeType":"IdentifierPath","referencedDeclaration":3994,"src":"532:8:56"},"id":12174,"nodeType":"InheritanceSpecifier","src":"532:8:56"},{"baseName":{"id":12175,"name":"IERC6551Account","nameLocations":["546:15:56"],"nodeType":"IdentifierPath","referencedDeclaration":13429,"src":"546:15:56"},"id":12176,"nodeType":"InheritanceSpecifier","src":"546:15:56"},{"baseName":{"id":12177,"name":"IERC6551Executable","nameLocations":["567:18:56"],"nodeType":"IdentifierPath","referencedDeclaration":13447,"src":"567:18:56"},"id":12178,"nodeType":"InheritanceSpecifier","src":"567:18:56"}],"canonicalName":"ERC6551Account","contractDependencies":[],"contractKind":"contract","documentation":{"id":12170,"nodeType":"StructuredDocumentation","src":"404:83:56","text":" @title A simple implementation of ERC6551Account\n @author ERC6551 Team"},"fullyImplemented":true,"id":12459,"linearizedBaseContracts":[12459,13447,13429,3994,8631],"name":"ERC6551Account","nameLocation":"497:14:56","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[13418],"constant":false,"documentation":{"id":12179,"nodeType":"StructuredDocumentation","src":"592:76:56","text":" @dev Account state nonce, incremented on each transaction"},"functionSelector":"c19d93fb","id":12181,"mutability":"mutable","name":"state","nameLocation":"688:5:56","nodeType":"VariableDeclaration","scope":12459,"src":"673:20:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12180,"name":"uint256","nodeType":"ElementaryTypeName","src":"673:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":true,"documentation":{"id":12182,"nodeType":"StructuredDocumentation","src":"700:192:56","text":" @dev Storage slot for token data\n This is written during initialization by the registry\n Structure: chainId (uint256), tokenContract (address), tokenId (uint256)"},"id":12187,"mutability":"constant","name":"TOKEN_DATA_SLOT","nameLocation":"922:15:56","nodeType":"VariableDeclaration","scope":12459,"src":"897:85:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12183,"name":"bytes32","nodeType":"ElementaryTypeName","src":"897:7:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"657263363535312e6163636f756e742e746f6b656e","id":12185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"958:23:56","typeDescriptions":{"typeIdentifier":"t_stringliteral_4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f0","typeString":"literal_string \"erc6551.account.token\""},"value":"erc6551.account.token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f0","typeString":"literal_string \"erc6551.account.token\""}],"id":12184,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"948:9:56","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":12186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"948:34:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"baseFunctions":[13402],"body":{"id":12191,"nodeType":"Block","src":"1078:2:56","statements":[]},"documentation":{"id":12188,"nodeType":"StructuredDocumentation","src":"989:57:56","text":" @dev Allows the account to receive ETH"},"id":12192,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":12189,"nodeType":"ParameterList","parameters":[],"src":"1058:2:56"},"returnParameters":{"id":12190,"nodeType":"ParameterList","parameters":[],"src":"1078:0:56"},"scope":12459,"src":"1051:29:56","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[13446],"body":{"id":12266,"nodeType":"Block","src":"1325:568:56","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":12208,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1358:3:56","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1362:6:56","memberName":"sender","nodeType":"MemberAccess","src":"1358:10:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12207,"name":"_isValidSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12458,"src":"1343:14:56","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":12210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1343:26:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964207369676e6572","id":12211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1371:16:56","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365","typeString":"literal_string \"Invalid signer\""},"value":"Invalid signer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365","typeString":"literal_string \"Invalid signer\""}],"id":12206,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1335:7:56","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1335:53:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12213,"nodeType":"ExpressionStatement","src":"1335:53:56"},{"expression":{"id":12215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1399:7:56","subExpression":{"id":12214,"name":"state","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12181,"src":"1401:5:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12216,"nodeType":"ExpressionStatement","src":"1399:7:56"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":12219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12217,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12201,"src":"1421:9:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1434:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1421:14:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":12241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12239,"name":"operation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12201,"src":"1623:9:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":12240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1636:1:56","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1623:14:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12263,"nodeType":"Block","src":"1831:56:56","statements":[{"expression":{"arguments":[{"hexValue":"556e737570706f72746564206f7065726174696f6e","id":12260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1852:23:56","typeDescriptions":{"typeIdentifier":"t_stringliteral_d7c7d2b236b51fd89629e4d9859becd69328dedbd10a2b39b9506664e672e4f5","typeString":"literal_string \"Unsupported operation\""},"value":"Unsupported operation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d7c7d2b236b51fd89629e4d9859becd69328dedbd10a2b39b9506664e672e4f5","typeString":"literal_string \"Unsupported operation\""}],"id":12259,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1845:6:56","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":12261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1845:31:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12262,"nodeType":"ExpressionStatement","src":"1845:31:56"}]},"id":12264,"nodeType":"IfStatement","src":"1619:268:56","trueBody":{"id":12258,"nodeType":"Block","src":"1639:186:56","statements":[{"assignments":[12243,12245],"declarations":[{"constant":false,"id":12243,"mutability":"mutable","name":"success","nameLocation":"1687:7:56","nodeType":"VariableDeclaration","scope":12258,"src":"1682:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12242,"name":"bool","nodeType":"ElementaryTypeName","src":"1682:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":12245,"mutability":"mutable","name":"ret","nameLocation":"1709:3:56","nodeType":"VariableDeclaration","scope":12258,"src":"1696:16:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12244,"name":"bytes","nodeType":"ElementaryTypeName","src":"1696:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":12250,"initialValue":{"arguments":[{"id":12248,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12199,"src":"1732:4:56","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":12246,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12195,"src":"1716:2:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1719:12:56","memberName":"delegatecall","nodeType":"MemberAccess","src":"1716:15:56","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":12249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1716:21:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1681:56:56"},{"expression":{"arguments":[{"id":12252,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12243,"src":"1759:7:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"44656c656761746563616c6c206661696c6564","id":12253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1768:21:56","typeDescriptions":{"typeIdentifier":"t_stringliteral_f359bfbeef909164abd0bd7bf77897770685caeb4aad15b1df64fe1f5028d5eb","typeString":"literal_string \"Delegatecall failed\""},"value":"Delegatecall failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f359bfbeef909164abd0bd7bf77897770685caeb4aad15b1df64fe1f5028d5eb","typeString":"literal_string \"Delegatecall failed\""}],"id":12251,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1751:7:56","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1751:39:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12255,"nodeType":"ExpressionStatement","src":"1751:39:56"},{"expression":{"id":12256,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12245,"src":"1811:3:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12205,"id":12257,"nodeType":"Return","src":"1804:10:56"}]}},"id":12265,"nodeType":"IfStatement","src":"1417:470:56","trueBody":{"id":12238,"nodeType":"Block","src":"1437:176:56","statements":[{"assignments":[12221,12223],"declarations":[{"constant":false,"id":12221,"mutability":"mutable","name":"success","nameLocation":"1477:7:56","nodeType":"VariableDeclaration","scope":12238,"src":"1472:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12220,"name":"bool","nodeType":"ElementaryTypeName","src":"1472:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":12223,"mutability":"mutable","name":"ret","nameLocation":"1499:3:56","nodeType":"VariableDeclaration","scope":12238,"src":"1486:16:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12222,"name":"bytes","nodeType":"ElementaryTypeName","src":"1486:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":12230,"initialValue":{"arguments":[{"id":12228,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12199,"src":"1528:4:56","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":12224,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12195,"src":"1506:2:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1509:4:56","memberName":"call","nodeType":"MemberAccess","src":"1506:7:56","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":12227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":12226,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12197,"src":"1521:5:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1506:21:56","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":12229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1506:27:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1471:62:56"},{"expression":{"arguments":[{"id":12232,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12221,"src":"1555:7:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616c6c206661696c6564","id":12233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1564:13:56","typeDescriptions":{"typeIdentifier":"t_stringliteral_066ad49a0ed9e5d6a9f3c20fca13a038f0a5d629f0aaf09d634ae2a7c232ac2b","typeString":"literal_string \"Call failed\""},"value":"Call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_066ad49a0ed9e5d6a9f3c20fca13a038f0a5d629f0aaf09d634ae2a7c232ac2b","typeString":"literal_string \"Call failed\""}],"id":12231,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1547:7:56","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1547:31:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12235,"nodeType":"ExpressionStatement","src":"1547:31:56"},{"expression":{"id":12236,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12223,"src":"1599:3:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12205,"id":12237,"nodeType":"Return","src":"1592:10:56"}]}}]},"documentation":{"id":12193,"nodeType":"StructuredDocumentation","src":"1086:67:56","text":" @dev Executes a transaction from the token owner"},"functionSelector":"51945447","id":12267,"implemented":true,"kind":"function","modifiers":[],"name":"execute","nameLocation":"1167:7:56","nodeType":"FunctionDefinition","parameters":{"id":12202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12195,"mutability":"mutable","name":"to","nameLocation":"1192:2:56","nodeType":"VariableDeclaration","scope":12267,"src":"1184:10:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12194,"name":"address","nodeType":"ElementaryTypeName","src":"1184:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12197,"mutability":"mutable","name":"value","nameLocation":"1212:5:56","nodeType":"VariableDeclaration","scope":12267,"src":"1204:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12196,"name":"uint256","nodeType":"ElementaryTypeName","src":"1204:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12199,"mutability":"mutable","name":"data","nameLocation":"1242:4:56","nodeType":"VariableDeclaration","scope":12267,"src":"1227:19:56","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":12198,"name":"bytes","nodeType":"ElementaryTypeName","src":"1227:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":12201,"mutability":"mutable","name":"operation","nameLocation":"1262:9:56","nodeType":"VariableDeclaration","scope":12267,"src":"1256:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12200,"name":"uint8","nodeType":"ElementaryTypeName","src":"1256:5:56","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1174:103:56"},"returnParameters":{"id":12205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12204,"mutability":"mutable","name":"result","nameLocation":"1317:6:56","nodeType":"VariableDeclaration","scope":12267,"src":"1304:19:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12203,"name":"bytes","nodeType":"ElementaryTypeName","src":"1304:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1303:21:56"},"scope":12459,"src":"1158:735:56","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[13412],"body":{"id":12282,"nodeType":"Block","src":"2092:247:56","statements":[{"assignments":[12278],"declarations":[{"constant":false,"id":12278,"mutability":"mutable","name":"slot","nameLocation":"2154:4:56","nodeType":"VariableDeclaration","scope":12282,"src":"2146:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12277,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2146:7:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":12280,"initialValue":{"id":12279,"name":"TOKEN_DATA_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12187,"src":"2161:15:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2146:30:56"},{"AST":{"nativeSrc":"2195:138:56","nodeType":"YulBlock","src":"2195:138:56","statements":[{"nativeSrc":"2209:22:56","nodeType":"YulAssignment","src":"2209:22:56","value":{"arguments":[{"name":"slot","nativeSrc":"2226:4:56","nodeType":"YulIdentifier","src":"2226:4:56"}],"functionName":{"name":"sload","nativeSrc":"2220:5:56","nodeType":"YulIdentifier","src":"2220:5:56"},"nativeSrc":"2220:11:56","nodeType":"YulFunctionCall","src":"2220:11:56"},"variableNames":[{"name":"chainId","nativeSrc":"2209:7:56","nodeType":"YulIdentifier","src":"2209:7:56"}]},{"nativeSrc":"2244:36:56","nodeType":"YulAssignment","src":"2244:36:56","value":{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"2271:4:56","nodeType":"YulIdentifier","src":"2271:4:56"},{"kind":"number","nativeSrc":"2277:1:56","nodeType":"YulLiteral","src":"2277:1:56","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2267:3:56","nodeType":"YulIdentifier","src":"2267:3:56"},"nativeSrc":"2267:12:56","nodeType":"YulFunctionCall","src":"2267:12:56"}],"functionName":{"name":"sload","nativeSrc":"2261:5:56","nodeType":"YulIdentifier","src":"2261:5:56"},"nativeSrc":"2261:19:56","nodeType":"YulFunctionCall","src":"2261:19:56"},"variableNames":[{"name":"tokenContract","nativeSrc":"2244:13:56","nodeType":"YulIdentifier","src":"2244:13:56"}]},{"nativeSrc":"2293:30:56","nodeType":"YulAssignment","src":"2293:30:56","value":{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"2314:4:56","nodeType":"YulIdentifier","src":"2314:4:56"},{"kind":"number","nativeSrc":"2320:1:56","nodeType":"YulLiteral","src":"2320:1:56","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"2310:3:56","nodeType":"YulIdentifier","src":"2310:3:56"},"nativeSrc":"2310:12:56","nodeType":"YulFunctionCall","src":"2310:12:56"}],"functionName":{"name":"sload","nativeSrc":"2304:5:56","nodeType":"YulIdentifier","src":"2304:5:56"},"nativeSrc":"2304:19:56","nodeType":"YulFunctionCall","src":"2304:19:56"},"variableNames":[{"name":"tokenId","nativeSrc":"2293:7:56","nodeType":"YulIdentifier","src":"2293:7:56"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":12271,"isOffset":false,"isSlot":false,"src":"2209:7:56","valueSize":1},{"declaration":12278,"isOffset":false,"isSlot":false,"src":"2226:4:56","valueSize":1},{"declaration":12278,"isOffset":false,"isSlot":false,"src":"2271:4:56","valueSize":1},{"declaration":12278,"isOffset":false,"isSlot":false,"src":"2314:4:56","valueSize":1},{"declaration":12273,"isOffset":false,"isSlot":false,"src":"2244:13:56","valueSize":1},{"declaration":12275,"isOffset":false,"isSlot":false,"src":"2293:7:56","valueSize":1}],"id":12281,"nodeType":"InlineAssembly","src":"2186:147:56"}]},"documentation":{"id":12268,"nodeType":"StructuredDocumentation","src":"1899:63:56","text":" @dev Returns the token bound to this account"},"functionSelector":"fc0c546a","id":12283,"implemented":true,"kind":"function","modifiers":[],"name":"token","nameLocation":"1976:5:56","nodeType":"FunctionDefinition","parameters":{"id":12269,"nodeType":"ParameterList","parameters":[],"src":"1981:2:56"},"returnParameters":{"id":12276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12271,"mutability":"mutable","name":"chainId","nameLocation":"2039:7:56","nodeType":"VariableDeclaration","scope":12283,"src":"2031:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12270,"name":"uint256","nodeType":"ElementaryTypeName","src":"2031:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12273,"mutability":"mutable","name":"tokenContract","nameLocation":"2056:13:56","nodeType":"VariableDeclaration","scope":12283,"src":"2048:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12272,"name":"address","nodeType":"ElementaryTypeName","src":"2048:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12275,"mutability":"mutable","name":"tokenId","nameLocation":"2079:7:56","nodeType":"VariableDeclaration","scope":12283,"src":"2071:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12274,"name":"uint256","nodeType":"ElementaryTypeName","src":"2071:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2030:57:56"},"scope":12459,"src":"1967:372:56","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":12309,"nodeType":"Block","src":"2598:464:56","statements":[{"assignments":[12294],"declarations":[{"constant":false,"id":12294,"mutability":"mutable","name":"slot","nameLocation":"2679:4:56","nodeType":"VariableDeclaration","scope":12309,"src":"2671:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12293,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2671:7:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":12296,"initialValue":{"id":12295,"name":"TOKEN_DATA_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12187,"src":"2686:15:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2671:30:56"},{"assignments":[12298],"declarations":[{"constant":false,"id":12298,"mutability":"mutable","name":"storedChainId","nameLocation":"2719:13:56","nodeType":"VariableDeclaration","scope":12309,"src":"2711:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12297,"name":"uint256","nodeType":"ElementaryTypeName","src":"2711:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12299,"nodeType":"VariableDeclarationStatement","src":"2711:21:56"},{"AST":{"nativeSrc":"2751:52:56","nodeType":"YulBlock","src":"2751:52:56","statements":[{"nativeSrc":"2765:28:56","nodeType":"YulAssignment","src":"2765:28:56","value":{"arguments":[{"name":"slot","nativeSrc":"2788:4:56","nodeType":"YulIdentifier","src":"2788:4:56"}],"functionName":{"name":"sload","nativeSrc":"2782:5:56","nodeType":"YulIdentifier","src":"2782:5:56"},"nativeSrc":"2782:11:56","nodeType":"YulFunctionCall","src":"2782:11:56"},"variableNames":[{"name":"storedChainId","nativeSrc":"2765:13:56","nodeType":"YulIdentifier","src":"2765:13:56"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":12294,"isOffset":false,"isSlot":false,"src":"2788:4:56","valueSize":1},{"declaration":12298,"isOffset":false,"isSlot":false,"src":"2765:13:56","valueSize":1}],"id":12300,"nodeType":"InlineAssembly","src":"2742:61:56"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12302,"name":"storedChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12298,"src":"2820:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":12303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2837:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2820:18:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416c726561647920696e697469616c697a6564","id":12305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2840:21:56","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0","typeString":"literal_string \"Already initialized\""},"value":"Already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0","typeString":"literal_string \"Already initialized\""}],"id":12301,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2812:7:56","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2812:50:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12307,"nodeType":"ExpressionStatement","src":"2812:50:56"},{"AST":{"nativeSrc":"2921:135:56","nodeType":"YulBlock","src":"2921:135:56","statements":[{"expression":{"arguments":[{"name":"slot","nativeSrc":"2942:4:56","nodeType":"YulIdentifier","src":"2942:4:56"},{"name":"chainId","nativeSrc":"2948:7:56","nodeType":"YulIdentifier","src":"2948:7:56"}],"functionName":{"name":"sstore","nativeSrc":"2935:6:56","nodeType":"YulIdentifier","src":"2935:6:56"},"nativeSrc":"2935:21:56","nodeType":"YulFunctionCall","src":"2935:21:56"},"nativeSrc":"2935:21:56","nodeType":"YulExpressionStatement","src":"2935:21:56"},{"expression":{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"2980:4:56","nodeType":"YulIdentifier","src":"2980:4:56"},{"kind":"number","nativeSrc":"2986:1:56","nodeType":"YulLiteral","src":"2986:1:56","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2976:3:56","nodeType":"YulIdentifier","src":"2976:3:56"},"nativeSrc":"2976:12:56","nodeType":"YulFunctionCall","src":"2976:12:56"},{"name":"tokenContract","nativeSrc":"2990:13:56","nodeType":"YulIdentifier","src":"2990:13:56"}],"functionName":{"name":"sstore","nativeSrc":"2969:6:56","nodeType":"YulIdentifier","src":"2969:6:56"},"nativeSrc":"2969:35:56","nodeType":"YulFunctionCall","src":"2969:35:56"},"nativeSrc":"2969:35:56","nodeType":"YulExpressionStatement","src":"2969:35:56"},{"expression":{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"3028:4:56","nodeType":"YulIdentifier","src":"3028:4:56"},{"kind":"number","nativeSrc":"3034:1:56","nodeType":"YulLiteral","src":"3034:1:56","type":"","value":"2"}],"functionName":{"name":"add","nativeSrc":"3024:3:56","nodeType":"YulIdentifier","src":"3024:3:56"},"nativeSrc":"3024:12:56","nodeType":"YulFunctionCall","src":"3024:12:56"},{"name":"tokenId","nativeSrc":"3038:7:56","nodeType":"YulIdentifier","src":"3038:7:56"}],"functionName":{"name":"sstore","nativeSrc":"3017:6:56","nodeType":"YulIdentifier","src":"3017:6:56"},"nativeSrc":"3017:29:56","nodeType":"YulFunctionCall","src":"3017:29:56"},"nativeSrc":"3017:29:56","nodeType":"YulExpressionStatement","src":"3017:29:56"}]},"evmVersion":"paris","externalReferences":[{"declaration":12286,"isOffset":false,"isSlot":false,"src":"2948:7:56","valueSize":1},{"declaration":12294,"isOffset":false,"isSlot":false,"src":"2942:4:56","valueSize":1},{"declaration":12294,"isOffset":false,"isSlot":false,"src":"2980:4:56","valueSize":1},{"declaration":12294,"isOffset":false,"isSlot":false,"src":"3028:4:56","valueSize":1},{"declaration":12288,"isOffset":false,"isSlot":false,"src":"2990:13:56","valueSize":1},{"declaration":12290,"isOffset":false,"isSlot":false,"src":"3038:7:56","valueSize":1}],"id":12308,"nodeType":"InlineAssembly","src":"2912:144:56"}]},"documentation":{"id":12284,"nodeType":"StructuredDocumentation","src":"2345:132:56","text":" @dev Initialization function that stores token data\n This is called by the registry during account creation"},"functionSelector":"fffb5183","id":12310,"implemented":true,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"2491:10:56","nodeType":"FunctionDefinition","parameters":{"id":12291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12286,"mutability":"mutable","name":"chainId","nameLocation":"2519:7:56","nodeType":"VariableDeclaration","scope":12310,"src":"2511:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12285,"name":"uint256","nodeType":"ElementaryTypeName","src":"2511:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12288,"mutability":"mutable","name":"tokenContract","nameLocation":"2544:13:56","nodeType":"VariableDeclaration","scope":12310,"src":"2536:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12287,"name":"address","nodeType":"ElementaryTypeName","src":"2536:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12290,"mutability":"mutable","name":"tokenId","nameLocation":"2575:7:56","nodeType":"VariableDeclaration","scope":12310,"src":"2567:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12289,"name":"uint256","nodeType":"ElementaryTypeName","src":"2567:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2501:87:56"},"returnParameters":{"id":12292,"nodeType":"ParameterList","parameters":[],"src":"2598:0:56"},"scope":12459,"src":"2482:580:56","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[13428],"body":{"id":12334,"nodeType":"Block","src":"3259:141:56","statements":[{"condition":{"arguments":[{"id":12321,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12313,"src":"3288:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12320,"name":"_isValidSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12458,"src":"3273:14:56","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":12322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3273:22:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12328,"nodeType":"IfStatement","src":"3269:98:56","trueBody":{"id":12327,"nodeType":"Block","src":"3297:70:56","statements":[{"expression":{"expression":{"expression":{"id":12323,"name":"IERC6551Account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13429,"src":"3318:15:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC6551Account_$13429_$","typeString":"type(contract IERC6551Account)"}},"id":12324,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3334:13:56","memberName":"isValidSigner","nodeType":"MemberAccess","referencedDeclaration":13428,"src":"3318:29:56","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC6551Account.isValidSigner(address,bytes calldata) view returns (bytes4)"}},"id":12325,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3348:8:56","memberName":"selector","nodeType":"MemberAccess","src":"3318:38:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":12319,"id":12326,"nodeType":"Return","src":"3311:45:56"}]}},{"expression":{"arguments":[{"hexValue":"30","id":12331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3391:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3384:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":12329,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3384:6:56","typeDescriptions":{}}},"id":12332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3384:9:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":12319,"id":12333,"nodeType":"Return","src":"3377:16:56"}]},"documentation":{"id":12311,"nodeType":"StructuredDocumentation","src":"3068:78:56","text":" @dev Validates if a signer is authorized to perform actions"},"functionSelector":"523e3260","id":12335,"implemented":true,"kind":"function","modifiers":[],"name":"isValidSigner","nameLocation":"3160:13:56","nodeType":"FunctionDefinition","parameters":{"id":12316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12313,"mutability":"mutable","name":"signer","nameLocation":"3191:6:56","nodeType":"VariableDeclaration","scope":12335,"src":"3183:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12312,"name":"address","nodeType":"ElementaryTypeName","src":"3183:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12315,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12335,"src":"3207:14:56","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":12314,"name":"bytes","nodeType":"ElementaryTypeName","src":"3207:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3173:54:56"},"returnParameters":{"id":12319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12335,"src":"3251:6:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":12317,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3251:6:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3250:8:56"},"scope":12459,"src":"3151:249:56","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3993],"body":{"id":12391,"nodeType":"Block","src":"3605:394:56","statements":[{"assignments":[12346,12348,12350],"declarations":[{"constant":false,"id":12346,"mutability":"mutable","name":"chainId","nameLocation":"3624:7:56","nodeType":"VariableDeclaration","scope":12391,"src":"3616:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12345,"name":"uint256","nodeType":"ElementaryTypeName","src":"3616:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12348,"mutability":"mutable","name":"tokenContract","nameLocation":"3641:13:56","nodeType":"VariableDeclaration","scope":12391,"src":"3633:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12347,"name":"address","nodeType":"ElementaryTypeName","src":"3633:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12350,"mutability":"mutable","name":"tokenId","nameLocation":"3664:7:56","nodeType":"VariableDeclaration","scope":12391,"src":"3656:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12349,"name":"uint256","nodeType":"ElementaryTypeName","src":"3656:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12354,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12351,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3675:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_ERC6551Account_$12459","typeString":"contract ERC6551Account"}},"id":12352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3693:5:56","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":12283,"src":"3675:23:56","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view external returns (uint256,address,uint256)"}},"id":12353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3675:25:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3615:85:56"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12355,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12346,"src":"3715:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":12356,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3726:5:56","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":12357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3732:7:56","memberName":"chainid","nodeType":"MemberAccess","src":"3726:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3715:24:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12364,"nodeType":"IfStatement","src":"3711:46:56","trueBody":{"expression":{"arguments":[{"hexValue":"30","id":12361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3755:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3748:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":12359,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3748:6:56","typeDescriptions":{}}},"id":12362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3748:9:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":12344,"id":12363,"nodeType":"Return","src":"3741:16:56"}},{"assignments":[12366],"declarations":[{"constant":false,"id":12366,"mutability":"mutable","name":"owner","nameLocation":"3776:5:56","nodeType":"VariableDeclaration","scope":12391,"src":"3768:13:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12365,"name":"address","nodeType":"ElementaryTypeName","src":"3768:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12373,"initialValue":{"arguments":[{"id":12371,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12350,"src":"3815:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12368,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12348,"src":"3792:13:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12367,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6406,"src":"3784:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$6406_$","typeString":"type(contract IERC721)"}},"id":12369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3784:22:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$6406","typeString":"contract IERC721"}},"id":12370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3807:7:56","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":6339,"src":"3784:30:56","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":12372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3784:39:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3768:55:56"},{"condition":{"arguments":[{"id":12376,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12366,"src":"3875:5:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12377,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12338,"src":"3882:4:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12378,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12340,"src":"3888:9:56","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12374,"name":"SignatureChecker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8595,"src":"3838:16:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignatureChecker_$8595_$","typeString":"type(library SignatureChecker)"}},"id":12375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3855:19:56","memberName":"isValidSignatureNow","nodeType":"MemberAccess","referencedDeclaration":8542,"src":"3838:36:56","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes32,bytes memory) view returns (bool)"}},"id":12379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3838:60:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12385,"nodeType":"IfStatement","src":"3834:132:56","trueBody":{"id":12384,"nodeType":"Block","src":"3900:66:56","statements":[{"expression":{"expression":{"expression":{"id":12380,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"3921:8:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$3994_$","typeString":"type(contract IERC1271)"}},"id":12381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3930:16:56","memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":3993,"src":"3921:25:56","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function IERC1271.isValidSignature(bytes32,bytes memory) view returns (bytes4)"}},"id":12382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3947:8:56","memberName":"selector","nodeType":"MemberAccess","src":"3921:34:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":12344,"id":12383,"nodeType":"Return","src":"3914:41:56"}]}},{"expression":{"arguments":[{"hexValue":"30","id":12388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3990:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12387,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3983:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":12386,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3983:6:56","typeDescriptions":{}}},"id":12389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3983:9:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"functionReturnParameters":12344,"id":12390,"nodeType":"Return","src":"3976:16:56"}]},"documentation":{"id":12336,"nodeType":"StructuredDocumentation","src":"3406:66:56","text":" @dev Validates signatures according to ERC-1271"},"functionSelector":"1626ba7e","id":12392,"implemented":true,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"3486:16:56","nodeType":"FunctionDefinition","parameters":{"id":12341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12338,"mutability":"mutable","name":"hash","nameLocation":"3520:4:56","nodeType":"VariableDeclaration","scope":12392,"src":"3512:12:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12337,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3512:7:56","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12340,"mutability":"mutable","name":"signature","nameLocation":"3547:9:56","nodeType":"VariableDeclaration","scope":12392,"src":"3534:22:56","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12339,"name":"bytes","nodeType":"ElementaryTypeName","src":"3534:5:56","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3502:60:56"},"returnParameters":{"id":12344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12343,"mutability":"mutable","name":"magicValue","nameLocation":"3593:10:56","nodeType":"VariableDeclaration","scope":12392,"src":"3586:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":12342,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3586:6:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"3585:19:56"},"scope":12459,"src":"3477:522:56","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[8630],"body":{"id":12422,"nodeType":"Block","src":"4154:197:56","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":12405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12400,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12395,"src":"4172:11:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":12402,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8631,"src":"4192:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$8631_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$8631_$","typeString":"type(contract IERC165)"}],"id":12401,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4187:4:56","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4187:13:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$8631","typeString":"type(contract IERC165)"}},"id":12404,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4201:11:56","memberName":"interfaceId","nodeType":"MemberAccess","src":"4187:25:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4172:40:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":12411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12406,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12395,"src":"4228:11:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":12408,"name":"IERC6551Account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13429,"src":"4248:15:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC6551Account_$13429_$","typeString":"type(contract IERC6551Account)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC6551Account_$13429_$","typeString":"type(contract IERC6551Account)"}],"id":12407,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4243:4:56","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4243:21:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC6551Account_$13429","typeString":"type(contract IERC6551Account)"}},"id":12410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4265:11:56","memberName":"interfaceId","nodeType":"MemberAccess","src":"4243:33:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4228:48:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4172:104:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":12418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12413,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12395,"src":"4292:11:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":12415,"name":"IERC6551Executable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13447,"src":"4312:18:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC6551Executable_$13447_$","typeString":"type(contract IERC6551Executable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC6551Executable_$13447_$","typeString":"type(contract IERC6551Executable)"}],"id":12414,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4307:4:56","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":12416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4307:24:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC6551Executable_$13447","typeString":"type(contract IERC6551Executable)"}},"id":12417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4332:11:56","memberName":"interfaceId","nodeType":"MemberAccess","src":"4307:36:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"4292:51:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4172:171:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":12420,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4171:173:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12399,"id":12421,"nodeType":"Return","src":"4164:180:56"}]},"documentation":{"id":12393,"nodeType":"StructuredDocumentation","src":"4005:54:56","text":" @dev Implements interface detection"},"functionSelector":"01ffc9a7","id":12423,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"4073:17:56","nodeType":"FunctionDefinition","parameters":{"id":12396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12395,"mutability":"mutable","name":"interfaceId","nameLocation":"4107:11:56","nodeType":"VariableDeclaration","scope":12423,"src":"4100:18:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":12394,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4100:6:56","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4090:34:56"},"returnParameters":{"id":12399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12398,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12423,"src":"4148:4:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12397,"name":"bool","nodeType":"ElementaryTypeName","src":"4148:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4147:6:56"},"scope":12459,"src":"4064:287:56","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":12457,"nodeType":"Block","src":"4500:222:56","statements":[{"assignments":[12432,12434,12436],"declarations":[{"constant":false,"id":12432,"mutability":"mutable","name":"chainId","nameLocation":"4519:7:56","nodeType":"VariableDeclaration","scope":12457,"src":"4511:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12431,"name":"uint256","nodeType":"ElementaryTypeName","src":"4511:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12434,"mutability":"mutable","name":"tokenContract","nameLocation":"4536:13:56","nodeType":"VariableDeclaration","scope":12457,"src":"4528:21:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12433,"name":"address","nodeType":"ElementaryTypeName","src":"4528:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12436,"mutability":"mutable","name":"tokenId","nameLocation":"4559:7:56","nodeType":"VariableDeclaration","scope":12457,"src":"4551:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12435,"name":"uint256","nodeType":"ElementaryTypeName","src":"4551:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12440,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12437,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4570:4:56","typeDescriptions":{"typeIdentifier":"t_contract$_ERC6551Account_$12459","typeString":"contract ERC6551Account"}},"id":12438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4588:5:56","memberName":"token","nodeType":"MemberAccess","referencedDeclaration":12283,"src":"4570:23:56","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$_t_address_$_t_uint256_$","typeString":"function () view external returns (uint256,address,uint256)"}},"id":12439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4570:25:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$_t_uint256_$","typeString":"tuple(uint256,address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4510:85:56"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12441,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12432,"src":"4610:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":12442,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4621:5:56","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":12443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4627:7:56","memberName":"chainid","nodeType":"MemberAccess","src":"4621:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4610:24:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12447,"nodeType":"IfStatement","src":"4606:42:56","trueBody":{"expression":{"hexValue":"66616c7365","id":12445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4643:5:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":12430,"id":12446,"nodeType":"Return","src":"4636:12:56"}},{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12448,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12426,"src":"4666:6:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":12453,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12436,"src":"4707:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12450,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12434,"src":"4684:13:56","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12449,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6406,"src":"4676:7:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$6406_$","typeString":"type(contract IERC721)"}},"id":12451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4676:22:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$6406","typeString":"contract IERC721"}},"id":12452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4699:7:56","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":6339,"src":"4676:30:56","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":12454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4676:39:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4666:49:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12430,"id":12456,"nodeType":"Return","src":"4659:56:56"}]},"documentation":{"id":12424,"nodeType":"StructuredDocumentation","src":"4357:69:56","text":" @dev Internal helper to check if a signer is valid"},"id":12458,"implemented":true,"kind":"function","modifiers":[],"name":"_isValidSigner","nameLocation":"4440:14:56","nodeType":"FunctionDefinition","parameters":{"id":12427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12426,"mutability":"mutable","name":"signer","nameLocation":"4463:6:56","nodeType":"VariableDeclaration","scope":12458,"src":"4455:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12425,"name":"address","nodeType":"ElementaryTypeName","src":"4455:7:56","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4454:16:56"},"returnParameters":{"id":12430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12429,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12458,"src":"4494:4:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12428,"name":"bool","nodeType":"ElementaryTypeName","src":"4494:4:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4493:6:56"},"scope":12459,"src":"4431:291:56","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":12460,"src":"488:4236:56","usedErrors":[],"usedEvents":[]}],"src":"32:4693:56"},"id":56},"contracts/ERC6551Registry.sol":{"ast":{"absolutePath":"contracts/ERC6551Registry.sol","exportedSymbols":{"ERC6551Registry":[12730],"IERC6551AccountInitializable":[12522],"IERC6551Registry":[12512]},"id":12731,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":12461,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"32:23:57"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6551Registry","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":12512,"linearizedBaseContracts":[12512],"name":"IERC6551Registry","nameLocation":"67:16:57","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":12462,"nodeType":"StructuredDocumentation","src":"90:112:57","text":" @dev The registry MUST emit the ERC6551AccountCreated event upon successful account creation."},"eventSelector":"79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf88722","id":12476,"name":"ERC6551AccountCreated","nameLocation":"213:21:57","nodeType":"EventDefinition","parameters":{"id":12475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12464,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"252:7:57","nodeType":"VariableDeclaration","scope":12476,"src":"244:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12463,"name":"address","nodeType":"ElementaryTypeName","src":"244:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12466,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"285:14:57","nodeType":"VariableDeclaration","scope":12476,"src":"269:30:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12465,"name":"address","nodeType":"ElementaryTypeName","src":"269:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12468,"indexed":false,"mutability":"mutable","name":"salt","nameLocation":"317:4:57","nodeType":"VariableDeclaration","scope":12476,"src":"309:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12467,"name":"bytes32","nodeType":"ElementaryTypeName","src":"309:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12470,"indexed":false,"mutability":"mutable","name":"chainId","nameLocation":"339:7:57","nodeType":"VariableDeclaration","scope":12476,"src":"331:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12469,"name":"uint256","nodeType":"ElementaryTypeName","src":"331:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12472,"indexed":true,"mutability":"mutable","name":"tokenContract","nameLocation":"372:13:57","nodeType":"VariableDeclaration","scope":12476,"src":"356:29:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12471,"name":"address","nodeType":"ElementaryTypeName","src":"356:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12474,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"411:7:57","nodeType":"VariableDeclaration","scope":12476,"src":"395:23:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12473,"name":"uint256","nodeType":"ElementaryTypeName","src":"395:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"234:190:57"},"src":"207:218:57"},{"documentation":{"id":12477,"nodeType":"StructuredDocumentation","src":"431:113:57","text":" @dev The registry MUST revert with AccountCreationFailed error if the create2 operation fails."},"errorSelector":"20188a59","id":12479,"name":"AccountCreationFailed","nameLocation":"555:21:57","nodeType":"ErrorDefinition","parameters":{"id":12478,"nodeType":"ParameterList","parameters":[],"src":"576:2:57"},"src":"549:30:57"},{"documentation":{"id":12480,"nodeType":"StructuredDocumentation","src":"585:301:57","text":" @dev Creates a token bound account for a non-fungible token.\n If account has already been created, returns the account address without calling create2.\n Emits ERC6551AccountCreated event.\n @return account The address of the token bound account"},"functionSelector":"8a54c52f","id":12495,"implemented":false,"kind":"function","modifiers":[],"name":"createAccount","nameLocation":"900:13:57","nodeType":"FunctionDefinition","parameters":{"id":12491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12482,"mutability":"mutable","name":"implementation","nameLocation":"931:14:57","nodeType":"VariableDeclaration","scope":12495,"src":"923:22:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12481,"name":"address","nodeType":"ElementaryTypeName","src":"923:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12484,"mutability":"mutable","name":"salt","nameLocation":"963:4:57","nodeType":"VariableDeclaration","scope":12495,"src":"955:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12483,"name":"bytes32","nodeType":"ElementaryTypeName","src":"955:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12486,"mutability":"mutable","name":"chainId","nameLocation":"985:7:57","nodeType":"VariableDeclaration","scope":12495,"src":"977:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12485,"name":"uint256","nodeType":"ElementaryTypeName","src":"977:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12488,"mutability":"mutable","name":"tokenContract","nameLocation":"1010:13:57","nodeType":"VariableDeclaration","scope":12495,"src":"1002:21:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12487,"name":"address","nodeType":"ElementaryTypeName","src":"1002:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12490,"mutability":"mutable","name":"tokenId","nameLocation":"1041:7:57","nodeType":"VariableDeclaration","scope":12495,"src":"1033:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12489,"name":"uint256","nodeType":"ElementaryTypeName","src":"1033:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"913:141:57"},"returnParameters":{"id":12494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12493,"mutability":"mutable","name":"account","nameLocation":"1081:7:57","nodeType":"VariableDeclaration","scope":12495,"src":"1073:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12492,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1072:17:57"},"scope":12512,"src":"891:199:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":12496,"nodeType":"StructuredDocumentation","src":"1096:167:57","text":" @dev Returns the computed token bound account address for a non-fungible token.\n @return account The address of the token bound account"},"functionSelector":"246a0021","id":12511,"implemented":false,"kind":"function","modifiers":[],"name":"account","nameLocation":"1277:7:57","nodeType":"FunctionDefinition","parameters":{"id":12507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12498,"mutability":"mutable","name":"implementation","nameLocation":"1302:14:57","nodeType":"VariableDeclaration","scope":12511,"src":"1294:22:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12497,"name":"address","nodeType":"ElementaryTypeName","src":"1294:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12500,"mutability":"mutable","name":"salt","nameLocation":"1334:4:57","nodeType":"VariableDeclaration","scope":12511,"src":"1326:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12499,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1326:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12502,"mutability":"mutable","name":"chainId","nameLocation":"1356:7:57","nodeType":"VariableDeclaration","scope":12511,"src":"1348:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12501,"name":"uint256","nodeType":"ElementaryTypeName","src":"1348:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12504,"mutability":"mutable","name":"tokenContract","nameLocation":"1381:13:57","nodeType":"VariableDeclaration","scope":12511,"src":"1373:21:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12503,"name":"address","nodeType":"ElementaryTypeName","src":"1373:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12506,"mutability":"mutable","name":"tokenId","nameLocation":"1412:7:57","nodeType":"VariableDeclaration","scope":12511,"src":"1404:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12505,"name":"uint256","nodeType":"ElementaryTypeName","src":"1404:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1284:141:57"},"returnParameters":{"id":12510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12509,"mutability":"mutable","name":"account","nameLocation":"1457:7:57","nodeType":"VariableDeclaration","scope":12511,"src":"1449:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12508,"name":"address","nodeType":"ElementaryTypeName","src":"1449:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1448:17:57"},"scope":12512,"src":"1268:198:57","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":12731,"src":"57:1411:57","usedErrors":[12479],"usedEvents":[12476]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6551AccountInitializable","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":12522,"linearizedBaseContracts":[12522],"name":"IERC6551AccountInitializable","nameLocation":"1547:28:57","nodeType":"ContractDefinition","nodes":[{"functionSelector":"fffb5183","id":12521,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"1591:10:57","nodeType":"FunctionDefinition","parameters":{"id":12519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12514,"mutability":"mutable","name":"chainId","nameLocation":"1619:7:57","nodeType":"VariableDeclaration","scope":12521,"src":"1611:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12513,"name":"uint256","nodeType":"ElementaryTypeName","src":"1611:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12516,"mutability":"mutable","name":"tokenContract","nameLocation":"1644:13:57","nodeType":"VariableDeclaration","scope":12521,"src":"1636:21:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12515,"name":"address","nodeType":"ElementaryTypeName","src":"1636:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12518,"mutability":"mutable","name":"tokenId","nameLocation":"1675:7:57","nodeType":"VariableDeclaration","scope":12521,"src":"1667:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12517,"name":"uint256","nodeType":"ElementaryTypeName","src":"1667:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1601:87:57"},"returnParameters":{"id":12520,"nodeType":"ParameterList","parameters":[],"src":"1697:0:57"},"scope":12522,"src":"1582:116:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":12731,"src":"1537:163:57","usedErrors":[],"usedEvents":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":12523,"name":"IERC6551Registry","nameLocations":["1730:16:57"],"nodeType":"IdentifierPath","referencedDeclaration":12512,"src":"1730:16:57"},"id":12524,"nodeType":"InheritanceSpecifier","src":"1730:16:57"}],"canonicalName":"ERC6551Registry","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":12730,"linearizedBaseContracts":[12730,12512],"name":"ERC6551Registry","nameLocation":"1711:15:57","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[12495],"body":{"id":12608,"nodeType":"Block","src":"1999:1624:57","statements":[{"assignments":[12541],"declarations":[{"constant":false,"id":12541,"mutability":"mutable","name":"combinedSalt","nameLocation":"2056:12:57","nodeType":"VariableDeclaration","scope":12608,"src":"2048:20:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12540,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2048:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":12548,"initialValue":{"arguments":[{"id":12543,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12529,"src":"2101:4:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12544,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12531,"src":"2119:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12545,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12533,"src":"2140:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12546,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12535,"src":"2167:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12542,"name":"_getCombinedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12665,"src":"2071:16:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes32,uint256,address,uint256) pure returns (bytes32)"}},"id":12547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2071:113:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2048:136:57"},{"assignments":[12550],"declarations":[{"constant":false,"id":12550,"mutability":"mutable","name":"predictedAddress","nameLocation":"2202:16:57","nodeType":"VariableDeclaration","scope":12608,"src":"2194:24:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12549,"name":"address","nodeType":"ElementaryTypeName","src":"2194:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12555,"initialValue":{"arguments":[{"id":12552,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12527,"src":"2257:14:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12553,"name":"combinedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12541,"src":"2285:12:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":12551,"name":"_computeAccountAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12729,"src":"2221:22:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) view returns (address)"}},"id":12554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2221:86:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2194:113:57"},{"assignments":[12557],"declarations":[{"constant":false,"id":12557,"mutability":"mutable","name":"codeSize","nameLocation":"2373:8:57","nodeType":"VariableDeclaration","scope":12608,"src":"2365:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12556,"name":"uint256","nodeType":"ElementaryTypeName","src":"2365:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12558,"nodeType":"VariableDeclarationStatement","src":"2365:16:57"},{"AST":{"nativeSrc":"2400:65:57","nodeType":"YulBlock","src":"2400:65:57","statements":[{"nativeSrc":"2414:41:57","nodeType":"YulAssignment","src":"2414:41:57","value":{"arguments":[{"name":"predictedAddress","nativeSrc":"2438:16:57","nodeType":"YulIdentifier","src":"2438:16:57"}],"functionName":{"name":"extcodesize","nativeSrc":"2426:11:57","nodeType":"YulIdentifier","src":"2426:11:57"},"nativeSrc":"2426:29:57","nodeType":"YulFunctionCall","src":"2426:29:57"},"variableNames":[{"name":"codeSize","nativeSrc":"2414:8:57","nodeType":"YulIdentifier","src":"2414:8:57"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":12557,"isOffset":false,"isSlot":false,"src":"2414:8:57","valueSize":1},{"declaration":12550,"isOffset":false,"isSlot":false,"src":"2438:16:57","valueSize":1}],"id":12559,"nodeType":"InlineAssembly","src":"2391:74:57"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12560,"name":"codeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"2528:8:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2539:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2528:12:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12566,"nodeType":"IfStatement","src":"2524:66:57","trueBody":{"id":12565,"nodeType":"Block","src":"2542:48:57","statements":[{"expression":{"id":12563,"name":"predictedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12550,"src":"2563:16:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":12539,"id":12564,"nodeType":"Return","src":"2556:23:57"}]}},{"assignments":[12568],"declarations":[{"constant":false,"id":12568,"mutability":"mutable","name":"bytecode","nameLocation":"2668:8:57","nodeType":"VariableDeclaration","scope":12608,"src":"2655:21:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12567,"name":"bytes","nodeType":"ElementaryTypeName","src":"2655:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":12572,"initialValue":{"arguments":[{"id":12570,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12527,"src":"2700:14:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12569,"name":"_getCreationBytecode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12681,"src":"2679:20:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes_memory_ptr_$","typeString":"function (address) pure returns (bytes memory)"}},"id":12571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2679:36:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2655:60:57"},{"assignments":[12574],"declarations":[{"constant":false,"id":12574,"mutability":"mutable","name":"deployedAddress","nameLocation":"2733:15:57","nodeType":"VariableDeclaration","scope":12608,"src":"2725:23:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12573,"name":"address","nodeType":"ElementaryTypeName","src":"2725:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12575,"nodeType":"VariableDeclarationStatement","src":"2725:23:57"},{"AST":{"nativeSrc":"2768:247:57","nodeType":"YulBlock","src":"2768:247:57","statements":[{"nativeSrc":"2782:223:57","nodeType":"YulAssignment","src":"2782:223:57","value":{"arguments":[{"kind":"number","nativeSrc":"2826:1:57","nodeType":"YulLiteral","src":"2826:1:57","type":"","value":"0"},{"arguments":[{"name":"bytecode","nativeSrc":"2864:8:57","nodeType":"YulIdentifier","src":"2864:8:57"},{"kind":"number","nativeSrc":"2874:2:57","nodeType":"YulLiteral","src":"2874:2:57","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2860:3:57","nodeType":"YulIdentifier","src":"2860:3:57"},"nativeSrc":"2860:17:57","nodeType":"YulFunctionCall","src":"2860:17:57"},{"arguments":[{"name":"bytecode","nativeSrc":"2926:8:57","nodeType":"YulIdentifier","src":"2926:8:57"}],"functionName":{"name":"mload","nativeSrc":"2920:5:57","nodeType":"YulIdentifier","src":"2920:5:57"},"nativeSrc":"2920:15:57","nodeType":"YulFunctionCall","src":"2920:15:57"},{"name":"combinedSalt","nativeSrc":"2979:12:57","nodeType":"YulIdentifier","src":"2979:12:57"}],"functionName":{"name":"create2","nativeSrc":"2801:7:57","nodeType":"YulIdentifier","src":"2801:7:57"},"nativeSrc":"2801:204:57","nodeType":"YulFunctionCall","src":"2801:204:57"},"variableNames":[{"name":"deployedAddress","nativeSrc":"2782:15:57","nodeType":"YulIdentifier","src":"2782:15:57"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":12568,"isOffset":false,"isSlot":false,"src":"2864:8:57","valueSize":1},{"declaration":12568,"isOffset":false,"isSlot":false,"src":"2926:8:57","valueSize":1},{"declaration":12541,"isOffset":false,"isSlot":false,"src":"2979:12:57","valueSize":1},{"declaration":12574,"isOffset":false,"isSlot":false,"src":"2782:15:57","valueSize":1}],"id":12576,"nodeType":"InlineAssembly","src":"2759:256:57"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12577,"name":"deployedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12574,"src":"3075:15:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":12580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3102:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3094:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12578,"name":"address","nodeType":"ElementaryTypeName","src":"3094:7:57","typeDescriptions":{}}},"id":12581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3094:10:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3075:29:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12587,"nodeType":"IfStatement","src":"3071:90:57","trueBody":{"id":12586,"nodeType":"Block","src":"3106:55:57","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12583,"name":"AccountCreationFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12479,"src":"3127:21:57","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":12584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3127:23:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":12585,"nodeType":"RevertStatement","src":"3120:30:57"}]}},{"expression":{"arguments":[{"id":12592,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12531,"src":"3289:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12593,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12533,"src":"3310:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12594,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12535,"src":"3337:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12589,"name":"deployedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12574,"src":"3248:15:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12588,"name":"IERC6551AccountInitializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12522,"src":"3219:28:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC6551AccountInitializable_$12522_$","typeString":"type(contract IERC6551AccountInitializable)"}},"id":12590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3219:45:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC6551AccountInitializable_$12522","typeString":"contract IERC6551AccountInitializable"}},"id":12591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3265:10:57","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":12521,"src":"3219:56:57","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256) external"}},"id":12595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3219:135:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12596,"nodeType":"ExpressionStatement","src":"3219:135:57"},{"eventCall":{"arguments":[{"id":12598,"name":"deployedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12574,"src":"3443:15:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12599,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12527,"src":"3472:14:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12600,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12529,"src":"3500:4:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12601,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12531,"src":"3518:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12602,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12533,"src":"3539:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12603,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12535,"src":"3566:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12597,"name":"ERC6551AccountCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12476,"src":"3408:21:57","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,bytes32,uint256,address,uint256)"}},"id":12604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3408:175:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12605,"nodeType":"EmitStatement","src":"3403:180:57"},{"expression":{"id":12606,"name":"deployedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12574,"src":"3601:15:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":12539,"id":12607,"nodeType":"Return","src":"3594:22:57"}]},"documentation":{"id":12525,"nodeType":"StructuredDocumentation","src":"1753:50:57","text":" @dev Creates an ERC6551 account"},"functionSelector":"8a54c52f","id":12609,"implemented":true,"kind":"function","modifiers":[],"name":"createAccount","nameLocation":"1817:13:57","nodeType":"FunctionDefinition","parameters":{"id":12536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12527,"mutability":"mutable","name":"implementation","nameLocation":"1848:14:57","nodeType":"VariableDeclaration","scope":12609,"src":"1840:22:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12526,"name":"address","nodeType":"ElementaryTypeName","src":"1840:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12529,"mutability":"mutable","name":"salt","nameLocation":"1880:4:57","nodeType":"VariableDeclaration","scope":12609,"src":"1872:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12528,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1872:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12531,"mutability":"mutable","name":"chainId","nameLocation":"1902:7:57","nodeType":"VariableDeclaration","scope":12609,"src":"1894:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12530,"name":"uint256","nodeType":"ElementaryTypeName","src":"1894:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12533,"mutability":"mutable","name":"tokenContract","nameLocation":"1927:13:57","nodeType":"VariableDeclaration","scope":12609,"src":"1919:21:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12532,"name":"address","nodeType":"ElementaryTypeName","src":"1919:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12535,"mutability":"mutable","name":"tokenId","nameLocation":"1958:7:57","nodeType":"VariableDeclaration","scope":12609,"src":"1950:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12534,"name":"uint256","nodeType":"ElementaryTypeName","src":"1950:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1830:141:57"},"returnParameters":{"id":12539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12538,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12609,"src":"1990:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12537,"name":"address","nodeType":"ElementaryTypeName","src":"1990:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1989:9:57"},"scope":12730,"src":"1808:1815:57","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[12511],"body":{"id":12639,"nodeType":"Block","src":"3889:222:57","statements":[{"assignments":[12626],"declarations":[{"constant":false,"id":12626,"mutability":"mutable","name":"combinedSalt","nameLocation":"3907:12:57","nodeType":"VariableDeclaration","scope":12639,"src":"3899:20:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12625,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3899:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":12633,"initialValue":{"arguments":[{"id":12628,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12614,"src":"3952:4:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12629,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12616,"src":"3970:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12630,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12618,"src":"3991:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12631,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12620,"src":"4018:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12627,"name":"_getCombinedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12665,"src":"3922:16:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes32,uint256,address,uint256) pure returns (bytes32)"}},"id":12632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3922:113:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3899:136:57"},{"expression":{"arguments":[{"id":12635,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12612,"src":"4075:14:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12636,"name":"combinedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12626,"src":"4091:12:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":12634,"name":"_computeAccountAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12729,"src":"4052:22:57","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) view returns (address)"}},"id":12637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4052:52:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":12624,"id":12638,"nodeType":"Return","src":"4045:59:57"}]},"documentation":{"id":12610,"nodeType":"StructuredDocumentation","src":"3629:67:57","text":" @dev Returns the deterministic address for a TBA"},"functionSelector":"246a0021","id":12640,"implemented":true,"kind":"function","modifiers":[],"name":"account","nameLocation":"3710:7:57","nodeType":"FunctionDefinition","parameters":{"id":12621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12612,"mutability":"mutable","name":"implementation","nameLocation":"3735:14:57","nodeType":"VariableDeclaration","scope":12640,"src":"3727:22:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12611,"name":"address","nodeType":"ElementaryTypeName","src":"3727:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12614,"mutability":"mutable","name":"salt","nameLocation":"3767:4:57","nodeType":"VariableDeclaration","scope":12640,"src":"3759:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12613,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3759:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12616,"mutability":"mutable","name":"chainId","nameLocation":"3789:7:57","nodeType":"VariableDeclaration","scope":12640,"src":"3781:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12615,"name":"uint256","nodeType":"ElementaryTypeName","src":"3781:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12618,"mutability":"mutable","name":"tokenContract","nameLocation":"3814:13:57","nodeType":"VariableDeclaration","scope":12640,"src":"3806:21:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12617,"name":"address","nodeType":"ElementaryTypeName","src":"3806:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12620,"mutability":"mutable","name":"tokenId","nameLocation":"3845:7:57","nodeType":"VariableDeclaration","scope":12640,"src":"3837:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12619,"name":"uint256","nodeType":"ElementaryTypeName","src":"3837:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3717:141:57"},"returnParameters":{"id":12624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12623,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12640,"src":"3880:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12622,"name":"address","nodeType":"ElementaryTypeName","src":"3880:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3879:9:57"},"scope":12730,"src":"3701:410:57","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":12664,"nodeType":"Block","src":"4355:84:57","statements":[{"expression":{"arguments":[{"arguments":[{"id":12657,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12643,"src":"4393:4:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12658,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12645,"src":"4399:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12659,"name":"tokenContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12647,"src":"4408:13:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12660,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12649,"src":"4423:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12655,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4382:3:57","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4386:6:57","memberName":"encode","nodeType":"MemberAccess","src":"4382:10:57","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4382:49:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12654,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4372:9:57","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":12662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4372:60:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":12653,"id":12663,"nodeType":"Return","src":"4365:67:57"}]},"documentation":{"id":12641,"nodeType":"StructuredDocumentation","src":"4117:66:57","text":" @dev Combines all parameters into a single salt"},"id":12665,"implemented":true,"kind":"function","modifiers":[],"name":"_getCombinedSalt","nameLocation":"4197:16:57","nodeType":"FunctionDefinition","parameters":{"id":12650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12643,"mutability":"mutable","name":"salt","nameLocation":"4231:4:57","nodeType":"VariableDeclaration","scope":12665,"src":"4223:12:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12642,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4223:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12645,"mutability":"mutable","name":"chainId","nameLocation":"4253:7:57","nodeType":"VariableDeclaration","scope":12665,"src":"4245:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12644,"name":"uint256","nodeType":"ElementaryTypeName","src":"4245:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12647,"mutability":"mutable","name":"tokenContract","nameLocation":"4278:13:57","nodeType":"VariableDeclaration","scope":12665,"src":"4270:21:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12646,"name":"address","nodeType":"ElementaryTypeName","src":"4270:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12649,"mutability":"mutable","name":"tokenId","nameLocation":"4309:7:57","nodeType":"VariableDeclaration","scope":12665,"src":"4301:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12648,"name":"uint256","nodeType":"ElementaryTypeName","src":"4301:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4213:109:57"},"returnParameters":{"id":12653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12652,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12665,"src":"4346:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12651,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4346:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4345:9:57"},"scope":12730,"src":"4188:251:57","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12680,"nodeType":"Block","src":"4628:265:57","statements":[{"expression":{"arguments":[{"hexValue":"3d602d80600a3d3981f3363d3d373d3d3d363d73","id":12675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"4742:45:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_72307939328b75c6e301a012c75e0a4e690a99036b95f6e6f4f1b5aba02a9ce4","typeString":"literal_string hex\"3d602d80600a3d3981f3363d3d373d3d3d363d73\""}},{"id":12676,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12668,"src":"4805:14:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"5af43d82803e903d91602b57fd5bf3","id":12677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"4837:35:57","typeDescriptions":{"typeIdentifier":"t_stringliteral_11a195f66c9175f46895bae2006d40848a680c7068b9fc4af248ff9a54a47e45","typeString":"literal_string hex\"5af43d82803e903d91602b57fd5bf3\""}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_72307939328b75c6e301a012c75e0a4e690a99036b95f6e6f4f1b5aba02a9ce4","typeString":"literal_string hex\"3d602d80600a3d3981f3363d3d373d3d3d363d73\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_stringliteral_11a195f66c9175f46895bae2006d40848a680c7068b9fc4af248ff9a54a47e45","typeString":"literal_string hex\"5af43d82803e903d91602b57fd5bf3\""}],"expression":{"id":12673,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4657:3:57","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4661:12:57","memberName":"encodePacked","nodeType":"MemberAccess","src":"4657:16:57","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4657:229:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12672,"id":12679,"nodeType":"Return","src":"4638:248:57"}]},"documentation":{"id":12666,"nodeType":"StructuredDocumentation","src":"4445:73:57","text":" @dev Returns the creation bytecode for a minimal proxy"},"id":12681,"implemented":true,"kind":"function","modifiers":[],"name":"_getCreationBytecode","nameLocation":"4532:20:57","nodeType":"FunctionDefinition","parameters":{"id":12669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12668,"mutability":"mutable","name":"implementation","nameLocation":"4570:14:57","nodeType":"VariableDeclaration","scope":12681,"src":"4562:22:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12667,"name":"address","nodeType":"ElementaryTypeName","src":"4562:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4552:38:57"},"returnParameters":{"id":12672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12681,"src":"4614:12:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12670,"name":"bytes","nodeType":"ElementaryTypeName","src":"4614:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4613:14:57"},"scope":12730,"src":"4523:370:57","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12728,"nodeType":"Block","src":"5102:597:57","statements":[{"assignments":[12692],"declarations":[{"constant":false,"id":12692,"mutability":"mutable","name":"bytecode","nameLocation":"5125:8:57","nodeType":"VariableDeclaration","scope":12728,"src":"5112:21:57","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12691,"name":"bytes","nodeType":"ElementaryTypeName","src":"5112:5:57","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":12696,"initialValue":{"arguments":[{"id":12694,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12684,"src":"5157:14:57","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12693,"name":"_getCreationBytecode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12681,"src":"5136:20:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes_memory_ptr_$","typeString":"function (address) pure returns (bytes memory)"}},"id":12695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5136:36:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5112:60:57"},{"assignments":[12698],"declarations":[{"constant":false,"id":12698,"mutability":"mutable","name":"bytecodeHash","nameLocation":"5191:12:57","nodeType":"VariableDeclaration","scope":12728,"src":"5183:20:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12697,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5183:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":12702,"initialValue":{"arguments":[{"id":12700,"name":"bytecode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12692,"src":"5216:8:57","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12699,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5206:9:57","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":12701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5206:19:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5183:42:57"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30786666","id":12714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5438:4:57","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"}],"id":12713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5431:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":12712,"name":"bytes1","nodeType":"ElementaryTypeName","src":"5431:6:57","typeDescriptions":{}}},"id":12715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5431:12:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"arguments":[{"id":12718,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5485:4:57","typeDescriptions":{"typeIdentifier":"t_contract$_ERC6551Registry_$12730","typeString":"contract ERC6551Registry"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC6551Registry_$12730","typeString":"contract ERC6551Registry"}],"id":12717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5477:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12716,"name":"address","nodeType":"ElementaryTypeName","src":"5477:7:57","typeDescriptions":{}}},"id":12719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5477:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12720,"name":"combinedSalt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12686,"src":"5524:12:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12721,"name":"bytecodeHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12698,"src":"5570:12:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":12710,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5381:3:57","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5385:12:57","memberName":"encodePacked","nodeType":"MemberAccess","src":"5381:16:57","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5381:231:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":12709,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5342:9:57","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":12723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5342:296:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":12708,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5309:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12707,"name":"uint256","nodeType":"ElementaryTypeName","src":"5309:7:57","typeDescriptions":{}}},"id":12724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5309:351:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12706,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5280:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":12705,"name":"uint160","nodeType":"ElementaryTypeName","src":"5280:7:57","typeDescriptions":{}}},"id":12725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5280:398:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":12704,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5255:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12703,"name":"address","nodeType":"ElementaryTypeName","src":"5255:7:57","typeDescriptions":{}}},"id":12726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5255:437:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":12690,"id":12727,"nodeType":"Return","src":"5236:456:57"}]},"documentation":{"id":12682,"nodeType":"StructuredDocumentation","src":"4899:66:57","text":" @dev Computes the account address using CREATE2"},"id":12729,"implemented":true,"kind":"function","modifiers":[],"name":"_computeAccountAddress","nameLocation":"4979:22:57","nodeType":"FunctionDefinition","parameters":{"id":12687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12684,"mutability":"mutable","name":"implementation","nameLocation":"5019:14:57","nodeType":"VariableDeclaration","scope":12729,"src":"5011:22:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12683,"name":"address","nodeType":"ElementaryTypeName","src":"5011:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12686,"mutability":"mutable","name":"combinedSalt","nameLocation":"5051:12:57","nodeType":"VariableDeclaration","scope":12729,"src":"5043:20:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12685,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5043:7:57","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5001:68:57"},"returnParameters":{"id":12690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12689,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12729,"src":"5093:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12688,"name":"address","nodeType":"ElementaryTypeName","src":"5093:7:57","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5092:9:57"},"scope":12730,"src":"4970:729:57","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":12731,"src":"1702:3999:57","usedErrors":[12479],"usedEvents":[12476]}],"src":"32:5670:57"},"id":57},"contracts/IPNFT.sol":{"ast":{"absolutePath":"contracts/IPNFT.sol","exportedSymbols":{"Context":[6685],"ERC165":[8619],"ERC721":[6289],"ERC721URIStorage":[6550],"ERC721Utils":[6655],"IERC165":[8631],"IERC4906":[4108],"IERC721":[6406],"IERC721Errors":[4202],"IERC721Metadata":[6578],"IPNFT":[13028],"Ownable":[3980],"Strings":[8139]},"id":13029,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":12732,"literals":["solidity","^","0.8",".28"],"nodeType":"PragmaDirective","src":"32:24:58"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","file":"@openzeppelin/contracts/token/ERC721/ERC721.sol","id":12733,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13029,"sourceUnit":6290,"src":"58:57:58","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol","file":"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol","id":12734,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13029,"sourceUnit":6551,"src":"116:78:58","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":12735,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13029,"sourceUnit":3981,"src":"195:52:58","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":12737,"name":"ERC721URIStorage","nameLocations":["369:16:58"],"nodeType":"IdentifierPath","referencedDeclaration":6550,"src":"369:16:58"},"id":12738,"nodeType":"InheritanceSpecifier","src":"369:16:58"},{"baseName":{"id":12739,"name":"Ownable","nameLocations":["387:7:58"],"nodeType":"IdentifierPath","referencedDeclaration":3980,"src":"387:7:58"},"id":12740,"nodeType":"InheritanceSpecifier","src":"387:7:58"}],"canonicalName":"IPNFT","contractDependencies":[],"contractKind":"contract","documentation":{"id":12736,"nodeType":"StructuredDocumentation","src":"249:101:58","text":" @title IPNFT\n @dev This contract is used to create and manage intellectual property NFTs"},"fullyImplemented":true,"id":13028,"linearizedBaseContracts":[13028,3980,6550,6289,4202,6578,4108,6406,8619,8631,6685],"name":"IPNFT","nameLocation":"360:5:58","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":12742,"mutability":"mutable","name":"_nextTokenId","nameLocation":"441:12:58","nodeType":"VariableDeclaration","scope":13028,"src":"425:28:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12741,"name":"uint256","nodeType":"ElementaryTypeName","src":"425:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"canonicalName":"IPNFT.IPType","id":12747,"members":[{"id":12743,"name":"Patent","nameLocation":"517:6:58","nodeType":"EnumValue","src":"517:6:58"},{"id":12744,"name":"Trademark","nameLocation":"533:9:58","nodeType":"EnumValue","src":"533:9:58"},{"id":12745,"name":"Copyright","nameLocation":"552:9:58","nodeType":"EnumValue","src":"552:9:58"},{"id":12746,"name":"Other","nameLocation":"571:5:58","nodeType":"EnumValue","src":"571:5:58"}],"name":"IPType","nameLocation":"500:6:58","nodeType":"EnumDefinition","src":"495:87:58"},{"canonicalName":"IPNFT.IPInfo","id":12757,"members":[{"constant":false,"id":12749,"mutability":"mutable","name":"title","nameLocation":"664:5:58","nodeType":"VariableDeclaration","scope":12757,"src":"657:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12748,"name":"string","nodeType":"ElementaryTypeName","src":"657:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12751,"mutability":"mutable","name":"description","nameLocation":"698:11:58","nodeType":"VariableDeclaration","scope":12757,"src":"691:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":12750,"name":"string","nodeType":"ElementaryTypeName","src":"691:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12754,"mutability":"mutable","name":"ipType","nameLocation":"744:6:58","nodeType":"VariableDeclaration","scope":12757,"src":"737:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_IPType_$12747","typeString":"enum IPNFT.IPType"},"typeName":{"id":12753,"nodeType":"UserDefinedTypeName","pathNode":{"id":12752,"name":"IPType","nameLocations":["737:6:58"],"nodeType":"IdentifierPath","referencedDeclaration":12747,"src":"737:6:58"},"referencedDeclaration":12747,"src":"737:6:58","typeDescriptions":{"typeIdentifier":"t_enum$_IPType_$12747","typeString":"enum IPNFT.IPType"}},"visibility":"internal"},{"constant":false,"id":12756,"mutability":"mutable","name":"createdAt","nameLocation":"779:9:58","nodeType":"VariableDeclaration","scope":12757,"src":"771:17:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12755,"name":"uint256","nodeType":"ElementaryTypeName","src":"771:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"IPInfo","nameLocation":"640:6:58","nodeType":"StructDefinition","scope":13028,"src":"633:184:58","visibility":"public"},{"constant":false,"id":12762,"mutability":"mutable","name":"_ipInfo","nameLocation":"898:7:58","nodeType":"VariableDeclaration","scope":13028,"src":"863:42:58","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_IPInfo_$12757_storage_$","typeString":"mapping(uint256 => struct IPNFT.IPInfo)"},"typeName":{"id":12761,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12758,"name":"uint256","nodeType":"ElementaryTypeName","src":"871:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"863:26:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_IPInfo_$12757_storage_$","typeString":"mapping(uint256 => struct IPNFT.IPInfo)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12760,"nodeType":"UserDefinedTypeName","pathNode":{"id":12759,"name":"IPInfo","nameLocations":["882:6:58"],"nodeType":"IdentifierPath","referencedDeclaration":12757,"src":"882:6:58"},"referencedDeclaration":12757,"src":"882:6:58","typeDescriptions":{"typeIdentifier":"t_struct$_IPInfo_$12757_storage_ptr","typeString":"struct IPNFT.IPInfo"}}},"visibility":"private"},{"anonymous":false,"eventSelector":"a11168e0b0496738928286f747e505f139d6440da347cb53c2508178dcc2419b","id":12773,"name":"IPNFTMinted","nameLocation":"932:11:58","nodeType":"EventDefinition","parameters":{"id":12772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12764,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"969:7:58","nodeType":"VariableDeclaration","scope":12773,"src":"953:23:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12763,"name":"uint256","nodeType":"ElementaryTypeName","src":"953:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12766,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"1002:5:58","nodeType":"VariableDeclaration","scope":12773,"src":"986:21:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12765,"name":"address","nodeType":"ElementaryTypeName","src":"986:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12769,"indexed":false,"mutability":"mutable","name":"ipType","nameLocation":"1024:6:58","nodeType":"VariableDeclaration","scope":12773,"src":"1017:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_IPType_$12747","typeString":"enum IPNFT.IPType"},"typeName":{"id":12768,"nodeType":"UserDefinedTypeName","pathNode":{"id":12767,"name":"IPType","nameLocations":["1017:6:58"],"nodeType":"IdentifierPath","referencedDeclaration":12747,"src":"1017:6:58"},"referencedDeclaration":12747,"src":"1017:6:58","typeDescriptions":{"typeIdentifier":"t_enum$_IPType_$12747","typeString":"enum IPNFT.IPType"}},"visibility":"internal"},{"constant":false,"id":12771,"indexed":false,"mutability":"mutable","name":"title","nameLocation":"1047:5:58","nodeType":"VariableDeclaration","scope":12773,"src":"1040:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12770,"name":"string","nodeType":"ElementaryTypeName","src":"1040:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"943:115:58"},"src":"926:133:58"},{"body":{"id":12785,"nodeType":"Block","src":"1180:2:58","statements":[]},"id":12786,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"496e74656c6c65637475616c2050726f7065727479204e4654","id":12778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1120:27:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb61645cb48d870e10987516538d04162f29ed150c68b50d8d2b2cad563a427d","typeString":"literal_string \"Intellectual Property NFT\""},"value":"Intellectual Property NFT"},{"hexValue":"49504e4654","id":12779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1149:7:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_05215e5c692cb700541a43cabc68b775db974e00666cb2489d40e438f4909ab8","typeString":"literal_string \"IPNFT\""},"value":"IPNFT"}],"id":12780,"kind":"baseConstructorSpecifier","modifierName":{"id":12777,"name":"ERC721","nameLocations":["1113:6:58"],"nodeType":"IdentifierPath","referencedDeclaration":6289,"src":"1113:6:58"},"nodeType":"ModifierInvocation","src":"1113:44:58"},{"arguments":[{"id":12782,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12775,"src":"1166:12:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":12783,"kind":"baseConstructorSpecifier","modifierName":{"id":12781,"name":"Ownable","nameLocations":["1158:7:58"],"nodeType":"IdentifierPath","referencedDeclaration":3980,"src":"1158:7:58"},"nodeType":"ModifierInvocation","src":"1158:21:58"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":12776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12775,"mutability":"mutable","name":"initialOwner","nameLocation":"1094:12:58","nodeType":"VariableDeclaration","scope":12786,"src":"1086:20:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12774,"name":"address","nodeType":"ElementaryTypeName","src":"1086:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1076:36:58"},"returnParameters":{"id":12784,"nodeType":"ParameterList","parameters":[],"src":"1180:0:58"},"scope":13028,"src":"1065:117:58","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12843,"nodeType":"Block","src":"1687:430:58","statements":[{"assignments":[12806],"declarations":[{"constant":false,"id":12806,"mutability":"mutable","name":"tokenId","nameLocation":"1705:7:58","nodeType":"VariableDeclaration","scope":12843,"src":"1697:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12805,"name":"uint256","nodeType":"ElementaryTypeName","src":"1697:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12808,"initialValue":{"id":12807,"name":"_nextTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12742,"src":"1715:12:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1697:30:58"},{"expression":{"id":12810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1737:14:58","subExpression":{"id":12809,"name":"_nextTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12742,"src":"1737:12:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12811,"nodeType":"ExpressionStatement","src":"1737:14:58"},{"expression":{"arguments":[{"id":12813,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12789,"src":"1772:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12814,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12806,"src":"1776:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12812,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[5967,5997],"referencedDeclaration":5967,"src":"1762:9:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":12815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1762:22:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12816,"nodeType":"ExpressionStatement","src":"1762:22:58"},{"expression":{"arguments":[{"id":12818,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12806,"src":"1807:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12819,"name":"uri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12791,"src":"1816:3:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12817,"name":"_setTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6549,"src":"1794:12:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":12820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1794:26:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12821,"nodeType":"ExpressionStatement","src":"1794:26:58"},{"expression":{"id":12832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12822,"name":"_ipInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12762,"src":"1861:7:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_IPInfo_$12757_storage_$","typeString":"mapping(uint256 => struct IPNFT.IPInfo storage ref)"}},"id":12824,"indexExpression":{"id":12823,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12806,"src":"1869:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1861:16:58","typeDescriptions":{"typeIdentifier":"t_struct$_IPInfo_$12757_storage","typeString":"struct IPNFT.IPInfo storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12826,"name":"title","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12793,"src":"1908:5:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12827,"name":"description","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12795,"src":"1940:11:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":12828,"name":"ipType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12798,"src":"1973:6:58","typeDescriptions":{"typeIdentifier":"t_enum$_IPType_$12747","typeString":"enum IPNFT.IPType"}},{"expression":{"id":12829,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2004:5:58","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":12830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2010:9:58","memberName":"timestamp","nodeType":"MemberAccess","src":"2004:15:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_enum$_IPType_$12747","typeString":"enum IPNFT.IPType"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12825,"name":"IPInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12757,"src":"1880:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_IPInfo_$12757_storage_ptr_$","typeString":"type(struct IPNFT.IPInfo storage pointer)"}},"id":12831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["1901:5:58","1927:11:58","1965:6:58","1993:9:58"],"names":["title","description","ipType","createdAt"],"nodeType":"FunctionCall","src":"1880:150:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_IPInfo_$12757_memory_ptr","typeString":"struct IPNFT.IPInfo memory"}},"src":"1861:169:58","typeDescriptions":{"typeIdentifier":"t_struct$_IPInfo_$12757_storage","typeString":"struct IPNFT.IPInfo storage ref"}},"id":12833,"nodeType":"ExpressionStatement","src":"1861:169:58"},{"eventCall":{"arguments":[{"id":12835,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12806,"src":"2058:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12836,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12789,"src":"2067:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12837,"name":"ipType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12798,"src":"2071:6:58","typeDescriptions":{"typeIdentifier":"t_enum$_IPType_$12747","typeString":"enum IPNFT.IPType"}},{"id":12838,"name":"title","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12793,"src":"2079:5:58","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_IPType_$12747","typeString":"enum IPNFT.IPType"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":12834,"name":"IPNFTMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12773,"src":"2046:11:58","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_enum$_IPType_$12747_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,address,enum IPNFT.IPType,string memory)"}},"id":12839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2046:39:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12840,"nodeType":"EmitStatement","src":"2041:44:58"},{"expression":{"id":12841,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12806,"src":"2103:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12804,"id":12842,"nodeType":"Return","src":"2096:14:58"}]},"documentation":{"id":12787,"nodeType":"StructuredDocumentation","src":"1188:305:58","text":" @dev Mints a new intellectual property NFT\n @param to The receiver address of the token\n @param uri The token metadata URI\n @param title The IP title\n @param description The IP description\n @param ipType The IP type\n @return The newly minted token ID"},"functionSelector":"979f5292","id":12844,"implemented":true,"kind":"function","modifiers":[{"id":12801,"kind":"modifierInvocation","modifierName":{"id":12800,"name":"onlyOwner","nameLocations":["1659:9:58"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"1659:9:58"},"nodeType":"ModifierInvocation","src":"1659:9:58"}],"name":"mint","nameLocation":"1507:4:58","nodeType":"FunctionDefinition","parameters":{"id":12799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12789,"mutability":"mutable","name":"to","nameLocation":"1529:2:58","nodeType":"VariableDeclaration","scope":12844,"src":"1521:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12788,"name":"address","nodeType":"ElementaryTypeName","src":"1521:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12791,"mutability":"mutable","name":"uri","nameLocation":"1555:3:58","nodeType":"VariableDeclaration","scope":12844,"src":"1541:17:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12790,"name":"string","nodeType":"ElementaryTypeName","src":"1541:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12793,"mutability":"mutable","name":"title","nameLocation":"1582:5:58","nodeType":"VariableDeclaration","scope":12844,"src":"1568:19:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12792,"name":"string","nodeType":"ElementaryTypeName","src":"1568:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12795,"mutability":"mutable","name":"description","nameLocation":"1611:11:58","nodeType":"VariableDeclaration","scope":12844,"src":"1597:25:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":12794,"name":"string","nodeType":"ElementaryTypeName","src":"1597:6:58","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12798,"mutability":"mutable","name":"ipType","nameLocation":"1639:6:58","nodeType":"VariableDeclaration","scope":12844,"src":"1632:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_IPType_$12747","typeString":"enum IPNFT.IPType"},"typeName":{"id":12797,"nodeType":"UserDefinedTypeName","pathNode":{"id":12796,"name":"IPType","nameLocations":["1632:6:58"],"nodeType":"IdentifierPath","referencedDeclaration":12747,"src":"1632:6:58"},"referencedDeclaration":12747,"src":"1632:6:58","typeDescriptions":{"typeIdentifier":"t_enum$_IPType_$12747","typeString":"enum IPNFT.IPType"}},"visibility":"internal"}],"src":"1511:140:58"},"returnParameters":{"id":12804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12803,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12844,"src":"1678:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12802,"name":"uint256","nodeType":"ElementaryTypeName","src":"1678:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1677:9:58"},"scope":13028,"src":"1498:619:58","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":12864,"nodeType":"Block","src":"2297:106:58","statements":[{"expression":{"arguments":[{"arguments":[{"id":12855,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12847,"src":"2323:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12854,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13003,"src":"2315:7:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":12856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2315:16:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"49504e46543a20746f6b656e20646f6573206e6f74206578697374","id":12857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2333:29:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_10de41d09c4ac47b36ce55dc8332112954fd07dfed42e96d8fd589ebdddfe212","typeString":"literal_string \"IPNFT: token does not exist\""},"value":"IPNFT: token does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_10de41d09c4ac47b36ce55dc8332112954fd07dfed42e96d8fd589ebdddfe212","typeString":"literal_string \"IPNFT: token does not exist\""}],"id":12853,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"2307:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2307:56:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12859,"nodeType":"ExpressionStatement","src":"2307:56:58"},{"expression":{"baseExpression":{"id":12860,"name":"_ipInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12762,"src":"2380:7:58","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_IPInfo_$12757_storage_$","typeString":"mapping(uint256 => struct IPNFT.IPInfo storage ref)"}},"id":12862,"indexExpression":{"id":12861,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12847,"src":"2388:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2380:16:58","typeDescriptions":{"typeIdentifier":"t_struct$_IPInfo_$12757_storage","typeString":"struct IPNFT.IPInfo storage ref"}},"functionReturnParameters":12852,"id":12863,"nodeType":"Return","src":"2373:23:58"}]},"documentation":{"id":12845,"nodeType":"StructuredDocumentation","src":"2123:97:58","text":" @dev Gets the intellectual property information\n @param tokenId Token ID"},"functionSelector":"4effbf20","id":12865,"implemented":true,"kind":"function","modifiers":[],"name":"getIPInfo","nameLocation":"2234:9:58","nodeType":"FunctionDefinition","parameters":{"id":12848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12847,"mutability":"mutable","name":"tokenId","nameLocation":"2252:7:58","nodeType":"VariableDeclaration","scope":12865,"src":"2244:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12846,"name":"uint256","nodeType":"ElementaryTypeName","src":"2244:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2243:17:58"},"returnParameters":{"id":12852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12865,"src":"2282:13:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_IPInfo_$12757_memory_ptr","typeString":"struct IPNFT.IPInfo"},"typeName":{"id":12850,"nodeType":"UserDefinedTypeName","pathNode":{"id":12849,"name":"IPInfo","nameLocations":["2282:6:58"],"nodeType":"IdentifierPath","referencedDeclaration":12757,"src":"2282:6:58"},"referencedDeclaration":12757,"src":"2282:6:58","typeDescriptions":{"typeIdentifier":"t_struct$_IPInfo_$12757_storage_ptr","typeString":"struct IPNFT.IPInfo"}},"visibility":"internal"}],"src":"2281:15:58"},"scope":13028,"src":"2225:178:58","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":12873,"nodeType":"Block","src":"2527:36:58","statements":[{"expression":{"id":12871,"name":"_nextTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12742,"src":"2544:12:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12870,"id":12872,"nodeType":"Return","src":"2537:19:58"}]},"documentation":{"id":12866,"nodeType":"StructuredDocumentation","src":"2409:60:58","text":" @dev Gets the total number of minted NFTs"},"functionSelector":"18160ddd","id":12874,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2483:11:58","nodeType":"FunctionDefinition","parameters":{"id":12867,"nodeType":"ParameterList","parameters":[],"src":"2494:2:58"},"returnParameters":{"id":12870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12869,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12874,"src":"2518:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12868,"name":"uint256","nodeType":"ElementaryTypeName","src":"2518:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2517:9:58"},"scope":13028,"src":"2474:89:58","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":12923,"nodeType":"Block","src":"2770:262:58","statements":[{"assignments":[12884],"declarations":[{"constant":false,"id":12884,"mutability":"mutable","name":"tokenCount","nameLocation":"2788:10:58","nodeType":"VariableDeclaration","scope":12923,"src":"2780:18:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12883,"name":"uint256","nodeType":"ElementaryTypeName","src":"2780:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12888,"initialValue":{"arguments":[{"id":12886,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12877,"src":"2811:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12885,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5461,"src":"2801:9:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":12887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2801:16:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2780:37:58"},{"assignments":[12893],"declarations":[{"constant":false,"id":12893,"mutability":"mutable","name":"tokenIds","nameLocation":"2844:8:58","nodeType":"VariableDeclaration","scope":12923,"src":"2827:25:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12891,"name":"uint256","nodeType":"ElementaryTypeName","src":"2827:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12892,"nodeType":"ArrayTypeName","src":"2827:9:58","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":12899,"initialValue":{"arguments":[{"id":12897,"name":"tokenCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12884,"src":"2869:10:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12896,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2855:13:58","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":12894,"name":"uint256","nodeType":"ElementaryTypeName","src":"2859:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12895,"nodeType":"ArrayTypeName","src":"2859:9:58","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":12898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:25:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2827:53:58"},{"body":{"id":12919,"nodeType":"Block","src":"2932:68:58","statements":[{"expression":{"id":12917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":12910,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12893,"src":"2946:8:58","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":12912,"indexExpression":{"id":12911,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12901,"src":"2955:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2946:11:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12914,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12877,"src":"2980:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12915,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12901,"src":"2987:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12913,"name":"tokenOfOwnerByIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12985,"src":"2960:19:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":12916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2960:29:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2946:43:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12918,"nodeType":"ExpressionStatement","src":"2946:43:58"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12904,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12901,"src":"2911:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12905,"name":"tokenCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12884,"src":"2915:10:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2911:14:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12920,"initializationExpression":{"assignments":[12901],"declarations":[{"constant":false,"id":12901,"mutability":"mutable","name":"i","nameLocation":"2904:1:58","nodeType":"VariableDeclaration","scope":12920,"src":"2896:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12900,"name":"uint256","nodeType":"ElementaryTypeName","src":"2896:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12903,"initialValue":{"hexValue":"30","id":12902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2908:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2896:13:58"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":12908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2927:3:58","subExpression":{"id":12907,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12901,"src":"2927:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12909,"nodeType":"ExpressionStatement","src":"2927:3:58"},"nodeType":"ForStatement","src":"2891:109:58"},{"expression":{"id":12921,"name":"tokenIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12893,"src":"3017:8:58","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":12882,"id":12922,"nodeType":"Return","src":"3010:15:58"}]},"documentation":{"id":12875,"nodeType":"StructuredDocumentation","src":"2569:105:58","text":" @dev Gets all tokens owned by a specific address\n @param owner The owner address"},"functionSelector":"8462151c","id":12924,"implemented":true,"kind":"function","modifiers":[],"name":"tokensOfOwner","nameLocation":"2688:13:58","nodeType":"FunctionDefinition","parameters":{"id":12878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12877,"mutability":"mutable","name":"owner","nameLocation":"2719:5:58","nodeType":"VariableDeclaration","scope":12924,"src":"2711:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12876,"name":"address","nodeType":"ElementaryTypeName","src":"2711:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2701:29:58"},"returnParameters":{"id":12882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12881,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12924,"src":"2752:16:58","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12879,"name":"uint256","nodeType":"ElementaryTypeName","src":"2752:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12880,"nodeType":"ArrayTypeName","src":"2752:9:58","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2751:18:58"},"scope":13028,"src":"2679:353:58","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":12984,"nodeType":"Block","src":"3334:396:58","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12935,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12929,"src":"3352:5:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[{"id":12937,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12927,"src":"3370:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12936,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5461,"src":"3360:9:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":12938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3360:16:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3352:24:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"49504e46543a20696e646578206f7574206f6620626f756e6473","id":12940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3378:28:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_9733be426b13e9a9d956b569fa7cbe74e4c1780e75f1f56e803452958eccf8dd","typeString":"literal_string \"IPNFT: index out of bounds\""},"value":"IPNFT: index out of bounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9733be426b13e9a9d956b569fa7cbe74e4c1780e75f1f56e803452958eccf8dd","typeString":"literal_string \"IPNFT: index out of bounds\""}],"id":12934,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3344:7:58","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3344:63:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12942,"nodeType":"ExpressionStatement","src":"3344:63:58"},{"assignments":[12944],"declarations":[{"constant":false,"id":12944,"mutability":"mutable","name":"count","nameLocation":"3426:5:58","nodeType":"VariableDeclaration","scope":12984,"src":"3418:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12943,"name":"uint256","nodeType":"ElementaryTypeName","src":"3418:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12946,"initialValue":{"hexValue":"30","id":12945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3434:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3418:17:58"},{"body":{"id":12978,"nodeType":"Block","src":"3488:189:58","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12958,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12948,"src":"3514:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12957,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13003,"src":"3506:7:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":12959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3506:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12961,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12948,"src":"3528:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12960,"name":"ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5474,"src":"3520:7:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":12962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3520:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12963,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12927,"src":"3534:5:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3520:19:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3506:33:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12977,"nodeType":"IfStatement","src":"3502:165:58","trueBody":{"id":12976,"nodeType":"Block","src":"3541:126:58","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12966,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12944,"src":"3563:5:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12967,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12929,"src":"3572:5:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3563:14:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12972,"nodeType":"IfStatement","src":"3559:69:58","trueBody":{"id":12971,"nodeType":"Block","src":"3579:49:58","statements":[{"expression":{"id":12969,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12948,"src":"3608:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12933,"id":12970,"nodeType":"Return","src":"3601:8:58"}]}},{"expression":{"id":12974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3645:7:58","subExpression":{"id":12973,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12944,"src":"3645:5:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12975,"nodeType":"ExpressionStatement","src":"3645:7:58"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12951,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12948,"src":"3465:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12952,"name":"_nextTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12742,"src":"3469:12:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3465:16:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12979,"initializationExpression":{"assignments":[12948],"declarations":[{"constant":false,"id":12948,"mutability":"mutable","name":"i","nameLocation":"3458:1:58","nodeType":"VariableDeclaration","scope":12979,"src":"3450:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12947,"name":"uint256","nodeType":"ElementaryTypeName","src":"3450:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12950,"initialValue":{"hexValue":"30","id":12949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3462:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3450:13:58"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":12955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3483:3:58","subExpression":{"id":12954,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12948,"src":"3483:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12956,"nodeType":"ExpressionStatement","src":"3483:3:58"},"nodeType":"ForStatement","src":"3445:232:58"},{"expression":{"arguments":[{"hexValue":"49504e46543a20696e646578206f7574206f6620626f756e6473","id":12981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3694:28:58","typeDescriptions":{"typeIdentifier":"t_stringliteral_9733be426b13e9a9d956b569fa7cbe74e4c1780e75f1f56e803452958eccf8dd","typeString":"literal_string \"IPNFT: index out of bounds\""},"value":"IPNFT: index out of bounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9733be426b13e9a9d956b569fa7cbe74e4c1780e75f1f56e803452958eccf8dd","typeString":"literal_string \"IPNFT: index out of bounds\""}],"id":12980,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"3687:6:58","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":12982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3687:36:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12983,"nodeType":"ExpressionStatement","src":"3687:36:58"}]},"documentation":{"id":12925,"nodeType":"StructuredDocumentation","src":"3038:180:58","text":" @dev Returns the token ID at a given index of an owner's token list\n @param owner The owner address\n @param index The index in the owner's token list"},"functionSelector":"2f745c59","id":12985,"implemented":true,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nameLocation":"3232:19:58","nodeType":"FunctionDefinition","parameters":{"id":12930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12927,"mutability":"mutable","name":"owner","nameLocation":"3269:5:58","nodeType":"VariableDeclaration","scope":12985,"src":"3261:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12926,"name":"address","nodeType":"ElementaryTypeName","src":"3261:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12929,"mutability":"mutable","name":"index","nameLocation":"3292:5:58","nodeType":"VariableDeclaration","scope":12985,"src":"3284:13:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12928,"name":"uint256","nodeType":"ElementaryTypeName","src":"3284:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3251:52:58"},"returnParameters":{"id":12933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12932,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12985,"src":"3325:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12931,"name":"uint256","nodeType":"ElementaryTypeName","src":"3325:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3324:9:58"},"scope":13028,"src":"3223:507:58","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":13002,"nodeType":"Block","src":"3852:55:58","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":12994,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12988,"src":"3878:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12993,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5710,"src":"3869:8:58","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":12995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3869:17:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":12998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3898:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12997,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3890:7:58","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12996,"name":"address","nodeType":"ElementaryTypeName","src":"3890:7:58","typeDescriptions":{}}},"id":12999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3890:10:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3869:31:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12992,"id":13001,"nodeType":"Return","src":"3862:38:58"}]},"documentation":{"id":12986,"nodeType":"StructuredDocumentation","src":"3736:48:58","text":" @dev Checks if a token exists"},"id":13003,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"3798:7:58","nodeType":"FunctionDefinition","parameters":{"id":12989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12988,"mutability":"mutable","name":"tokenId","nameLocation":"3814:7:58","nodeType":"VariableDeclaration","scope":13003,"src":"3806:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12987,"name":"uint256","nodeType":"ElementaryTypeName","src":"3806:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3805:17:58"},"returnParameters":{"id":12992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12991,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13003,"src":"3846:4:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12990,"name":"bool","nodeType":"ElementaryTypeName","src":"3846:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3845:6:58"},"scope":13028,"src":"3789:118:58","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[5902],"body":{"id":13026,"nodeType":"Block","src":"4106:143:58","statements":[{"assignments":[13016],"declarations":[{"constant":false,"id":13016,"mutability":"mutable","name":"from","nameLocation":"4124:4:58","nodeType":"VariableDeclaration","scope":13026,"src":"4116:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13015,"name":"address","nodeType":"ElementaryTypeName","src":"4116:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13023,"initialValue":{"arguments":[{"id":13019,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13005,"src":"4145:2:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13020,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13007,"src":"4149:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13021,"name":"auth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13009,"src":"4158:4:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13017,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"4131:5:58","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_IPNFT_$13028_$","typeString":"type(contract super IPNFT)"}},"id":13018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4137:7:58","memberName":"_update","nodeType":"MemberAccess","referencedDeclaration":5902,"src":"4131:13:58","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$","typeString":"function (address,uint256,address) returns (address)"}},"id":13022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4131:32:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4116:47:58"},{"expression":{"id":13024,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13016,"src":"4238:4:58","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":13014,"id":13025,"nodeType":"Return","src":"4231:11:58"}]},"id":13027,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"3989:7:58","nodeType":"FunctionDefinition","overrides":{"id":13011,"nodeType":"OverrideSpecifier","overrides":[],"src":"4079:8:58"},"parameters":{"id":13010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13005,"mutability":"mutable","name":"to","nameLocation":"4014:2:58","nodeType":"VariableDeclaration","scope":13027,"src":"4006:10:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13004,"name":"address","nodeType":"ElementaryTypeName","src":"4006:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13007,"mutability":"mutable","name":"tokenId","nameLocation":"4034:7:58","nodeType":"VariableDeclaration","scope":13027,"src":"4026:15:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13006,"name":"uint256","nodeType":"ElementaryTypeName","src":"4026:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13009,"mutability":"mutable","name":"auth","nameLocation":"4059:4:58","nodeType":"VariableDeclaration","scope":13027,"src":"4051:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13008,"name":"address","nodeType":"ElementaryTypeName","src":"4051:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3996:73:58"},"returnParameters":{"id":13014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13013,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13027,"src":"4097:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13012,"name":"address","nodeType":"ElementaryTypeName","src":"4097:7:58","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4096:9:58"},"scope":13028,"src":"3980:269:58","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":13029,"src":"351:3900:58","usedErrors":[3846,3851,4160,4165,4174,4179,4184,4191,4196,4201],"usedEvents":[3857,4100,4107,6305,6314,6323,12773]}],"src":"32:4220:58"},"id":58},"contracts/Lock.sol":{"ast":{"absolutePath":"contracts/Lock.sol","exportedSymbols":{"Lock":[13107]},"id":13108,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":13030,"literals":["solidity","^","0.8",".28"],"nodeType":"PragmaDirective","src":"39:24:59"},{"abstract":false,"baseContracts":[],"canonicalName":"Lock","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":13107,"linearizedBaseContracts":[13107],"name":"Lock","nameLocation":"150:4:59","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"251c1aa3","id":13032,"mutability":"mutable","name":"unlockTime","nameLocation":"173:10:59","nodeType":"VariableDeclaration","scope":13107,"src":"161:22:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13031,"name":"uint","nodeType":"ElementaryTypeName","src":"161:4:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"8da5cb5b","id":13034,"mutability":"mutable","name":"owner","nameLocation":"212:5:59","nodeType":"VariableDeclaration","scope":13107,"src":"189:28:59","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":13033,"name":"address","nodeType":"ElementaryTypeName","src":"189:15:59","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"public"},{"anonymous":false,"eventSelector":"bf2ed60bd5b5965d685680c01195c9514e4382e28e3a5a2d2d5244bf59411b93","id":13040,"name":"Withdrawal","nameLocation":"230:10:59","nodeType":"EventDefinition","parameters":{"id":13039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13036,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"246:6:59","nodeType":"VariableDeclaration","scope":13040,"src":"241:11:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13035,"name":"uint","nodeType":"ElementaryTypeName","src":"241:4:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13038,"indexed":false,"mutability":"mutable","name":"when","nameLocation":"259:4:59","nodeType":"VariableDeclaration","scope":13040,"src":"254:9:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13037,"name":"uint","nodeType":"ElementaryTypeName","src":"254:4:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"240:24:59"},"src":"224:41:59"},{"body":{"id":13065,"nodeType":"Block","src":"309:200:59","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13046,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"340:5:59","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"346:9:59","memberName":"timestamp","nodeType":"MemberAccess","src":"340:15:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13048,"name":"_unlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13042,"src":"358:11:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"340:29:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e6c6f636b2074696d652073686f756c6420626520696e2074686520667574757265","id":13050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"383:37:59","typeDescriptions":{"typeIdentifier":"t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413","typeString":"literal_string \"Unlock time should be in the future\""},"value":"Unlock time should be in the future"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413","typeString":"literal_string \"Unlock time should be in the future\""}],"id":13045,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"319:7:59","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"319:111:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13052,"nodeType":"ExpressionStatement","src":"319:111:59"},{"expression":{"id":13055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13053,"name":"unlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13032,"src":"441:10:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13054,"name":"_unlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13042,"src":"454:11:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"441:24:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13056,"nodeType":"ExpressionStatement","src":"441:24:59"},{"expression":{"id":13063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13057,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13034,"src":"475:5:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":13060,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"491:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"495:6:59","memberName":"sender","nodeType":"MemberAccess","src":"491:10:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"483:8:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":13058,"name":"address","nodeType":"ElementaryTypeName","src":"483:8:59","stateMutability":"payable","typeDescriptions":{}}},"id":13062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"483:19:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"475:27:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":13064,"nodeType":"ExpressionStatement","src":"475:27:59"}]},"id":13066,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13042,"mutability":"mutable","name":"_unlockTime","nameLocation":"288:11:59","nodeType":"VariableDeclaration","scope":13066,"src":"283:16:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13041,"name":"uint","nodeType":"ElementaryTypeName","src":"283:4:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"282:18:59"},"returnParameters":{"id":13044,"nodeType":"ParameterList","parameters":[],"src":"309:0:59"},"scope":13107,"src":"271:238:59","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":13105,"nodeType":"Block","src":"542:463:59","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13070,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"766:5:59","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"772:9:59","memberName":"timestamp","nodeType":"MemberAccess","src":"766:15:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":13072,"name":"unlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13032,"src":"785:10:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"766:29:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"596f752063616e277420776974686472617720796574","id":13074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"797:24:59","typeDescriptions":{"typeIdentifier":"t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8","typeString":"literal_string \"You can't withdraw yet\""},"value":"You can't withdraw yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8","typeString":"literal_string \"You can't withdraw yet\""}],"id":13069,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"758:7:59","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"758:64:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13076,"nodeType":"ExpressionStatement","src":"758:64:59"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13078,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"840:3:59","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"844:6:59","memberName":"sender","nodeType":"MemberAccess","src":"840:10:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":13080,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13034,"src":"854:5:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"840:19:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"596f75206172656e277420746865206f776e6572","id":13082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"861:22:59","typeDescriptions":{"typeIdentifier":"t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a","typeString":"literal_string \"You aren't the owner\""},"value":"You aren't the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a","typeString":"literal_string \"You aren't the owner\""}],"id":13077,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"832:7:59","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"832:52:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13084,"nodeType":"ExpressionStatement","src":"832:52:59"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":13088,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"919:4:59","typeDescriptions":{"typeIdentifier":"t_contract$_Lock_$13107","typeString":"contract Lock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Lock_$13107","typeString":"contract Lock"}],"id":13087,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"911:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13086,"name":"address","nodeType":"ElementaryTypeName","src":"911:7:59","typeDescriptions":{}}},"id":13089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"911:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"925:7:59","memberName":"balance","nodeType":"MemberAccess","src":"911:21:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":13091,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"934:5:59","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"940:9:59","memberName":"timestamp","nodeType":"MemberAccess","src":"934:15:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13085,"name":"Withdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13040,"src":"900:10:59","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":13093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"900:50:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13094,"nodeType":"EmitStatement","src":"895:55:59"},{"expression":{"arguments":[{"expression":{"arguments":[{"id":13100,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"984:4:59","typeDescriptions":{"typeIdentifier":"t_contract$_Lock_$13107","typeString":"contract Lock"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Lock_$13107","typeString":"contract Lock"}],"id":13099,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"976:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13098,"name":"address","nodeType":"ElementaryTypeName","src":"976:7:59","typeDescriptions":{}}},"id":13101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"976:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"990:7:59","memberName":"balance","nodeType":"MemberAccess","src":"976:21:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13095,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13034,"src":"961:5:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":13097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"967:8:59","memberName":"transfer","nodeType":"MemberAccess","src":"961:14:59","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":13103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"961:37:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13104,"nodeType":"ExpressionStatement","src":"961:37:59"}]},"functionSelector":"3ccfd60b","id":13106,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"524:8:59","nodeType":"FunctionDefinition","parameters":{"id":13067,"nodeType":"ParameterList","parameters":[],"src":"532:2:59"},"returnParameters":{"id":13068,"nodeType":"ParameterList","parameters":[],"src":"542:0:59"},"scope":13107,"src":"515:490:59","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":13108,"src":"141:866:59","usedErrors":[],"usedEvents":[13040]}],"src":"39:969:59"},"id":59},"contracts/SS.sol":{"ast":{"absolutePath":"contracts/SS.sol","exportedSymbols":{"OFT":[2736],"Ownable":[3980],"SS":[13153]},"id":13154,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":13109,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:60"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":13111,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13154,"sourceUnit":3981,"src":"58:67:60","symbolAliases":[{"foreign":{"id":13110,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"66:7:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oft-evm/contracts/OFT.sol","file":"@layerzerolabs/oft-evm/contracts/OFT.sol","id":13113,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13154,"sourceUnit":2737,"src":"126:61:60","symbolAliases":[{"foreign":{"id":13112,"name":"OFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2736,"src":"134:3:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13114,"name":"OFT","nameLocations":["204:3:60"],"nodeType":"IdentifierPath","referencedDeclaration":2736,"src":"204:3:60"},"id":13115,"nodeType":"InheritanceSpecifier","src":"204:3:60"}],"canonicalName":"SS","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":13153,"linearizedBaseContracts":[13153,2736,4764,4154,4868,4842,3365,2149,2323,1371,1653,1839,1501,3980,6685,1964,2377,1902,1985,238,3509],"name":"SS","nameLocation":"198:2:60","nodeType":"ContractDefinition","nodes":[{"body":{"id":13135,"nodeType":"Block","src":"411:2:60","statements":[]},"id":13136,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13126,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13117,"src":"352:5:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":13127,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13119,"src":"359:7:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":13128,"name":"_lzEndpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13121,"src":"368:11:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13129,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13123,"src":"381:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":13130,"kind":"baseConstructorSpecifier","modifierName":{"id":13125,"name":"OFT","nameLocations":["348:3:60"],"nodeType":"IdentifierPath","referencedDeclaration":2736,"src":"348:3:60"},"nodeType":"ModifierInvocation","src":"348:43:60"},{"arguments":[{"id":13132,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13123,"src":"400:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":13133,"kind":"baseConstructorSpecifier","modifierName":{"id":13131,"name":"Ownable","nameLocations":["392:7:60"],"nodeType":"IdentifierPath","referencedDeclaration":3980,"src":"392:7:60"},"nodeType":"ModifierInvocation","src":"392:18:60"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13117,"mutability":"mutable","name":"_name","nameLocation":"249:5:60","nodeType":"VariableDeclaration","scope":13136,"src":"235:19:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13116,"name":"string","nodeType":"ElementaryTypeName","src":"235:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13119,"mutability":"mutable","name":"_symbol","nameLocation":"278:7:60","nodeType":"VariableDeclaration","scope":13136,"src":"264:21:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13118,"name":"string","nodeType":"ElementaryTypeName","src":"264:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13121,"mutability":"mutable","name":"_lzEndpoint","nameLocation":"303:11:60","nodeType":"VariableDeclaration","scope":13136,"src":"295:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13120,"name":"address","nodeType":"ElementaryTypeName","src":"295:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13123,"mutability":"mutable","name":"_delegate","nameLocation":"332:9:60","nodeType":"VariableDeclaration","scope":13136,"src":"324:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13122,"name":"address","nodeType":"ElementaryTypeName","src":"324:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"225:122:60"},"returnParameters":{"id":13134,"nodeType":"ParameterList","parameters":[],"src":"411:0:60"},"scope":13153,"src":"214:199:60","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":13151,"nodeType":"Block","src":"651:36:60","statements":[{"expression":{"arguments":[{"id":13147,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13139,"src":"667:3:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13148,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13141,"src":"672:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13146,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4604,"src":"661:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"661:19:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13150,"nodeType":"ExpressionStatement","src":"661:19:60"}]},"documentation":{"id":13137,"nodeType":"StructuredDocumentation","src":"419:164:60","text":" @dev Mints new tokens to the specified address\n @param _to The address to mint tokens to\n @param _amount The amount of tokens to mint"},"functionSelector":"40c10f19","id":13152,"implemented":true,"kind":"function","modifiers":[{"id":13144,"kind":"modifierInvocation","modifierName":{"id":13143,"name":"onlyOwner","nameLocations":["641:9:60"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"641:9:60"},"nodeType":"ModifierInvocation","src":"641:9:60"}],"name":"mint","nameLocation":"597:4:60","nodeType":"FunctionDefinition","parameters":{"id":13142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13139,"mutability":"mutable","name":"_to","nameLocation":"610:3:60","nodeType":"VariableDeclaration","scope":13152,"src":"602:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13138,"name":"address","nodeType":"ElementaryTypeName","src":"602:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13141,"mutability":"mutable","name":"_amount","nameLocation":"623:7:60","nodeType":"VariableDeclaration","scope":13152,"src":"615:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13140,"name":"uint256","nodeType":"ElementaryTypeName","src":"615:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"601:30:60"},"returnParameters":{"id":13145,"nodeType":"ParameterList","parameters":[],"src":"651:0:60"},"scope":13153,"src":"588:99:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":13154,"src":"189:500:60","usedErrors":[1517,1675,1677,1850,1854,1856,1858,1937,2333,2335,3407,3413,3846,3851,4124,4129,4134,4143,4148,4153,4880],"usedEvents":[1864,1943,2340,2790,3425,3435,3857,4776,4785]}],"src":"32:658:60"},"id":60},"contracts/SSG.sol":{"ast":{"absolutePath":"contracts/SSG.sol","exportedSymbols":{"OFT":[2736],"Ownable":[3980],"SSG":[13289]},"id":13290,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":13155,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:61"},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":13157,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13290,"sourceUnit":3981,"src":"58:67:61","symbolAliases":[{"foreign":{"id":13156,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"66:7:61","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oft-evm/contracts/OFT.sol","file":"@layerzerolabs/oft-evm/contracts/OFT.sol","id":13159,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13290,"sourceUnit":2737,"src":"126:61:61","symbolAliases":[{"foreign":{"id":13158,"name":"OFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2736,"src":"134:3:61","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13160,"name":"OFT","nameLocations":["205:3:61"],"nodeType":"IdentifierPath","referencedDeclaration":2736,"src":"205:3:61"},"id":13161,"nodeType":"InheritanceSpecifier","src":"205:3:61"}],"canonicalName":"SSG","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":13289,"linearizedBaseContracts":[13289,2736,4764,4154,4868,4842,3365,2149,2323,1371,1653,1839,1501,3980,6685,1964,2377,1902,1985,238,3509],"name":"SSG","nameLocation":"198:3:61","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"32cb6b0c","id":13168,"mutability":"constant","name":"MAX_SUPPLY","nameLocation":"239:10:61","nodeType":"VariableDeclaration","scope":13289,"src":"215:58:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13162,"name":"uint256","nodeType":"ElementaryTypeName","src":"215:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_20000000000000000000000000_by_1","typeString":"int_const 20000000000000000000000000"},"id":13167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32305f3030305f303030","id":13163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"252:10:61","typeDescriptions":{"typeIdentifier":"t_rational_20000000_by_1","typeString":"int_const 20000000"},"value":"20_000_000"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"id":13166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":13164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"265:2:61","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3138","id":13165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"271:2:61","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"265:8:61","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}},"src":"252:21:61","typeDescriptions":{"typeIdentifier":"t_rational_20000000000000000000000000_by_1","typeString":"int_const 20000000000000000000000000"}},"visibility":"public"},{"errorSelector":"8a164f63","id":13170,"name":"MaxSupplyExceeded","nameLocation":"286:17:61","nodeType":"ErrorDefinition","parameters":{"id":13169,"nodeType":"ParameterList","parameters":[],"src":"303:2:61"},"src":"280:26:61"},{"body":{"id":13190,"nodeType":"Block","src":"509:2:61","statements":[]},"id":13191,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":13181,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13172,"src":"450:5:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":13182,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13174,"src":"457:7:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":13183,"name":"_lzEndpoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13176,"src":"466:11:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13184,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13178,"src":"479:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":13185,"kind":"baseConstructorSpecifier","modifierName":{"id":13180,"name":"OFT","nameLocations":["446:3:61"],"nodeType":"IdentifierPath","referencedDeclaration":2736,"src":"446:3:61"},"nodeType":"ModifierInvocation","src":"446:43:61"},{"arguments":[{"id":13187,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13178,"src":"498:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":13188,"kind":"baseConstructorSpecifier","modifierName":{"id":13186,"name":"Ownable","nameLocations":["490:7:61"],"nodeType":"IdentifierPath","referencedDeclaration":3980,"src":"490:7:61"},"nodeType":"ModifierInvocation","src":"490:18:61"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13172,"mutability":"mutable","name":"_name","nameLocation":"347:5:61","nodeType":"VariableDeclaration","scope":13191,"src":"333:19:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13171,"name":"string","nodeType":"ElementaryTypeName","src":"333:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13174,"mutability":"mutable","name":"_symbol","nameLocation":"376:7:61","nodeType":"VariableDeclaration","scope":13191,"src":"362:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13173,"name":"string","nodeType":"ElementaryTypeName","src":"362:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":13176,"mutability":"mutable","name":"_lzEndpoint","nameLocation":"401:11:61","nodeType":"VariableDeclaration","scope":13191,"src":"393:19:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13175,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13178,"mutability":"mutable","name":"_delegate","nameLocation":"430:9:61","nodeType":"VariableDeclaration","scope":13191,"src":"422:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13177,"name":"address","nodeType":"ElementaryTypeName","src":"422:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"323:122:61"},"returnParameters":{"id":13189,"nodeType":"ParameterList","parameters":[],"src":"509:0:61"},"scope":13289,"src":"312:199:61","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":13217,"nodeType":"Block","src":"749:138:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":13201,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4337,"src":"763:11:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"763:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":13203,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13196,"src":"779:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"763:23:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13205,"name":"MAX_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13168,"src":"789:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"763:36:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13211,"nodeType":"IfStatement","src":"759:93:61","trueBody":{"id":13210,"nodeType":"Block","src":"801:51:61","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13207,"name":"MaxSupplyExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13170,"src":"822:17:61","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":13208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"822:19:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13209,"nodeType":"RevertStatement","src":"815:26:61"}]}},{"expression":{"arguments":[{"id":13213,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13194,"src":"867:3:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13214,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13196,"src":"872:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13212,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4604,"src":"861:5:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"861:19:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13216,"nodeType":"ExpressionStatement","src":"861:19:61"}]},"documentation":{"id":13192,"nodeType":"StructuredDocumentation","src":"517:164:61","text":" @dev Mints new tokens to the specified address\n @param _to The address to mint tokens to\n @param _amount The amount of tokens to mint"},"functionSelector":"40c10f19","id":13218,"implemented":true,"kind":"function","modifiers":[{"id":13199,"kind":"modifierInvocation","modifierName":{"id":13198,"name":"onlyOwner","nameLocations":["739:9:61"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"739:9:61"},"nodeType":"ModifierInvocation","src":"739:9:61"}],"name":"mint","nameLocation":"695:4:61","nodeType":"FunctionDefinition","parameters":{"id":13197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13194,"mutability":"mutable","name":"_to","nameLocation":"708:3:61","nodeType":"VariableDeclaration","scope":13218,"src":"700:11:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13193,"name":"address","nodeType":"ElementaryTypeName","src":"700:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13196,"mutability":"mutable","name":"_amount","nameLocation":"721:7:61","nodeType":"VariableDeclaration","scope":13218,"src":"713:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13195,"name":"uint256","nodeType":"ElementaryTypeName","src":"713:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"699:30:61"},"returnParameters":{"id":13200,"nodeType":"ParameterList","parameters":[],"src":"749:0:61"},"scope":13289,"src":"686:201:61","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2735],"body":{"id":13249,"nodeType":"Block","src":"1158:218:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":13231,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4337,"src":"1224:11:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1224:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":13233,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13223,"src":"1240:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1224:25:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13235,"name":"MAX_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13168,"src":"1252:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1224:38:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13241,"nodeType":"IfStatement","src":"1220:95:61","trueBody":{"id":13240,"nodeType":"Block","src":"1264:51:61","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13237,"name":"MaxSupplyExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13170,"src":"1285:17:61","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":13238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1285:19:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13239,"nodeType":"RevertStatement","src":"1278:26:61"}]}},{"expression":{"arguments":[{"id":13244,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13221,"src":"1345:3:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13245,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13223,"src":"1350:9:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13246,"name":"_srcEid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13225,"src":"1361:7:61","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":13242,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1331:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SSG_$13289_$","typeString":"type(contract super SSG)"}},"id":13243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1337:7:61","memberName":"_credit","nodeType":"MemberAccess","referencedDeclaration":2735,"src":"1331:13:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint32_$returns$_t_uint256_$","typeString":"function (address,uint256,uint32) returns (uint256)"}},"id":13247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1331:38:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13230,"id":13248,"nodeType":"Return","src":"1324:45:61"}]},"documentation":{"id":13219,"nodeType":"StructuredDocumentation","src":"893:104:61","text":" @dev Override _credit method to enforce max supply limit during cross-chain transfers"},"id":13250,"implemented":true,"kind":"function","modifiers":[],"name":"_credit","nameLocation":"1011:7:61","nodeType":"FunctionDefinition","overrides":{"id":13227,"nodeType":"OverrideSpecifier","overrides":[],"src":"1114:8:61"},"parameters":{"id":13226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13221,"mutability":"mutable","name":"_to","nameLocation":"1036:3:61","nodeType":"VariableDeclaration","scope":13250,"src":"1028:11:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13220,"name":"address","nodeType":"ElementaryTypeName","src":"1028:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13223,"mutability":"mutable","name":"_amountLD","nameLocation":"1057:9:61","nodeType":"VariableDeclaration","scope":13250,"src":"1049:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13222,"name":"uint256","nodeType":"ElementaryTypeName","src":"1049:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13225,"mutability":"mutable","name":"_srcEid","nameLocation":"1083:7:61","nodeType":"VariableDeclaration","scope":13250,"src":"1076:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":13224,"name":"uint32","nodeType":"ElementaryTypeName","src":"1076:6:61","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1018:78:61"},"returnParameters":{"id":13230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13229,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"1140:16:61","nodeType":"VariableDeclaration","scope":13250,"src":"1132:24:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13228,"name":"uint256","nodeType":"ElementaryTypeName","src":"1132:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1131:26:61"},"scope":13289,"src":"1002:374:61","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[4571],"body":{"id":13287,"nodeType":"Block","src":"1657:171:61","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13261,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13253,"src":"1671:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":13264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1687:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":13263,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1679:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13262,"name":"address","nodeType":"ElementaryTypeName","src":"1679:7:61","typeDescriptions":{}}},"id":13265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1679:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1671:18:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":13267,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4337,"src":"1693:11:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":13268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1693:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":13269,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13257,"src":"1709:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1693:22:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":13271,"name":"MAX_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13168,"src":"1718:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1693:35:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1671:57:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13278,"nodeType":"IfStatement","src":"1667:114:61","trueBody":{"id":13277,"nodeType":"Block","src":"1730:51:61","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13274,"name":"MaxSupplyExceeded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13170,"src":"1751:17:61","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":13275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1751:19:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":13276,"nodeType":"RevertStatement","src":"1744:26:61"}]}},{"expression":{"arguments":[{"id":13282,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13253,"src":"1804:4:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13283,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13255,"src":"1810:2:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13284,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13257,"src":"1814:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13279,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1790:5:61","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_SSG_$13289_$","typeString":"type(contract super SSG)"}},"id":13281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1796:7:61","memberName":"_update","nodeType":"MemberAccess","referencedDeclaration":4571,"src":"1790:13:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":13285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1790:31:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13286,"nodeType":"ExpressionStatement","src":"1790:31:61"}]},"documentation":{"id":13251,"nodeType":"StructuredDocumentation","src":"1382:155:61","text":" @dev Override _update to enforce max supply limit for all minting operations\n This is used by both _mint and cross-chain transfers"},"id":13288,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"1551:7:61","nodeType":"FunctionDefinition","overrides":{"id":13259,"nodeType":"OverrideSpecifier","overrides":[],"src":"1648:8:61"},"parameters":{"id":13258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13253,"mutability":"mutable","name":"from","nameLocation":"1576:4:61","nodeType":"VariableDeclaration","scope":13288,"src":"1568:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13252,"name":"address","nodeType":"ElementaryTypeName","src":"1568:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13255,"mutability":"mutable","name":"to","nameLocation":"1598:2:61","nodeType":"VariableDeclaration","scope":13288,"src":"1590:10:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13254,"name":"address","nodeType":"ElementaryTypeName","src":"1590:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13257,"mutability":"mutable","name":"amount","nameLocation":"1618:6:61","nodeType":"VariableDeclaration","scope":13288,"src":"1610:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13256,"name":"uint256","nodeType":"ElementaryTypeName","src":"1610:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1558:72:61"},"returnParameters":{"id":13260,"nodeType":"ParameterList","parameters":[],"src":"1657:0:61"},"scope":13289,"src":"1542:286:61","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":13290,"src":"189:1641:61","usedErrors":[1517,1675,1677,1850,1854,1856,1858,1937,2333,2335,3407,3413,3846,3851,4124,4129,4134,4143,4148,4153,4880,13170],"usedEvents":[1864,1943,2340,2790,3425,3435,3857,4776,4785]}],"src":"32:1799:61"},"id":61},"contracts/UniqueNFT.sol":{"ast":{"absolutePath":"contracts/UniqueNFT.sol","exportedSymbols":{"Context":[6685],"ERC165":[8619],"ERC721":[6289],"ERC721URIStorage":[6550],"ERC721Utils":[6655],"IERC165":[8631],"IERC4906":[4108],"IERC721":[6406],"IERC721Errors":[4202],"IERC721Metadata":[6578],"Ownable":[3980],"Strings":[8139],"UniqueNFT":[13395]},"id":13396,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":13291,"literals":["solidity","^","0.8",".28"],"nodeType":"PragmaDirective","src":"32:24:62"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","file":"@openzeppelin/contracts/token/ERC721/ERC721.sol","id":13292,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13396,"sourceUnit":6290,"src":"58:57:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol","file":"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol","id":13293,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13396,"sourceUnit":6551,"src":"116:78:62","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":13294,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13396,"sourceUnit":3981,"src":"195:52:62","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13295,"name":"ERC721URIStorage","nameLocations":["271:16:62"],"nodeType":"IdentifierPath","referencedDeclaration":6550,"src":"271:16:62"},"id":13296,"nodeType":"InheritanceSpecifier","src":"271:16:62"},{"baseName":{"id":13297,"name":"Ownable","nameLocations":["289:7:62"],"nodeType":"IdentifierPath","referencedDeclaration":3980,"src":"289:7:62"},"id":13298,"nodeType":"InheritanceSpecifier","src":"289:7:62"}],"canonicalName":"UniqueNFT","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":13395,"linearizedBaseContracts":[13395,3980,6550,6289,4202,6578,4108,6406,8619,8631,6685],"name":"UniqueNFT","nameLocation":"258:9:62","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":13301,"mutability":"constant","name":"MAX_SUPPLY","nameLocation":"361:10:62","nodeType":"VariableDeclaration","scope":13395,"src":"336:39:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13299,"name":"uint256","nodeType":"ElementaryTypeName","src":"336:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":13300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"374:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":false,"id":13303,"mutability":"mutable","name":"_tokenIdCounter","nameLocation":"433:15:62","nodeType":"VariableDeclaration","scope":13395,"src":"417:31:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13302,"name":"uint256","nodeType":"ElementaryTypeName","src":"417:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":13305,"mutability":"mutable","name":"_isMinted","nameLocation":"506:9:62","nodeType":"VariableDeclaration","scope":13395,"src":"493:22:62","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13304,"name":"bool","nodeType":"ElementaryTypeName","src":"493:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"body":{"id":13325,"nodeType":"Block","src":"620:63:62","statements":[{"expression":{"id":13319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13317,"name":"_tokenIdCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13303,"src":"630:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":13318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"648:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"630:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13320,"nodeType":"ExpressionStatement","src":"630:19:62"},{"expression":{"id":13323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13321,"name":"_isMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13305,"src":"659:9:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":13322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"671:5:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"659:17:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13324,"nodeType":"ExpressionStatement","src":"659:17:62"}]},"id":13326,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"556e697175654e4654","id":13310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"577:11:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_10fecde4a6f9909dbab781603bca5c60c06f4bbe2ff7b83e4af7b294ae3de619","typeString":"literal_string \"UniqueNFT\""},"value":"UniqueNFT"},{"hexValue":"554e4654","id":13311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"590:6:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef76d3f0a8f0f563096c869f792ff2b6b07146b28b28002cf448b31c7c13f4c7","typeString":"literal_string \"UNFT\""},"value":"UNFT"}],"id":13312,"kind":"baseConstructorSpecifier","modifierName":{"id":13309,"name":"ERC721","nameLocations":["570:6:62"],"nodeType":"IdentifierPath","referencedDeclaration":6289,"src":"570:6:62"},"nodeType":"ModifierInvocation","src":"570:27:62"},{"arguments":[{"id":13314,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"606:12:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":13315,"kind":"baseConstructorSpecifier","modifierName":{"id":13313,"name":"Ownable","nameLocations":["598:7:62"],"nodeType":"IdentifierPath","referencedDeclaration":3980,"src":"598:7:62"},"nodeType":"ModifierInvocation","src":"598:21:62"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13307,"mutability":"mutable","name":"initialOwner","nameLocation":"551:12:62","nodeType":"VariableDeclaration","scope":13326,"src":"543:20:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13306,"name":"address","nodeType":"ElementaryTypeName","src":"543:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"533:36:62"},"returnParameters":{"id":13316,"nodeType":"ParameterList","parameters":[],"src":"620:0:62"},"scope":13395,"src":"522:161:62","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":13375,"nodeType":"Block","src":"935:411:62","statements":[{"expression":{"arguments":[{"id":13340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"953:10:62","subExpression":{"id":13339,"name":"_isMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13305,"src":"954:9:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e697175654e46543a20546865206f6e6c79204e46542068617320616c7265616479206265656e206d696e746564","id":13341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"965:49:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_d8f036579390a0987d4ad9019af725baa50b0e5d7c04e2e356c36b1f83b2da03","typeString":"literal_string \"UniqueNFT: The only NFT has already been minted\""},"value":"UniqueNFT: The only NFT has already been minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d8f036579390a0987d4ad9019af725baa50b0e5d7c04e2e356c36b1f83b2da03","typeString":"literal_string \"UniqueNFT: The only NFT has already been minted\""}],"id":13338,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"945:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"945:70:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13343,"nodeType":"ExpressionStatement","src":"945:70:62"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13345,"name":"_tokenIdCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13303,"src":"1046:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13346,"name":"MAX_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13301,"src":"1064:10:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1046:28:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"556e697175654e46543a204d6178696d756d20737570706c792072656163686564","id":13348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1088:35:62","typeDescriptions":{"typeIdentifier":"t_stringliteral_1273b4ad278fd53b35fe872e354cdd577d65adcb7b1d095e4baf15f107084221","typeString":"literal_string \"UniqueNFT: Maximum supply reached\""},"value":"UniqueNFT: Maximum supply reached"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1273b4ad278fd53b35fe872e354cdd577d65adcb7b1d095e4baf15f107084221","typeString":"literal_string \"UniqueNFT: Maximum supply reached\""}],"id":13344,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1025:7:62","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1025:108:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13350,"nodeType":"ExpressionStatement","src":"1025:108:62"},{"assignments":[13352],"declarations":[{"constant":false,"id":13352,"mutability":"mutable","name":"tokenId","nameLocation":"1152:7:62","nodeType":"VariableDeclaration","scope":13375,"src":"1144:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13351,"name":"uint256","nodeType":"ElementaryTypeName","src":"1144:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13354,"initialValue":{"id":13353,"name":"_tokenIdCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13303,"src":"1162:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1144:33:62"},{"expression":{"arguments":[{"id":13356,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13329,"src":"1197:9:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13357,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"1208:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13355,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[5967,5997],"referencedDeclaration":5967,"src":"1187:9:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":13358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1187:29:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13359,"nodeType":"ExpressionStatement","src":"1187:29:62"},{"expression":{"arguments":[{"id":13361,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"1239:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13362,"name":"tokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13331,"src":"1248:8:62","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":13360,"name":"_setTokenURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6549,"src":"1226:12:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":13363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1226:31:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13364,"nodeType":"ExpressionStatement","src":"1226:31:62"},{"expression":{"id":13367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13365,"name":"_tokenIdCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13303,"src":"1268:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":13366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1287:1:62","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1268:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13368,"nodeType":"ExpressionStatement","src":"1268:20:62"},{"expression":{"id":13371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13369,"name":"_isMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13305,"src":"1298:9:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":13370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1310:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1298:16:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13372,"nodeType":"ExpressionStatement","src":"1298:16:62"},{"expression":{"id":13373,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13352,"src":"1332:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13337,"id":13374,"nodeType":"Return","src":"1325:14:62"}]},"documentation":{"id":13327,"nodeType":"StructuredDocumentation","src":"689:127:62","text":" @dev 铸造唯一的NFT\n @param recipient NFT接收者地址\n @param tokenURI NFT的元数据URI"},"functionSelector":"d0def521","id":13376,"implemented":true,"kind":"function","modifiers":[{"id":13334,"kind":"modifierInvocation","modifierName":{"id":13333,"name":"onlyOwner","nameLocations":["907:9:62"],"nodeType":"IdentifierPath","referencedDeclaration":3891,"src":"907:9:62"},"nodeType":"ModifierInvocation","src":"907:9:62"}],"name":"mint","nameLocation":"830:4:62","nodeType":"FunctionDefinition","parameters":{"id":13332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13329,"mutability":"mutable","name":"recipient","nameLocation":"852:9:62","nodeType":"VariableDeclaration","scope":13376,"src":"844:17:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13328,"name":"address","nodeType":"ElementaryTypeName","src":"844:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13331,"mutability":"mutable","name":"tokenURI","nameLocation":"885:8:62","nodeType":"VariableDeclaration","scope":13376,"src":"871:22:62","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":13330,"name":"string","nodeType":"ElementaryTypeName","src":"871:6:62","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"834:65:62"},"returnParameters":{"id":13337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13376,"src":"926:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13335,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:62"},"scope":13395,"src":"821:525:62","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":13384,"nodeType":"Block","src":"1464:39:62","statements":[{"expression":{"id":13382,"name":"_tokenIdCounter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13303,"src":"1481:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13381,"id":13383,"nodeType":"Return","src":"1474:22:62"}]},"documentation":{"id":13377,"nodeType":"StructuredDocumentation","src":"1352:54:62","text":" @dev 返回当前铸造的NFT总数"},"functionSelector":"18160ddd","id":13385,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"1420:11:62","nodeType":"FunctionDefinition","parameters":{"id":13378,"nodeType":"ParameterList","parameters":[],"src":"1431:2:62"},"returnParameters":{"id":13381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13380,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13385,"src":"1455:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13379,"name":"uint256","nodeType":"ElementaryTypeName","src":"1455:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1454:9:62"},"scope":13395,"src":"1411:92:62","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":13393,"nodeType":"Block","src":"1615:33:62","statements":[{"expression":{"id":13391,"name":"_isMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13305,"src":"1632:9:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13390,"id":13392,"nodeType":"Return","src":"1625:16:62"}]},"documentation":{"id":13386,"nodeType":"StructuredDocumentation","src":"1509:54:62","text":" @dev 检查NFT是否已经被铸造"},"functionSelector":"36ae5040","id":13394,"implemented":true,"kind":"function","modifiers":[],"name":"isMinted","nameLocation":"1577:8:62","nodeType":"FunctionDefinition","parameters":{"id":13387,"nodeType":"ParameterList","parameters":[],"src":"1585:2:62"},"returnParameters":{"id":13390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13389,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13394,"src":"1609:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13388,"name":"bool","nodeType":"ElementaryTypeName","src":"1609:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1608:6:62"},"scope":13395,"src":"1568:80:62","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":13396,"src":"249:1401:62","usedErrors":[3846,3851,4160,4165,4174,4179,4184,4191,4196,4201],"usedEvents":[3857,4100,4107,6305,6314,6323]}],"src":"32:1619:62"},"id":62},"contracts/interfaces/IERC6551Account.sol":{"ast":{"absolutePath":"contracts/interfaces/IERC6551Account.sol","exportedSymbols":{"IERC6551Account":[13429]},"id":13430,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":13397,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:63"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6551Account","contractDependencies":[],"contractKind":"interface","documentation":{"id":13398,"nodeType":"StructuredDocumentation","src":"57:67:63","text":"@dev the ERC-165 identifier for this interface is `0x6faff5f1`"},"fullyImplemented":false,"id":13429,"linearizedBaseContracts":[13429],"name":"IERC6551Account","nameLocation":"134:15:63","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":13399,"nodeType":"StructuredDocumentation","src":"156:236:63","text":" @dev Allows the account to receive Ether.\n Accounts MUST implement a `receive` function.\n Accounts MAY perform arbitrary logic to restrict conditions\n under which Ether can be received."},"id":13402,"implemented":false,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":13400,"nodeType":"ParameterList","parameters":[],"src":"404:2:63"},"returnParameters":{"id":13401,"nodeType":"ParameterList","parameters":[],"src":"423:0:63"},"scope":13429,"src":"397:27:63","stateMutability":"payable","virtual":false,"visibility":"external"},{"documentation":{"id":13403,"nodeType":"StructuredDocumentation","src":"430:389:63","text":" @dev Returns the identifier of the non-fungible token which owns the account.\n The return value of this function MUST be constant - it MUST NOT change over time.\n @return chainId       The EIP-155 ID of the chain the token exists on\n @return tokenContract The contract address of the token\n @return tokenId       The ID of the token"},"functionSelector":"fc0c546a","id":13412,"implemented":false,"kind":"function","modifiers":[],"name":"token","nameLocation":"833:5:63","nodeType":"FunctionDefinition","parameters":{"id":13404,"nodeType":"ParameterList","parameters":[],"src":"838:2:63"},"returnParameters":{"id":13411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13406,"mutability":"mutable","name":"chainId","nameLocation":"896:7:63","nodeType":"VariableDeclaration","scope":13412,"src":"888:15:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13405,"name":"uint256","nodeType":"ElementaryTypeName","src":"888:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13408,"mutability":"mutable","name":"tokenContract","nameLocation":"913:13:63","nodeType":"VariableDeclaration","scope":13412,"src":"905:21:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13407,"name":"address","nodeType":"ElementaryTypeName","src":"905:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13410,"mutability":"mutable","name":"tokenId","nameLocation":"936:7:63","nodeType":"VariableDeclaration","scope":13412,"src":"928:15:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13409,"name":"uint256","nodeType":"ElementaryTypeName","src":"928:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"887:57:63"},"scope":13429,"src":"824:121:63","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13413,"nodeType":"StructuredDocumentation","src":"951:148:63","text":" @dev Returns a value that SHOULD be modified each time the account changes state.\n @return The current account state"},"functionSelector":"c19d93fb","id":13418,"implemented":false,"kind":"function","modifiers":[],"name":"state","nameLocation":"1113:5:63","nodeType":"FunctionDefinition","parameters":{"id":13414,"nodeType":"ParameterList","parameters":[],"src":"1118:2:63"},"returnParameters":{"id":13417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13416,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13418,"src":"1144:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13415,"name":"uint256","nodeType":"ElementaryTypeName","src":"1144:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1143:9:63"},"scope":13429,"src":"1104:49:63","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":13419,"nodeType":"StructuredDocumentation","src":"1159:773:63","text":" @dev Returns a magic value indicating whether a given signer is authorized to act on behalf\n of the account.\n MUST return the bytes4 magic value 0x523e3260 if the given signer is valid.\n By default, the holder of the non-fungible token the account is bound to MUST be considered\n a valid signer.\n Accounts MAY implement additional authorization logic which invalidates the holder as a\n signer or grants signing permissions to other non-holder accounts.\n @param  signer     The address to check signing authorization for\n @param  context    Additional data used to determine whether the signer is valid\n @return magicValue Magic value indicating whether the signer is valid"},"functionSelector":"523e3260","id":13428,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSigner","nameLocation":"1946:13:63","nodeType":"FunctionDefinition","parameters":{"id":13424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13421,"mutability":"mutable","name":"signer","nameLocation":"1968:6:63","nodeType":"VariableDeclaration","scope":13428,"src":"1960:14:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13420,"name":"address","nodeType":"ElementaryTypeName","src":"1960:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13423,"mutability":"mutable","name":"context","nameLocation":"1991:7:63","nodeType":"VariableDeclaration","scope":13428,"src":"1976:22:63","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13422,"name":"bytes","nodeType":"ElementaryTypeName","src":"1976:5:63","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1959:40:63"},"returnParameters":{"id":13427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13426,"mutability":"mutable","name":"magicValue","nameLocation":"2054:10:63","nodeType":"VariableDeclaration","scope":13428,"src":"2047:17:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":13425,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2047:6:63","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2046:19:63"},"scope":13429,"src":"1937:129:63","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":13430,"src":"124:1944:63","usedErrors":[],"usedEvents":[]}],"src":"32:2037:63"},"id":63},"contracts/interfaces/IERC6551Executable.sol":{"ast":{"absolutePath":"contracts/interfaces/IERC6551Executable.sol","exportedSymbols":{"IERC6551Executable":[13447]},"id":13448,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":13431,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:64"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6551Executable","contractDependencies":[],"contractKind":"interface","documentation":{"id":13432,"nodeType":"StructuredDocumentation","src":"57:67:64","text":"@dev the ERC-165 identifier for this interface is `0x51945447`"},"fullyImplemented":false,"id":13447,"linearizedBaseContracts":[13447],"name":"IERC6551Executable","nameLocation":"134:18:64","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":13433,"nodeType":"StructuredDocumentation","src":"159:815:64","text":" @dev Executes a low-level operation if the caller is a valid signer on the account.\n Reverts and bubbles up error if operation fails.\n Accounts implementing this interface MUST accept the following operation parameter values:\n - 0 = CALL\n - 1 = DELEGATECALL\n - 2 = CREATE\n - 3 = CREATE2\n Accounts implementing this interface MAY support additional operations or restrict a signer's\n ability to execute certain operations.\n @param to        The target address of the operation\n @param value     The Ether value to be sent to the target\n @param data      The encoded operation calldata\n @param operation A value indicating the type of operation to perform\n @return The result of the operation"},"functionSelector":"51945447","id":13446,"implemented":false,"kind":"function","modifiers":[],"name":"execute","nameLocation":"988:7:64","nodeType":"FunctionDefinition","parameters":{"id":13442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13435,"mutability":"mutable","name":"to","nameLocation":"1004:2:64","nodeType":"VariableDeclaration","scope":13446,"src":"996:10:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13434,"name":"address","nodeType":"ElementaryTypeName","src":"996:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13437,"mutability":"mutable","name":"value","nameLocation":"1016:5:64","nodeType":"VariableDeclaration","scope":13446,"src":"1008:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13436,"name":"uint256","nodeType":"ElementaryTypeName","src":"1008:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13439,"mutability":"mutable","name":"data","nameLocation":"1038:4:64","nodeType":"VariableDeclaration","scope":13446,"src":"1023:19:64","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13438,"name":"bytes","nodeType":"ElementaryTypeName","src":"1023:5:64","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":13441,"mutability":"mutable","name":"operation","nameLocation":"1050:9:64","nodeType":"VariableDeclaration","scope":13446,"src":"1044:15:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":13440,"name":"uint8","nodeType":"ElementaryTypeName","src":"1044:5:64","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"995:65:64"},"returnParameters":{"id":13445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13444,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13446,"src":"1111:12:64","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13443,"name":"bytes","nodeType":"ElementaryTypeName","src":"1111:5:64","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1110:14:64"},"scope":13447,"src":"979:146:64","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":13448,"src":"124:1003:64","usedErrors":[],"usedEvents":[]}],"src":"32:1096:64"},"id":64},"contracts/interfaces/IERC6551Registry.sol":{"ast":{"absolutePath":"contracts/interfaces/IERC6551Registry.sol","exportedSymbols":{"IERC6551Registry":[13500]},"id":13501,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":13449,"literals":["solidity","^","0.8",".28"],"nodeType":"PragmaDirective","src":"32:24:65"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC6551Registry","contractDependencies":[],"contractKind":"interface","documentation":{"id":13450,"nodeType":"StructuredDocumentation","src":"58:61:65","text":"@dev ERC-165 identifier for this interface is 0x35e5c0ab"},"fullyImplemented":false,"id":13500,"linearizedBaseContracts":[13500],"name":"IERC6551Registry","nameLocation":"129:16:65","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":13451,"nodeType":"StructuredDocumentation","src":"152:470:65","text":" @dev Creates an ERC-6551 account\n @param implementation The address of the account implementation to use\n @param chainId The EIP-155 ID of the chain where the token exists\n @param tokenContract The address of the token contract\n @param tokenId The ID of the token\n @param salt A random value that allows for the creation of multiple accounts for the same NFT\n @param initData The initialization data for the account"},"functionSelector":"da7323b3","id":13468,"implemented":false,"kind":"function","modifiers":[],"name":"createAccount","nameLocation":"636:13:65","nodeType":"FunctionDefinition","parameters":{"id":13464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13453,"mutability":"mutable","name":"implementation","nameLocation":"667:14:65","nodeType":"VariableDeclaration","scope":13468,"src":"659:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13452,"name":"address","nodeType":"ElementaryTypeName","src":"659:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13455,"mutability":"mutable","name":"chainId","nameLocation":"699:7:65","nodeType":"VariableDeclaration","scope":13468,"src":"691:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13454,"name":"uint256","nodeType":"ElementaryTypeName","src":"691:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13457,"mutability":"mutable","name":"tokenContract","nameLocation":"724:13:65","nodeType":"VariableDeclaration","scope":13468,"src":"716:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13456,"name":"address","nodeType":"ElementaryTypeName","src":"716:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13459,"mutability":"mutable","name":"tokenId","nameLocation":"755:7:65","nodeType":"VariableDeclaration","scope":13468,"src":"747:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13458,"name":"uint256","nodeType":"ElementaryTypeName","src":"747:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13461,"mutability":"mutable","name":"salt","nameLocation":"780:4:65","nodeType":"VariableDeclaration","scope":13468,"src":"772:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13460,"name":"uint256","nodeType":"ElementaryTypeName","src":"772:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13463,"mutability":"mutable","name":"initData","nameLocation":"809:8:65","nodeType":"VariableDeclaration","scope":13468,"src":"794:23:65","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":13462,"name":"bytes","nodeType":"ElementaryTypeName","src":"794:5:65","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"649:174:65"},"returnParameters":{"id":13467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13466,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13468,"src":"842:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13465,"name":"address","nodeType":"ElementaryTypeName","src":"842:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"841:9:65"},"scope":13500,"src":"627:224:65","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":13469,"nodeType":"StructuredDocumentation","src":"857:440:65","text":" @dev Returns the account address associated with a specific token\n @param implementation The address of the account implementation to use\n @param chainId The EIP-155 ID of the chain where the token exists\n @param tokenContract The address of the token contract\n @param tokenId The ID of the token\n @param salt A random value that allows for the creation of multiple accounts for the same NFT"},"functionSelector":"5e9bc536","id":13484,"implemented":false,"kind":"function","modifiers":[],"name":"account","nameLocation":"1311:7:65","nodeType":"FunctionDefinition","parameters":{"id":13480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13471,"mutability":"mutable","name":"implementation","nameLocation":"1336:14:65","nodeType":"VariableDeclaration","scope":13484,"src":"1328:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13470,"name":"address","nodeType":"ElementaryTypeName","src":"1328:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13473,"mutability":"mutable","name":"chainId","nameLocation":"1368:7:65","nodeType":"VariableDeclaration","scope":13484,"src":"1360:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13472,"name":"uint256","nodeType":"ElementaryTypeName","src":"1360:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13475,"mutability":"mutable","name":"tokenContract","nameLocation":"1393:13:65","nodeType":"VariableDeclaration","scope":13484,"src":"1385:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13474,"name":"address","nodeType":"ElementaryTypeName","src":"1385:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13477,"mutability":"mutable","name":"tokenId","nameLocation":"1424:7:65","nodeType":"VariableDeclaration","scope":13484,"src":"1416:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13476,"name":"uint256","nodeType":"ElementaryTypeName","src":"1416:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13479,"mutability":"mutable","name":"salt","nameLocation":"1449:4:65","nodeType":"VariableDeclaration","scope":13484,"src":"1441:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13478,"name":"uint256","nodeType":"ElementaryTypeName","src":"1441:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1318:141:65"},"returnParameters":{"id":13483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13482,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13484,"src":"1483:7:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13481,"name":"address","nodeType":"ElementaryTypeName","src":"1483:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1482:9:65"},"scope":13500,"src":"1302:190:65","stateMutability":"view","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":13485,"nodeType":"StructuredDocumentation","src":"1498:61:65","text":" @dev Emitted when a new account is created"},"eventSelector":"07fba7bba1191da7ee1155dcfa0030701c9c9a9cc34a93b991fc6fd0c9268d8f","id":13499,"name":"AccountCreated","nameLocation":"1570:14:65","nodeType":"EventDefinition","parameters":{"id":13498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13487,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"1602:7:65","nodeType":"VariableDeclaration","scope":13499,"src":"1594:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13486,"name":"address","nodeType":"ElementaryTypeName","src":"1594:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13489,"indexed":false,"mutability":"mutable","name":"implementation","nameLocation":"1627:14:65","nodeType":"VariableDeclaration","scope":13499,"src":"1619:22:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13488,"name":"address","nodeType":"ElementaryTypeName","src":"1619:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13491,"indexed":false,"mutability":"mutable","name":"chainId","nameLocation":"1659:7:65","nodeType":"VariableDeclaration","scope":13499,"src":"1651:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13490,"name":"uint256","nodeType":"ElementaryTypeName","src":"1651:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13493,"indexed":false,"mutability":"mutable","name":"tokenContract","nameLocation":"1684:13:65","nodeType":"VariableDeclaration","scope":13499,"src":"1676:21:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13492,"name":"address","nodeType":"ElementaryTypeName","src":"1676:7:65","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13495,"indexed":false,"mutability":"mutable","name":"tokenId","nameLocation":"1715:7:65","nodeType":"VariableDeclaration","scope":13499,"src":"1707:15:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13494,"name":"uint256","nodeType":"ElementaryTypeName","src":"1707:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13497,"indexed":false,"mutability":"mutable","name":"salt","nameLocation":"1740:4:65","nodeType":"VariableDeclaration","scope":13499,"src":"1732:12:65","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13496,"name":"uint256","nodeType":"ElementaryTypeName","src":"1732:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1584:166:65"},"src":"1564:187:65"}],"scope":13501,"src":"119:1634:65","usedErrors":[],"usedEvents":[13499]}],"src":"32:1722:65"},"id":65}},"contracts":{"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol":{"ILayerZeroEndpointV2":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"}],"name":"ComposeDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"}],"name":"ComposeSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"DefaultReceiveLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"oldLib","type":"address"},{"indexed":false,"internalType":"uint256","name":"expiry","type":"uint256"}],"name":"DefaultReceiveLibraryTimeoutSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"DefaultSendLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"delegate","type":"address"}],"name":"DelegateSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"}],"name":"InboundNonceSkipped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"LibraryRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"extraData","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"LzComposeAlert","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"indexed":false,"internalType":"struct Origin","name":"origin","type":"tuple"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"extraData","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"LzReceiveAlert","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"LzTokenSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"},{"indexed":false,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PacketBurnt","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"indexed":false,"internalType":"struct Origin","name":"origin","type":"tuple"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"}],"name":"PacketDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"},{"indexed":false,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PacketNilified","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"encodedPayload","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"options","type":"bytes"},{"indexed":false,"internalType":"address","name":"sendLibrary","type":"address"}],"name":"PacketSent","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"indexed":false,"internalType":"struct Origin","name":"origin","type":"tuple"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PacketVerified","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"ReceiveLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"oldLib","type":"address"},{"indexed":false,"internalType":"uint256","name":"timeout","type":"uint256"}],"name":"ReceiveLibraryTimeoutSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"SendLibrarySet","type":"event"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes32","name":"_payloadHash","type":"bytes32"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"}],"name":"clear","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"}],"name":"composeQueue","outputs":[{"internalType":"bytes32","name":"messageHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultReceiveLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultReceiveLibraryTimeout","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultSendLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eid","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint32","name":"_configType","type":"uint32"}],"name":"getConfig","outputs":[{"internalType":"bytes","name":"config","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"getReceiveLibrary","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"bool","name":"isDefault","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRegisteredLibraries","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSendContext","outputs":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"getSendLibrary","outputs":[{"internalType":"address","name":"lib","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"inboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"}],"name":"inboundPayloadHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"initializable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isDefaultSendLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lib","type":"address"}],"name":"isRegisteredLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSendingMessage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isSupportedEid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"}],"name":"isValidReceiveLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"lazyInboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzCompose","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"lzToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativeToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"bytes32","name":"_receiver","type":"bytes32"}],"name":"nextGuid","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes32","name":"_payloadHash","type":"bytes32"}],"name":"nilify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"bytes32","name":"_receiver","type":"bytes32"}],"name":"outboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"receiver","type":"bytes32"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"options","type":"bytes"},{"internalType":"bool","name":"payInLzToken","type":"bool"}],"internalType":"struct MessagingParams","name":"_params","type":"tuple"},{"internalType":"address","name":"_sender","type":"address"}],"name":"quote","outputs":[{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"receiveLibraryTimeout","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lib","type":"address"}],"name":"registerLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"receiver","type":"bytes32"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"options","type":"bytes"},{"internalType":"bool","name":"payInLzToken","type":"bool"}],"internalType":"struct MessagingParams","name":"_params","type":"tuple"},{"internalType":"address","name":"_refundAddress","type":"address"}],"name":"send","outputs":[{"components":[{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"fee","type":"tuple"}],"internalType":"struct MessagingReceipt","name":"","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"},{"internalType":"bytes","name":"_message","type":"bytes"}],"name":"sendCompose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"address","name":"_lib","type":"address"},{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint32","name":"configType","type":"uint32"},{"internalType":"bytes","name":"config","type":"bytes"}],"internalType":"struct SetConfigParam[]","name":"_params","type":"tuple[]"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"},{"internalType":"uint256","name":"_gracePeriod","type":"uint256"}],"name":"setDefaultReceiveLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint256","name":"_expiry","type":"uint256"}],"name":"setDefaultReceiveLibraryTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"}],"name":"setDefaultSendLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lzToken","type":"address"}],"name":"setLzToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"},{"internalType":"uint256","name":"_gracePeriod","type":"uint256"}],"name":"setReceiveLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint256","name":"_expiry","type":"uint256"}],"name":"setReceiveLibraryTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"}],"name":"setSendLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"}],"name":"skip","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"verifiable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"bytes32","name":"_payloadHash","type":"bytes32"}],"name":"verify","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"burn(address,uint32,bytes32,uint64,bytes32)":"40f80683","clear(address,(uint32,bytes32,uint64),bytes32,bytes)":"2a56c1b0","composeQueue(address,address,bytes32,uint16)":"35d330b0","defaultReceiveLibrary(uint32)":"6f50a803","defaultReceiveLibraryTimeout(uint32)":"6e83f5bb","defaultSendLibrary(uint32)":"f64be4c7","eid()":"416ecebf","getConfig(address,address,uint32,uint32)":"2b3197b9","getReceiveLibrary(address,uint32)":"402f8468","getRegisteredLibraries()":"9132e5c3","getSendContext()":"14f651a9","getSendLibrary(address,uint32)":"b96a277f","inboundNonce(address,uint32,bytes32)":"a0dd43fc","inboundPayloadHash(address,uint32,bytes32,uint64)":"c9fc7bcd","initializable((uint32,bytes32,uint64),address)":"861e1ca5","isDefaultSendLibrary(address,uint32)":"dc93c8a2","isRegisteredLibrary(address)":"dc706a62","isSendingMessage()":"79624ca9","isSupportedEid(uint32)":"6750cd4c","isValidReceiveLibrary(address,uint32,address)":"9d7f9775","lazyInboundNonce(address,uint32,bytes32)":"5b17bb70","lzCompose(address,address,bytes32,uint16,bytes,bytes)":"91d20fa1","lzReceive((uint32,bytes32,uint64),address,bytes32,bytes,bytes)":"0c0c389e","lzToken()":"e4fe1d94","nativeToken()":"e1758bd8","nextGuid(address,uint32,bytes32)":"aafe5e07","nilify(address,uint32,bytes32,uint64,bytes32)":"2e80fbf3","outboundNonce(address,uint32,bytes32)":"9c6d7340","quote((uint32,bytes32,bytes,bytes,bool),address)":"ddc28c58","receiveLibraryTimeout(address,uint32)":"ef667aa1","registerLibrary(address)":"e8964e81","send((uint32,bytes32,bytes,bytes,bool),address)":"2637a450","sendCompose(address,bytes32,uint16,bytes)":"7cb59012","setConfig(address,address,(uint32,uint32,bytes)[])":"6dbd9f90","setDefaultReceiveLibrary(uint32,address,uint256)":"a718531b","setDefaultReceiveLibraryTimeout(uint32,address,uint256)":"d4b4ec8f","setDefaultSendLibrary(uint32,address)":"aafea312","setDelegate(address)":"ca5eb5e1","setLzToken(address)":"c28e0eed","setReceiveLibrary(address,uint32,address,uint256)":"6a14d715","setReceiveLibraryTimeout(address,uint32,address,uint256)":"183c834f","setSendLibrary(address,uint32,address)":"9535ff30","skip(address,uint32,bytes32,uint64)":"d70b8902","verifiable((uint32,bytes32,uint64),address)":"c9a54a99","verify((uint32,bytes32,uint64),address,bytes32)":"a825d747"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"}],\"name\":\"ComposeDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"ComposeSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"DefaultReceiveLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLib\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"DefaultReceiveLibraryTimeoutSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"DefaultSendLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"DelegateSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InboundNonceSkipped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"LibraryRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"LzComposeAlert\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"LzReceiveAlert\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"LzTokenSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"payloadHash\",\"type\":\"bytes32\"}],\"name\":\"PacketBurnt\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"PacketDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"payloadHash\",\"type\":\"bytes32\"}],\"name\":\"PacketNilified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"encodedPayload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sendLibrary\",\"type\":\"address\"}],\"name\":\"PacketSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"payloadHash\",\"type\":\"bytes32\"}],\"name\":\"PacketVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"ReceiveLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLib\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"}],\"name\":\"ReceiveLibraryTimeoutSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"SendLibrarySet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"clear\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"}],\"name\":\"composeQueue\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultReceiveLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultReceiveLibraryTimeout\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultSendLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eid\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_configType\",\"type\":\"uint32\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"getReceiveLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRegisteredLibraries\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSendContext\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"getSendLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"inboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"}],\"name\":\"inboundPayloadHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"initializable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isDefaultSendLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"isRegisteredLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSendingMessage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isSupportedEid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"isValidReceiveLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"lazyInboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzCompose\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lzToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_receiver\",\"type\":\"bytes32\"}],\"name\":\"nextGuid\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"nilify\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_receiver\",\"type\":\"bytes32\"}],\"name\":\"outboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"receiver\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"payInLzToken\",\"type\":\"bool\"}],\"internalType\":\"struct MessagingParams\",\"name\":\"_params\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"quote\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"receiveLibraryTimeout\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"registerLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"receiver\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"payInLzToken\",\"type\":\"bool\"}],\"internalType\":\"struct MessagingParams\",\"name\":\"_params\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"sendCompose\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configType\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"struct SetConfigParam[]\",\"name\":\"_params\",\"type\":\"tuple[]\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_gracePeriod\",\"type\":\"uint256\"}],\"name\":\"setDefaultReceiveLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expiry\",\"type\":\"uint256\"}],\"name\":\"setDefaultReceiveLibraryTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"}],\"name\":\"setDefaultSendLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lzToken\",\"type\":\"address\"}],\"name\":\"setLzToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_gracePeriod\",\"type\":\"uint256\"}],\"name\":\"setReceiveLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expiry\",\"type\":\"uint256\"}],\"name\":\"setReceiveLibraryTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"}],\"name\":\"setSendLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"}],\"name\":\"skip\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"verifiable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"verify\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setSendLibrary(address,uint32,address)\":{\"notice\":\"------------------- OApp interfaces -------------------\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":\"ILayerZeroEndpointV2\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"setSendLibrary(address,uint32,address)":{"notice":"------------------- OApp interfaces -------------------"}},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol":{"ILayerZeroReceiver":{"abi":[{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"}],"name":"allowInitializePath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","nextNonce(uint32,bytes32)":"7d25a05e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":\"ILayerZeroReceiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol":{"IMessageLib":{"abi":[{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_configType","type":"uint32"}],"name":"getConfig","outputs":[{"internalType":"bytes","name":"config","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isSupportedEid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageLibType","outputs":[{"internalType":"enum MessageLibType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint32","name":"configType","type":"uint32"},{"internalType":"bytes","name":"config","type":"bytes"}],"internalType":"struct SetConfigParam[]","name":"_config","type":"tuple[]"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint64","name":"major","type":"uint64"},{"internalType":"uint8","name":"minor","type":"uint8"},{"internalType":"uint8","name":"endpointVersion","type":"uint8"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getConfig(uint32,address,uint32)":"9c33abf7","isSupportedEid(uint32)":"6750cd4c","messageLibType()":"1881d94d","setConfig(address,(uint32,uint32,bytes)[])":"20efd722","supportsInterface(bytes4)":"01ffc9a7","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_configType\",\"type\":\"uint32\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isSupportedEid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageLibType\",\"outputs\":[{\"internalType\":\"enum MessageLibType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configType\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"struct SetConfigParam[]\",\"name\":\"_config\",\"type\":\"tuple[]\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"major\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"minor\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"endpointVersion\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":\"IMessageLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol":{"IMessageLibManager":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"DefaultReceiveLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"oldLib","type":"address"},{"indexed":false,"internalType":"uint256","name":"expiry","type":"uint256"}],"name":"DefaultReceiveLibraryTimeoutSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"DefaultSendLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"LibraryRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"ReceiveLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"oldLib","type":"address"},{"indexed":false,"internalType":"uint256","name":"timeout","type":"uint256"}],"name":"ReceiveLibraryTimeoutSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"SendLibrarySet","type":"event"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultReceiveLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultReceiveLibraryTimeout","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultSendLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint32","name":"_configType","type":"uint32"}],"name":"getConfig","outputs":[{"internalType":"bytes","name":"config","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"getReceiveLibrary","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"bool","name":"isDefault","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRegisteredLibraries","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"getSendLibrary","outputs":[{"internalType":"address","name":"lib","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isDefaultSendLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lib","type":"address"}],"name":"isRegisteredLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isSupportedEid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"}],"name":"isValidReceiveLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"receiveLibraryTimeout","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lib","type":"address"}],"name":"registerLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"address","name":"_lib","type":"address"},{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint32","name":"configType","type":"uint32"},{"internalType":"bytes","name":"config","type":"bytes"}],"internalType":"struct SetConfigParam[]","name":"_params","type":"tuple[]"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"},{"internalType":"uint256","name":"_gracePeriod","type":"uint256"}],"name":"setDefaultReceiveLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint256","name":"_expiry","type":"uint256"}],"name":"setDefaultReceiveLibraryTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"}],"name":"setDefaultSendLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"},{"internalType":"uint256","name":"_gracePeriod","type":"uint256"}],"name":"setReceiveLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint256","name":"_expiry","type":"uint256"}],"name":"setReceiveLibraryTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"}],"name":"setSendLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"defaultReceiveLibrary(uint32)":"6f50a803","defaultReceiveLibraryTimeout(uint32)":"6e83f5bb","defaultSendLibrary(uint32)":"f64be4c7","getConfig(address,address,uint32,uint32)":"2b3197b9","getReceiveLibrary(address,uint32)":"402f8468","getRegisteredLibraries()":"9132e5c3","getSendLibrary(address,uint32)":"b96a277f","isDefaultSendLibrary(address,uint32)":"dc93c8a2","isRegisteredLibrary(address)":"dc706a62","isSupportedEid(uint32)":"6750cd4c","isValidReceiveLibrary(address,uint32,address)":"9d7f9775","receiveLibraryTimeout(address,uint32)":"ef667aa1","registerLibrary(address)":"e8964e81","setConfig(address,address,(uint32,uint32,bytes)[])":"6dbd9f90","setDefaultReceiveLibrary(uint32,address,uint256)":"a718531b","setDefaultReceiveLibraryTimeout(uint32,address,uint256)":"d4b4ec8f","setDefaultSendLibrary(uint32,address)":"aafea312","setReceiveLibrary(address,uint32,address,uint256)":"6a14d715","setReceiveLibraryTimeout(address,uint32,address,uint256)":"183c834f","setSendLibrary(address,uint32,address)":"9535ff30"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"DefaultReceiveLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLib\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"DefaultReceiveLibraryTimeoutSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"DefaultSendLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"LibraryRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"ReceiveLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLib\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"}],\"name\":\"ReceiveLibraryTimeoutSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"SendLibrarySet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultReceiveLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultReceiveLibraryTimeout\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultSendLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_configType\",\"type\":\"uint32\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"getReceiveLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRegisteredLibraries\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"getSendLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isDefaultSendLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"isRegisteredLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isSupportedEid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"isValidReceiveLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"receiveLibraryTimeout\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"registerLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configType\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"struct SetConfigParam[]\",\"name\":\"_params\",\"type\":\"tuple[]\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_gracePeriod\",\"type\":\"uint256\"}],\"name\":\"setDefaultReceiveLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expiry\",\"type\":\"uint256\"}],\"name\":\"setDefaultReceiveLibraryTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"}],\"name\":\"setDefaultSendLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_gracePeriod\",\"type\":\"uint256\"}],\"name\":\"setReceiveLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expiry\",\"type\":\"uint256\"}],\"name\":\"setReceiveLibraryTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"}],\"name\":\"setSendLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setSendLibrary(address,uint32,address)\":{\"notice\":\"------------------- OApp interfaces -------------------\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":\"IMessageLibManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"setSendLibrary(address,uint32,address)":{"notice":"------------------- OApp interfaces -------------------"}},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol":{"IMessagingChannel":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"}],"name":"InboundNonceSkipped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"},{"indexed":false,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PacketBurnt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"},{"indexed":false,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PacketNilified","type":"event"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes32","name":"_payloadHash","type":"bytes32"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eid","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"inboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"}],"name":"inboundPayloadHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"lazyInboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"bytes32","name":"_receiver","type":"bytes32"}],"name":"nextGuid","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes32","name":"_payloadHash","type":"bytes32"}],"name":"nilify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"bytes32","name":"_receiver","type":"bytes32"}],"name":"outboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"}],"name":"skip","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"burn(address,uint32,bytes32,uint64,bytes32)":"40f80683","eid()":"416ecebf","inboundNonce(address,uint32,bytes32)":"a0dd43fc","inboundPayloadHash(address,uint32,bytes32,uint64)":"c9fc7bcd","lazyInboundNonce(address,uint32,bytes32)":"5b17bb70","nextGuid(address,uint32,bytes32)":"aafe5e07","nilify(address,uint32,bytes32,uint64,bytes32)":"2e80fbf3","outboundNonce(address,uint32,bytes32)":"9c6d7340","skip(address,uint32,bytes32,uint64)":"d70b8902"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InboundNonceSkipped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"payloadHash\",\"type\":\"bytes32\"}],\"name\":\"PacketBurnt\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"payloadHash\",\"type\":\"bytes32\"}],\"name\":\"PacketNilified\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eid\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"inboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"}],\"name\":\"inboundPayloadHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"lazyInboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_receiver\",\"type\":\"bytes32\"}],\"name\":\"nextGuid\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"nilify\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_receiver\",\"type\":\"bytes32\"}],\"name\":\"outboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"}],\"name\":\"skip\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":\"IMessagingChannel\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol":{"IMessagingComposer":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"}],"name":"ComposeDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"}],"name":"ComposeSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"extraData","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"LzComposeAlert","type":"event"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"}],"name":"composeQueue","outputs":[{"internalType":"bytes32","name":"messageHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzCompose","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"},{"internalType":"bytes","name":"_message","type":"bytes"}],"name":"sendCompose","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"composeQueue(address,address,bytes32,uint16)":"35d330b0","lzCompose(address,address,bytes32,uint16,bytes,bytes)":"91d20fa1","sendCompose(address,bytes32,uint16,bytes)":"7cb59012"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"}],\"name\":\"ComposeDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"ComposeSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"LzComposeAlert\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"}],\"name\":\"composeQueue\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzCompose\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"sendCompose\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":\"IMessagingComposer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol":{"IMessagingContext":{"abi":[{"inputs":[],"name":"getSendContext","outputs":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSendingMessage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getSendContext()":"14f651a9","isSendingMessage()":"79624ca9"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getSendContext\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSendingMessage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":\"IMessagingContext\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol":{"ISendLib":{"abi":[{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_configType","type":"uint32"}],"name":"getConfig","outputs":[{"internalType":"bytes","name":"config","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isSupportedEid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messageLibType","outputs":[{"internalType":"enum MessageLibType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"receiver","type":"bytes32"},{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Packet","name":"_packet","type":"tuple"},{"internalType":"bytes","name":"_options","type":"bytes"},{"internalType":"bool","name":"_payInLzToken","type":"bool"}],"name":"quote","outputs":[{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"receiver","type":"bytes32"},{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Packet","name":"_packet","type":"tuple"},{"internalType":"bytes","name":"_options","type":"bytes"},{"internalType":"bool","name":"_payInLzToken","type":"bool"}],"name":"send","outputs":[{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"","type":"tuple"},{"internalType":"bytes","name":"encodedPacket","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint32","name":"configType","type":"uint32"},{"internalType":"bytes","name":"config","type":"bytes"}],"internalType":"struct SetConfigParam[]","name":"_config","type":"tuple[]"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint64","name":"major","type":"uint64"},{"internalType":"uint8","name":"minor","type":"uint8"},{"internalType":"uint8","name":"endpointVersion","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lzToken","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawLzTokenFee","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getConfig(uint32,address,uint32)":"9c33abf7","isSupportedEid(uint32)":"6750cd4c","messageLibType()":"1881d94d","quote((uint64,uint32,address,uint32,bytes32,bytes32,bytes),bytes,bool)":"d80e9bd9","send((uint64,uint32,address,uint32,bytes32,bytes32,bytes),bytes,bool)":"4389e58f","setConfig(address,(uint32,uint32,bytes)[])":"20efd722","setTreasury(address)":"f0f44260","supportsInterface(bytes4)":"01ffc9a7","version()":"54fd4d50","withdrawFee(address,uint256)":"fd9be522","withdrawLzTokenFee(address,address,uint256)":"200175f7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_configType\",\"type\":\"uint32\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isSupportedEid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageLibType\",\"outputs\":[{\"internalType\":\"enum MessageLibType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"receiver\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct Packet\",\"name\":\"_packet\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quote\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"receiver\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct Packet\",\"name\":\"_packet\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"encodedPacket\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configType\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"struct SetConfigParam[]\",\"name\":\"_config\",\"type\":\"tuple[]\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_treasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"major\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"minor\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"endpointVersion\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lzToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawLzTokenFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":\"ISendLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol":{"AddressCast":{"abi":[{"inputs":[],"name":"AddressCast_InvalidAddress","type":"error"},{"inputs":[],"name":"AddressCast_InvalidSizeForAddress","type":"error"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9fd6f83f7151bb37237a445fc26d23d9033693b1cec5740757a2e2cb985bef064736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 REVERT PUSH16 0x83F7151BB37237A445FC26D23D903369 EXTCODESIZE SHR 0xEC JUMPI BLOCKHASH PUSH22 0x7A2E2CB985BEF064736F6C634300081C003300000000 ","sourceMap":"64:1401:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;64:1401:8;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d9fd6f83f7151bb37237a445fc26d23d9033693b1cec5740757a2e2cb985bef064736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 REVERT PUSH16 0x83F7151BB37237A445FC26D23D903369 EXTCODESIZE SHR 0xEC JUMPI BLOCKHASH PUSH22 0x7A2E2CB985BEF064736F6C634300081C003300000000 ","sourceMap":"64:1401:8:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"toAddress(bytes calldata)":"infinite","toAddress(bytes32)":"infinite","toBytes(bytes32,uint256)":"infinite","toBytes32(address)":"infinite","toBytes32(bytes calldata)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AddressCast_InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AddressCast_InvalidSizeForAddress\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":\"AddressCast\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol":{"PacketV1Codec":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203ac3df9aca75e7705e45c5d5e7514aeb52d88696b5da47671e8f35bec124def464736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0xC3 0xDF SWAP11 0xCA PUSH22 0xE7705E45C5D5E7514AEB52D88696B5DA47671E8F35BE 0xC1 0x24 0xDE DELEGATECALL PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"179:3486:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;179:3486:9;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203ac3df9aca75e7705e45c5d5e7514aeb52d88696b5da47671e8f35bec124def464736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0xC3 0xDF SWAP11 0xCA PUSH22 0xE7705E45C5D5E7514AEB52D88696B5DA47671E8F35BE 0xC1 0x24 0xDE DELEGATECALL PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"179:3486:9:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"dstEid(bytes calldata)":"infinite","encode(struct Packet memory)":"infinite","encodePacketHeader(struct Packet memory)":"infinite","encodePayload(struct Packet memory)":"infinite","guid(bytes calldata)":"infinite","header(bytes calldata)":"infinite","message(bytes calldata)":"infinite","nonce(bytes calldata)":"infinite","payload(bytes calldata)":"infinite","payloadHash(bytes calldata)":"infinite","receiver(bytes calldata)":"infinite","receiverB20(bytes calldata)":"infinite","sender(bytes calldata)":"infinite","senderAddressB20(bytes calldata)":"infinite","srcEid(bytes calldata)":"infinite","version(bytes calldata)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":\"PacketV1Codec\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nimport { Packet } from \\\"../../interfaces/ISendLib.sol\\\";\\nimport { AddressCast } from \\\"../../libs/AddressCast.sol\\\";\\n\\nlibrary PacketV1Codec {\\n    using AddressCast for address;\\n    using AddressCast for bytes32;\\n\\n    uint8 internal constant PACKET_VERSION = 1;\\n\\n    // header (version + nonce + path)\\n    // version\\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\\n    //    nonce\\n    uint256 private constant NONCE_OFFSET = 1;\\n    //    path\\n    uint256 private constant SRC_EID_OFFSET = 9;\\n    uint256 private constant SENDER_OFFSET = 13;\\n    uint256 private constant DST_EID_OFFSET = 45;\\n    uint256 private constant RECEIVER_OFFSET = 49;\\n    // payload (guid + message)\\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\\n    uint256 private constant MESSAGE_OFFSET = 113;\\n\\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\\n        encodedPacket = abi.encodePacked(\\n            PACKET_VERSION,\\n            _packet.nonce,\\n            _packet.srcEid,\\n            _packet.sender.toBytes32(),\\n            _packet.dstEid,\\n            _packet.receiver,\\n            _packet.guid,\\n            _packet.message\\n        );\\n    }\\n\\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                PACKET_VERSION,\\n                _packet.nonce,\\n                _packet.srcEid,\\n                _packet.sender.toBytes32(),\\n                _packet.dstEid,\\n                _packet.receiver\\n            );\\n    }\\n\\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\\n        return abi.encodePacked(_packet.guid, _packet.message);\\n    }\\n\\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return _packet[0:GUID_OFFSET];\\n    }\\n\\n    function version(bytes calldata _packet) internal pure returns (uint8) {\\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\\n    }\\n\\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\\n    }\\n\\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\\n    }\\n\\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\\n        return sender(_packet).toAddress();\\n    }\\n\\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\\n    }\\n\\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\\n    }\\n\\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\\n        return receiver(_packet).toAddress();\\n    }\\n\\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\\n    }\\n\\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[MESSAGE_OFFSET:]);\\n    }\\n\\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[GUID_OFFSET:]);\\n    }\\n\\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\\n        return keccak256(payload(_packet));\\n    }\\n}\\n\",\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol":{"OApp":{"abi":[{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[],"name":"LzTokenUnavailable","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","type":"error"},{"inputs":[{"internalType":"uint256","name":"msgValue","type":"uint256"}],"name":"NotEnoughNative","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"OnlyEndpoint","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"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":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":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"peer","type":"bytes32"}],"name":"PeerSet","type":"event"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"origin","type":"tuple"}],"name":"allowInitializePath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"","type":"tuple"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"}],"name":"isComposeMsgSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"setPeer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"details":"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.","params":{"origin":"The origin information containing the source endpoint and sender address."},"returns":{"_0":"Whether the path has been initialized."}},"constructor":{"details":"Constructor to initialize the OApp with the provided endpoint and owner.","params":{"_delegate":"The delegate capable of making OApp configurations inside of the endpoint.","_endpoint":"The address of the LOCAL LayerZero endpoint."}},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_sender":"The sender address."},"returns":{"_0":"isSender Is a valid sender."}},"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.","params":{"_executor":"The address of the executor for the received message.","_extraData":"Additional arbitrary data provided by the corresponding executor.","_guid":"The unique identifier for the received LayerZero message.","_message":"The payload of the received message.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"nextNonce(uint32,bytes32)":{"details":"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.","returns":{"nonce":"The next nonce."}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol implementation.","senderVersion":"The version of the OAppSender.sol implementation."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"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."},"setDelegate(address)":{"details":"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.","params":{"_delegate":"The address of the delegate to be set."}},"setPeer(uint32,bytes32)":{"details":"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.","params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"title":"OApp","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","endpoint()":"5e280f11","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","nextNonce(uint32,bytes32)":"7d25a05e","oAppVersion()":"17442b70","owner()":"8da5cb5b","peers(uint32)":"bb0b6a53","renounceOwnership()":"715018a6","setDelegate(address)":"ca5eb5e1","setPeer(uint32,bytes32)":"3400288b","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"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\":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\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"constructor\":{\"details\":\"Constructor to initialize the OApp with the provided endpoint and owner.\",\"params\":{\"_delegate\":\"The delegate capable of making OApp configurations inside of the endpoint.\",\"_endpoint\":\"The address of the LOCAL LayerZero endpoint.\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OApp\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":\"OApp\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the 'MessagingFee' and 'MessagingReceipt' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppSender, MessagingFee, MessagingReceipt } from \\\"./OAppSender.sol\\\";\\n// @dev Import the 'Origin' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppReceiver, Origin } from \\\"./OAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OApp\\n * @dev Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.\\n */\\nabstract contract OApp is OAppSender, OAppReceiver {\\n    /**\\n     * @dev Constructor to initialize the OApp with the provided endpoint and owner.\\n     * @param _endpoint The address of the LOCAL LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(address _endpoint, address _delegate) OAppCore(_endpoint, _delegate) {}\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol implementation.\\n     * @return receiverVersion The version of the OAppReceiver.sol implementation.\\n     */\\n    function oAppVersion()\\n        public\\n        pure\\n        virtual\\n        override(OAppSender, OAppReceiver)\\n        returns (uint64 senderVersion, uint64 receiverVersion)\\n    {\\n        return (SENDER_VERSION, RECEIVER_VERSION);\\n    }\\n}\\n\",\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IOAppReceiver, Origin } from \\\"./interfaces/IOAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppReceiver\\n * @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\\n */\\nabstract contract OAppReceiver is IOAppReceiver, OAppCore {\\n    // Custom error message for when the caller is not the registered endpoint/\\n    error OnlyEndpoint(address addr);\\n\\n    // @dev The version of the OAppReceiver implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant RECEIVER_VERSION = 2;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.\\n     * ie. this is a RECEIVE only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (0, RECEIVER_VERSION);\\n    }\\n\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @dev _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @dev _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata /*_origin*/,\\n        bytes calldata /*_message*/,\\n        address _sender\\n    ) public view virtual returns (bool) {\\n        return _sender == address(this);\\n    }\\n\\n    /**\\n     * @notice Checks if the path initialization is allowed based on the provided origin.\\n     * @param origin The origin information containing the source endpoint and sender address.\\n     * @return Whether the path has been initialized.\\n     *\\n     * @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.\\n     * @dev This defaults to assuming if a peer has been set, its initialized.\\n     * Can be overridden by the OApp if there is other logic to determine this.\\n     */\\n    function allowInitializePath(Origin calldata origin) public view virtual returns (bool) {\\n        return peers[origin.srcEid] == origin.sender;\\n    }\\n\\n    /**\\n     * @notice Retrieves the next nonce for a given source endpoint and sender address.\\n     * @dev _srcEid The source endpoint ID.\\n     * @dev _sender The sender address.\\n     * @return nonce The next nonce.\\n     *\\n     * @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.\\n     * @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.\\n     * @dev This is also enforced by the OApp.\\n     * @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\\n     */\\n    function nextNonce(uint32 /*_srcEid*/, bytes32 /*_sender*/) public view virtual returns (uint64 nonce) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Entry point for receiving messages or packets from the endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The payload of the received message.\\n     * @param _executor The address of the executor for the received message.\\n     * @param _extraData Additional arbitrary data provided by the corresponding executor.\\n     *\\n     * @dev Entry point for receiving msg/packet from the LayerZero endpoint.\\n     */\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) public payable virtual {\\n        // Ensures that only the endpoint can attempt to lzReceive() messages to this OApp.\\n        if (address(endpoint) != msg.sender) revert OnlyEndpoint(msg.sender);\\n\\n        // Ensure that the sender matches the expected peer for the source endpoint.\\n        if (_getPeerOrRevert(_origin.srcEid) != _origin.sender) revert OnlyPeer(_origin.srcEid, _origin.sender);\\n\\n        // Call the internal OApp implementation of lzReceive.\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n}\\n\",\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { SafeERC20, IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport { MessagingParams, MessagingFee, MessagingReceipt } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppSender\\n * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\\n */\\nabstract contract OAppSender is OAppCore {\\n    using SafeERC20 for IERC20;\\n\\n    // Custom error messages\\n    error NotEnoughNative(uint256 msgValue);\\n    error LzTokenUnavailable();\\n\\n    // @dev The version of the OAppSender implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant SENDER_VERSION = 1;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\\n     * ie. this is a SEND only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (SENDER_VERSION, 0);\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\\n     * @return fee The calculated MessagingFee for the message.\\n     *      - nativeFee: The native fee for the message.\\n     *      - lzTokenFee: The LZ token fee for the message.\\n     */\\n    function _quote(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        bool _payInLzToken\\n    ) internal view virtual returns (MessagingFee memory fee) {\\n        return\\n            endpoint.quote(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),\\n                address(this)\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _fee The calculated LayerZero fee for the message.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess fee values sent to the endpoint.\\n     * @return receipt The receipt for the sent message.\\n     *      - guid: The unique identifier for the sent message.\\n     *      - nonce: The nonce of the sent message.\\n     *      - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _lzSend(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        MessagingFee memory _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory receipt) {\\n        // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.\\n        uint256 messageValue = _payNative(_fee.nativeFee);\\n        if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);\\n\\n        return\\n            // solhint-disable-next-line check-send-result\\n            endpoint.send{ value: messageValue }(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),\\n                _refundAddress\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the native fee associated with the message.\\n     * @param _nativeFee The native fee to be paid.\\n     * @return nativeFee The amount of native currency paid.\\n     *\\n     * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\\n     * this will need to be overridden because msg.value would contain multiple lzFees.\\n     * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\\n     * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\\n     * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.\\n     */\\n    function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {\\n        if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);\\n        return _nativeFee;\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the LZ token fee associated with the message.\\n     * @param _lzTokenFee The LZ token fee to be paid.\\n     *\\n     * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\\n     * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().\\n     */\\n    function _payLzToken(uint256 _lzTokenFee) internal virtual {\\n        // @dev Cannot cache the token because it is not immutable in the endpoint.\\n        address lzToken = endpoint.lzToken();\\n        if (lzToken == address(0)) revert LzTokenUnavailable();\\n\\n        // Pay LZ token fee by sending tokens to the endpoint.\\n        IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);\\n    }\\n}\\n\",\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroReceiver, Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata _origin,\\n        bytes calldata _message,\\n        address _sender\\n    ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\nimport {IERC1363} from \\\"../../../interfaces/IERC1363.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    /**\\n     * @dev An operation with an ERC-20 token failed.\\n     */\\n    error SafeERC20FailedOperation(address token);\\n\\n    /**\\n     * @dev Indicates a failed `decreaseAllowance` request.\\n     */\\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        forceApprove(token, spender, oldAllowance + value);\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\n     * value, non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\n        unchecked {\\n            uint256 currentAllowance = token.allowance(address(this), spender);\\n            if (currentAllowance < requestedDecrease) {\\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\n            }\\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     *\\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\\n     * only sets the \\\"standard\\\" allowance. Any temporary allowance will remain active, in addition to the value being\\n     * set here.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            safeTransfer(token, to, value);\\n        } else if (!token.transferAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferFromAndCallRelaxed(\\n        IERC1363 token,\\n        address from,\\n        address to,\\n        uint256 value,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length == 0) {\\n            safeTransferFrom(token, from, to, value);\\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\\n     * once without retrying, and relies on the returned value to be true.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            forceApprove(token, to, value);\\n        } else if (!token.approveAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            // bubble errors\\n            if iszero(success) {\\n                let ptr := mload(0x40)\\n                returndatacopy(ptr, 0, returndatasize())\\n                revert(ptr, returndatasize())\\n            }\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n\\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        bool success;\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\\n    }\\n}\\n\",\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol:OApp","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1390,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol:OApp","label":"peers","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_bytes32)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_uint32,t_bytes32)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"notice":"Checks if the path initialization is allowed based on the provided origin."},"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."},"nextNonce(uint32,bytes32)":{"notice":"Retrieves the next nonce for a given source endpoint and sender address."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol":{"OAppCore":{"abi":[{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"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":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":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"peer","type":"bytes32"}],"name":"PeerSet","type":"event"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"setPeer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Abstract contract implementing the IOAppCore interface with basic OApp configurations.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"constructor":{"details":"Constructor to initialize the OAppCore with the provided endpoint and delegate.The delegate typically should be set as the owner of the contract.","params":{"_delegate":"The delegate capable of making OApp configurations inside of the endpoint.","_endpoint":"The address of the LOCAL Layer Zero endpoint."}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol contract.","senderVersion":"The version of the OAppSender.sol contract."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"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."},"setDelegate(address)":{"details":"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.","params":{"_delegate":"The address of the delegate to be set."}},"setPeer(uint32,bytes32)":{"details":"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.","params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"stateVariables":{"endpoint":{"return":"The LayerZero endpoint as an interface.","returns":{"_0":"The LayerZero endpoint as an interface."}},"peers":{"params":{"_eid":"The endpoint ID."},"return":"peer The peer address (OApp instance) associated with the corresponding endpoint.","returns":{"peer":"The peer address (OApp instance) associated with the corresponding endpoint."}}},"title":"OAppCore","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"endpoint()":"5e280f11","oAppVersion()":"17442b70","owner()":"8da5cb5b","peers(uint32)":"bb0b6a53","renounceOwnership()":"715018a6","setDelegate(address)":"ca5eb5e1","setPeer(uint32,bytes32)":"3400288b","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"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\":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\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract implementing the IOAppCore interface with basic OApp configurations.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Constructor to initialize the OAppCore with the provided endpoint and delegate.The delegate typically should be set as the owner of the contract.\",\"params\":{\"_delegate\":\"The delegate capable of making OApp configurations inside of the endpoint.\",\"_endpoint\":\"The address of the LOCAL Layer Zero endpoint.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"endpoint\":{\"return\":\"The LayerZero endpoint as an interface.\",\"returns\":{\"_0\":\"The LayerZero endpoint as an interface.\"}},\"peers\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"return\":\"peer The peer address (OApp instance) associated with the corresponding endpoint.\",\"returns\":{\"peer\":\"The peer address (OApp instance) associated with the corresponding endpoint.\"}}},\"title\":\"OAppCore\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":\"OAppCore\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol:OAppCore","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1390,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol:OAppCore","label":"peers","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_bytes32)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_uint32,t_bytes32)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol":{"OAppReceiver":{"abi":[{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"OnlyEndpoint","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"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":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":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"peer","type":"bytes32"}],"name":"PeerSet","type":"event"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"origin","type":"tuple"}],"name":"allowInitializePath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"","type":"tuple"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"}],"name":"isComposeMsgSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"setPeer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"details":"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.","params":{"origin":"The origin information containing the source endpoint and sender address."},"returns":{"_0":"Whether the path has been initialized."}},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_sender":"The sender address."},"returns":{"_0":"isSender Is a valid sender."}},"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.","params":{"_executor":"The address of the executor for the received message.","_extraData":"Additional arbitrary data provided by the corresponding executor.","_guid":"The unique identifier for the received LayerZero message.","_message":"The payload of the received message.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"nextNonce(uint32,bytes32)":{"details":"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.","returns":{"nonce":"The next nonce."}},"oAppVersion()":{"details":"Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented. ie. this is a RECEIVE only OApp.If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.","returns":{"receiverVersion":"The version of the OAppReceiver.sol contract.","senderVersion":"The version of the OAppSender.sol contract."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"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."},"setDelegate(address)":{"details":"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.","params":{"_delegate":"The address of the delegate to be set."}},"setPeer(uint32,bytes32)":{"details":"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.","params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"title":"OAppReceiver","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","endpoint()":"5e280f11","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","nextNonce(uint32,bytes32)":"7d25a05e","oAppVersion()":"17442b70","owner()":"8da5cb5b","peers(uint32)":"bb0b6a53","renounceOwnership()":"715018a6","setDelegate(address)":"ca5eb5e1","setPeer(uint32,bytes32)":"3400288b","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"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\":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\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oAppVersion()\":{\"details\":\"Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented. ie. this is a RECEIVE only OApp.If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\",\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OAppReceiver\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":\"OAppReceiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IOAppReceiver, Origin } from \\\"./interfaces/IOAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppReceiver\\n * @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\\n */\\nabstract contract OAppReceiver is IOAppReceiver, OAppCore {\\n    // Custom error message for when the caller is not the registered endpoint/\\n    error OnlyEndpoint(address addr);\\n\\n    // @dev The version of the OAppReceiver implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant RECEIVER_VERSION = 2;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.\\n     * ie. this is a RECEIVE only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (0, RECEIVER_VERSION);\\n    }\\n\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @dev _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @dev _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata /*_origin*/,\\n        bytes calldata /*_message*/,\\n        address _sender\\n    ) public view virtual returns (bool) {\\n        return _sender == address(this);\\n    }\\n\\n    /**\\n     * @notice Checks if the path initialization is allowed based on the provided origin.\\n     * @param origin The origin information containing the source endpoint and sender address.\\n     * @return Whether the path has been initialized.\\n     *\\n     * @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.\\n     * @dev This defaults to assuming if a peer has been set, its initialized.\\n     * Can be overridden by the OApp if there is other logic to determine this.\\n     */\\n    function allowInitializePath(Origin calldata origin) public view virtual returns (bool) {\\n        return peers[origin.srcEid] == origin.sender;\\n    }\\n\\n    /**\\n     * @notice Retrieves the next nonce for a given source endpoint and sender address.\\n     * @dev _srcEid The source endpoint ID.\\n     * @dev _sender The sender address.\\n     * @return nonce The next nonce.\\n     *\\n     * @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.\\n     * @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.\\n     * @dev This is also enforced by the OApp.\\n     * @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\\n     */\\n    function nextNonce(uint32 /*_srcEid*/, bytes32 /*_sender*/) public view virtual returns (uint64 nonce) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Entry point for receiving messages or packets from the endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The payload of the received message.\\n     * @param _executor The address of the executor for the received message.\\n     * @param _extraData Additional arbitrary data provided by the corresponding executor.\\n     *\\n     * @dev Entry point for receiving msg/packet from the LayerZero endpoint.\\n     */\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) public payable virtual {\\n        // Ensures that only the endpoint can attempt to lzReceive() messages to this OApp.\\n        if (address(endpoint) != msg.sender) revert OnlyEndpoint(msg.sender);\\n\\n        // Ensure that the sender matches the expected peer for the source endpoint.\\n        if (_getPeerOrRevert(_origin.srcEid) != _origin.sender) revert OnlyPeer(_origin.srcEid, _origin.sender);\\n\\n        // Call the internal OApp implementation of lzReceive.\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n}\\n\",\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroReceiver, Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata _origin,\\n        bytes calldata _message,\\n        address _sender\\n    ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol:OAppReceiver","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1390,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol:OAppReceiver","label":"peers","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_bytes32)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_uint32,t_bytes32)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"notice":"Checks if the path initialization is allowed based on the provided origin."},"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."},"nextNonce(uint32,bytes32)":{"notice":"Retrieves the next nonce for a given source endpoint and sender address."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol":{"OAppSender":{"abi":[{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[],"name":"LzTokenUnavailable","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","type":"error"},{"inputs":[{"internalType":"uint256","name":"msgValue","type":"uint256"}],"name":"NotEnoughNative","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"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":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":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"peer","type":"bytes32"}],"name":"PeerSet","type":"event"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"setPeer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"oAppVersion()":{"details":"Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented. ie. this is a SEND only OApp.If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions","returns":{"receiverVersion":"The version of the OAppReceiver.sol contract.","senderVersion":"The version of the OAppSender.sol contract."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"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."},"setDelegate(address)":{"details":"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.","params":{"_delegate":"The address of the delegate to be set."}},"setPeer(uint32,bytes32)":{"details":"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.","params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"title":"OAppSender","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"endpoint()":"5e280f11","oAppVersion()":"17442b70","owner()":"8da5cb5b","peers(uint32)":"bb0b6a53","renounceOwnership()":"715018a6","setDelegate(address)":"ca5eb5e1","setPeer(uint32,bytes32)":"3400288b","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"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\":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\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"oAppVersion()\":{\"details\":\"Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented. ie. this is a SEND only OApp.If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\",\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OAppSender\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":\"OAppSender\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { SafeERC20, IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport { MessagingParams, MessagingFee, MessagingReceipt } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppSender\\n * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\\n */\\nabstract contract OAppSender is OAppCore {\\n    using SafeERC20 for IERC20;\\n\\n    // Custom error messages\\n    error NotEnoughNative(uint256 msgValue);\\n    error LzTokenUnavailable();\\n\\n    // @dev The version of the OAppSender implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant SENDER_VERSION = 1;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\\n     * ie. this is a SEND only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (SENDER_VERSION, 0);\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\\n     * @return fee The calculated MessagingFee for the message.\\n     *      - nativeFee: The native fee for the message.\\n     *      - lzTokenFee: The LZ token fee for the message.\\n     */\\n    function _quote(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        bool _payInLzToken\\n    ) internal view virtual returns (MessagingFee memory fee) {\\n        return\\n            endpoint.quote(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),\\n                address(this)\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _fee The calculated LayerZero fee for the message.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess fee values sent to the endpoint.\\n     * @return receipt The receipt for the sent message.\\n     *      - guid: The unique identifier for the sent message.\\n     *      - nonce: The nonce of the sent message.\\n     *      - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _lzSend(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        MessagingFee memory _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory receipt) {\\n        // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.\\n        uint256 messageValue = _payNative(_fee.nativeFee);\\n        if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);\\n\\n        return\\n            // solhint-disable-next-line check-send-result\\n            endpoint.send{ value: messageValue }(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),\\n                _refundAddress\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the native fee associated with the message.\\n     * @param _nativeFee The native fee to be paid.\\n     * @return nativeFee The amount of native currency paid.\\n     *\\n     * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\\n     * this will need to be overridden because msg.value would contain multiple lzFees.\\n     * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\\n     * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\\n     * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.\\n     */\\n    function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {\\n        if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);\\n        return _nativeFee;\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the LZ token fee associated with the message.\\n     * @param _lzTokenFee The LZ token fee to be paid.\\n     *\\n     * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\\n     * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().\\n     */\\n    function _payLzToken(uint256 _lzTokenFee) internal virtual {\\n        // @dev Cannot cache the token because it is not immutable in the endpoint.\\n        address lzToken = endpoint.lzToken();\\n        if (lzToken == address(0)) revert LzTokenUnavailable();\\n\\n        // Pay LZ token fee by sending tokens to the endpoint.\\n        IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);\\n    }\\n}\\n\",\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\nimport {IERC1363} from \\\"../../../interfaces/IERC1363.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    /**\\n     * @dev An operation with an ERC-20 token failed.\\n     */\\n    error SafeERC20FailedOperation(address token);\\n\\n    /**\\n     * @dev Indicates a failed `decreaseAllowance` request.\\n     */\\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        forceApprove(token, spender, oldAllowance + value);\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\n     * value, non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\n        unchecked {\\n            uint256 currentAllowance = token.allowance(address(this), spender);\\n            if (currentAllowance < requestedDecrease) {\\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\n            }\\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     *\\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\\n     * only sets the \\\"standard\\\" allowance. Any temporary allowance will remain active, in addition to the value being\\n     * set here.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            safeTransfer(token, to, value);\\n        } else if (!token.transferAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferFromAndCallRelaxed(\\n        IERC1363 token,\\n        address from,\\n        address to,\\n        uint256 value,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length == 0) {\\n            safeTransferFrom(token, from, to, value);\\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\\n     * once without retrying, and relies on the returned value to be true.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            forceApprove(token, to, value);\\n        } else if (!token.approveAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            // bubble errors\\n            if iszero(success) {\\n                let ptr := mload(0x40)\\n                returndatacopy(ptr, 0, returndatasize())\\n                revert(ptr, returndatasize())\\n            }\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n\\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        bool success;\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\\n    }\\n}\\n\",\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol:OAppSender","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1390,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol:OAppSender","label":"peers","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_bytes32)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_mapping(t_uint32,t_bytes32)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol":{"IOAppCore":{"abi":[{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"peer","type":"bytes32"}],"name":"PeerSet","type":"event"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"iEndpoint","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"setPeer","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{"endpoint()":{"returns":{"iEndpoint":"The LayerZero endpoint as an interface."}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol contract.","senderVersion":"The version of the OAppSender.sol contract."}},"peers(uint32)":{"params":{"_eid":"The endpoint ID."},"returns":{"peer":"The peer address (OApp instance) associated with the corresponding endpoint."}},"setDelegate(address)":{"params":{"_delegate":"The address of the delegate to be set."}},"setPeer(uint32,bytes32)":{"params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}}},"title":"IOAppCore","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"endpoint()":"5e280f11","oAppVersion()":"17442b70","peers(uint32)":"bb0b6a53","setDelegate(address)":"ca5eb5e1","setPeer(uint32,bytes32)":"3400288b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"iEndpoint\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"endpoint()\":{\"returns\":{\"iEndpoint\":\"The LayerZero endpoint as an interface.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"peers(uint32)\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"returns\":{\"peer\":\"The peer address (OApp instance) associated with the corresponding endpoint.\"}},\"setDelegate(address)\":{\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}}},\"title\":\"IOAppCore\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp Core.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":\"IOAppCore\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp Core."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol":{"IOAppMsgInspector":{"abi":[{"inputs":[{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"options","type":"bytes"}],"name":"InspectionFailed","type":"error"},{"inputs":[{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"bytes","name":"_options","type":"bytes"}],"name":"inspect","outputs":[{"internalType":"bool","name":"valid","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface for the OApp Message Inspector, allowing examination of message and options contents.","kind":"dev","methods":{"inspect(bytes,bytes)":{"details":"Optionally done as a revert, OR use the boolean provided to handle the failure.","params":{"_message":"The message payload to be inspected.","_options":"Additional options or parameters for inspection."},"returns":{"valid":"A boolean indicating whether the inspection passed (true) or failed (false)."}}},"title":"IOAppMsgInspector","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"inspect(bytes,bytes)":"043a78eb"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InspectionFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_options\",\"type\":\"bytes\"}],\"name\":\"inspect\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the OApp Message Inspector, allowing examination of message and options contents.\",\"kind\":\"dev\",\"methods\":{\"inspect(bytes,bytes)\":{\"details\":\"Optionally done as a revert, OR use the boolean provided to handle the failure.\",\"params\":{\"_message\":\"The message payload to be inspected.\",\"_options\":\"Additional options or parameters for inspection.\"},\"returns\":{\"valid\":\"A boolean indicating whether the inspection passed (true) or failed (false).\"}}},\"title\":\"IOAppMsgInspector\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"inspect(bytes,bytes)\":{\"notice\":\"Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":\"IOAppMsgInspector\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title IOAppMsgInspector\\n * @dev Interface for the OApp Message Inspector, allowing examination of message and options contents.\\n */\\ninterface IOAppMsgInspector {\\n    // Custom error message for inspection failure\\n    error InspectionFailed(bytes message, bytes options);\\n\\n    /**\\n     * @notice Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid.\\n     * @param _message The message payload to be inspected.\\n     * @param _options Additional options or parameters for inspection.\\n     * @return valid A boolean indicating whether the inspection passed (true) or failed (false).\\n     *\\n     * @dev Optionally done as a revert, OR use the boolean provided to handle the failure.\\n     */\\n    function inspect(bytes calldata _message, bytes calldata _options) external view returns (bool valid);\\n}\\n\",\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"inspect(bytes,bytes)":{"notice":"Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol":{"IOAppOptionsType3":{"abi":[{"inputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"name":"InvalidOptions","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"indexed":false,"internalType":"struct EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"EnforcedOptionSet","type":"event"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint16","name":"_msgType","type":"uint16"},{"internalType":"bytes","name":"_extraOptions","type":"bytes"}],"name":"combineOptions","outputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"internalType":"struct EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"setEnforcedOptions","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.","kind":"dev","methods":{"combineOptions(uint32,uint16,bytes)":{"params":{"_eid":"The endpoint ID.","_extraOptions":"Additional options passed by the caller.","_msgType":"The OApp message type."},"returns":{"options":"The combination of caller specified options AND enforced options."}},"setEnforcedOptions((uint32,uint16,bytes)[])":{"params":{"_enforcedOptions":"An array of EnforcedOptionParam structures specifying enforced options."}}},"title":"IOAppOptionsType3","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"combineOptions(uint32,uint16,bytes)":"bc70b354","setEnforcedOptions((uint32,uint16,bytes)[])":"b98bd070"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\",\"kind\":\"dev\",\"methods\":{\"combineOptions(uint32,uint16,bytes)\":{\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OApp message type.\"},\"returns\":{\"options\":\"The combination of caller specified options AND enforced options.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}}},\"title\":\"IOAppOptionsType3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"notice\":\"Sets enforced options for specific endpoint and message type combinations.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":\"IOAppOptionsType3\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Struct representing enforced option parameters.\\n */\\nstruct EnforcedOptionParam {\\n    uint32 eid; // Endpoint ID\\n    uint16 msgType; // Message Type\\n    bytes options; // Additional options\\n}\\n\\n/**\\n * @title IOAppOptionsType3\\n * @dev Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\\n */\\ninterface IOAppOptionsType3 {\\n    // Custom error message for invalid options\\n    error InvalidOptions(bytes options);\\n\\n    // Event emitted when enforced options are set\\n    event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\\n\\n    /**\\n     * @notice Sets enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OApp message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) external view returns (bytes memory options);\\n}\\n\",\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"combineOptions(uint32,uint16,bytes)":{"notice":"Combines options for a given endpoint and message type."},"setEnforcedOptions((uint32,uint16,bytes)[])":{"notice":"Sets enforced options for specific endpoint and message type combinations."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol":{"IOAppReceiver":{"abi":[{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"}],"name":"allowInitializePath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"}],"name":"isComposeMsgSender","outputs":[{"internalType":"bool","name":"isSender","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_message":"The lzReceive payload.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.","_sender":"The sender address."},"returns":{"isSender":"Is a valid sender."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","nextNonce(uint32,bytes32)":"7d25a05e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSender\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_message\":\"The lzReceive payload.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\",\"_sender\":\"The sender address.\"},\"returns\":{\"isSender\":\"Is a valid sender.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":\"IOAppReceiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroReceiver, Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata _origin,\\n        bytes calldata _message,\\n        address _sender\\n    ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol":{"OAppOptionsType3":{"abi":[{"inputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"name":"InvalidOptions","type":"error"},{"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":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"indexed":false,"internalType":"struct EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"EnforcedOptionSet","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"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint16","name":"_msgType","type":"uint16"},{"internalType":"bytes","name":"_extraOptions","type":"bytes"}],"name":"combineOptions","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"}],"name":"enforcedOptions","outputs":[{"internalType":"bytes","name":"enforcedOption","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"internalType":"struct EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"setEnforcedOptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"combineOptions(uint32,uint16,bytes)":{"details":"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.","params":{"_eid":"The endpoint ID.","_extraOptions":"Additional options passed by the caller.","_msgType":"The OAPP message type."},"returns":{"_0":"options The combination of caller specified options AND enforced options."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"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."},"setEnforcedOptions((uint32,uint16,bytes)[])":{"details":"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().","params":{"_enforcedOptions":"An array of EnforcedOptionParam structures specifying enforced options."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"title":"OAppOptionsType3","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"combineOptions(uint32,uint16,bytes)":"bc70b354","enforcedOptions(uint32,uint16)":"5535d461","owner()":"8da5cb5b","renounceOwnership()":"715018a6","setEnforcedOptions((uint32,uint16,bytes)[])":"b98bd070","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"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\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"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\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"enforcedOption\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"combineOptions(uint32,uint16,bytes)\":{\"details\":\"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OAPP message type.\"},\"returns\":{\"_0\":\"options The combination of caller specified options AND enforced options.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\",\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OAppOptionsType3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":\"OAppOptionsType3\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Struct representing enforced option parameters.\\n */\\nstruct EnforcedOptionParam {\\n    uint32 eid; // Endpoint ID\\n    uint16 msgType; // Message Type\\n    bytes options; // Additional options\\n}\\n\\n/**\\n * @title IOAppOptionsType3\\n * @dev Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\\n */\\ninterface IOAppOptionsType3 {\\n    // Custom error message for invalid options\\n    error InvalidOptions(bytes options);\\n\\n    // Event emitted when enforced options are set\\n    event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\\n\\n    /**\\n     * @notice Sets enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OApp message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) external view returns (bytes memory options);\\n}\\n\",\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppOptionsType3, EnforcedOptionParam } from \\\"../interfaces/IOAppOptionsType3.sol\\\";\\n\\n/**\\n * @title OAppOptionsType3\\n * @dev Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.\\n */\\nabstract contract OAppOptionsType3 is IOAppOptionsType3, Ownable {\\n    uint16 internal constant OPTION_TYPE_3 = 3;\\n\\n    // @dev The \\\"msgType\\\" should be defined in the child contract.\\n    mapping(uint32 eid => mapping(uint16 msgType => bytes enforcedOption)) public enforcedOptions;\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) public virtual onlyOwner {\\n        _setEnforcedOptions(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function _setEnforcedOptions(EnforcedOptionParam[] memory _enforcedOptions) internal virtual {\\n        for (uint256 i = 0; i < _enforcedOptions.length; i++) {\\n            // @dev Enforced options are only available for optionType 3, as type 1 and 2 dont support combining.\\n            _assertOptionsType3(_enforcedOptions[i].options);\\n            enforcedOptions[_enforcedOptions[i].eid][_enforcedOptions[i].msgType] = _enforcedOptions[i].options;\\n        }\\n\\n        emit EnforcedOptionSet(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OAPP message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     *\\n     * @dev If there is an enforced lzReceive option:\\n     * - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether}\\n     * - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.\\n     * @dev This presence of duplicated options is handled off-chain in the verifier/executor.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) public view virtual returns (bytes memory) {\\n        bytes memory enforced = enforcedOptions[_eid][_msgType];\\n\\n        // No enforced options, pass whatever the caller supplied, even if it's empty or legacy type 1/2 options.\\n        if (enforced.length == 0) return _extraOptions;\\n\\n        // No caller options, return enforced\\n        if (_extraOptions.length == 0) return enforced;\\n\\n        // @dev If caller provided _extraOptions, must be type 3 as its the ONLY type that can be combined.\\n        if (_extraOptions.length >= 2) {\\n            _assertOptionsType3(_extraOptions);\\n            // @dev Remove the first 2 bytes containing the type from the _extraOptions and combine with enforced.\\n            return bytes.concat(enforced, _extraOptions[2:]);\\n        }\\n\\n        // No valid set of options was found.\\n        revert InvalidOptions(_extraOptions);\\n    }\\n\\n    /**\\n     * @dev Internal function to assert that options are of type 3.\\n     * @param _options The options to be checked.\\n     */\\n    function _assertOptionsType3(bytes memory _options) internal pure virtual {\\n        uint16 optionsType;\\n        assembly {\\n            optionsType := mload(add(_options, 2))\\n        }\\n        if (optionsType != OPTION_TYPE_3) revert InvalidOptions(_options);\\n    }\\n}\\n\",\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol:OAppOptionsType3","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":2006,"contract":"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol:OAppOptionsType3","label":"enforcedOptions","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_uint16,t_bytes_storage)":{"encoding":"mapping","key":"t_uint16","label":"mapping(uint16 => bytes)","numberOfBytes":"32","value":"t_bytes_storage"},"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => mapping(uint16 => bytes))","numberOfBytes":"32","value":"t_mapping(t_uint16,t_bytes_storage)"},"t_uint16":{"encoding":"inplace","label":"uint16","numberOfBytes":"2"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"combineOptions(uint32,uint16,bytes)":{"notice":"Combines options for a given endpoint and message type."}},"version":1}}},"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol":{"OAppPreCrimeSimulator":{"abi":[{"inputs":[],"name":"OnlySelf","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"name":"SimulationResult","type":"error"},{"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":"address","name":"preCrimeAddress","type":"address"}],"name":"PreCrimeSet","type":"event"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"isPeer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"origin","type":"tuple"},{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"internalType":"struct InboundPacket[]","name":"_packets","type":"tuple[]"}],"name":"lzReceiveAndRevert","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceiveSimulate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"oApp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preCrime","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_preCrime","type":"address"}],"name":"setPreCrime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Abstract contract serving as the base for preCrime simulation functionality in an OApp.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"events":{"PreCrimeSet(address)":{"details":"Emitted when the preCrime contract address is set.","params":{"preCrimeAddress":"The address of the preCrime contract."}}},"kind":"dev","methods":{"isPeer(uint32,bytes32)":{"details":"checks if the specified peer is considered 'trusted' by the OApp.","params":{"_eid":"The endpoint Id to check.","_peer":"The peer to check."},"returns":{"_0":"Whether the peer passed is considered 'trusted' by the OApp."}},"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":{"details":"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.","params":{"_packets":"An array of InboundPacket objects representing received packets to be delivered."}},"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.","params":{"_executor":"The executor address for the packet.","_extraData":"Additional data for the packet.","_guid":"The unique identifier of the packet.","_message":"The message payload of the packet.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"oApp()":{"details":"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.","returns":{"_0":"The address of the OApp contract."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"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."},"setPreCrime(address)":{"details":"Sets the preCrime contract address.","params":{"_preCrime":"The address of the preCrime contract."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"stateVariables":{"preCrime":{"details":"Retrieves the address of the preCrime contract implementation.","return":"The address of the preCrime contract.","returns":{"_0":"The address of the preCrime contract."}}},"title":"OAppPreCrimeSimulator","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isPeer(uint32,bytes32)":"5a0dfe4d","lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":"bd815db0","lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"d045a0dc","oApp()":"52ae2879","owner()":"8da5cb5b","preCrime()":"b731ea0a","renounceOwnership()":"715018a6","setPreCrime(address)":"d4243885","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"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\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"isPeer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct InboundPacket[]\",\"name\":\"_packets\",\"type\":\"tuple[]\"}],\"name\":\"lzReceiveAndRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceiveSimulate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract serving as the base for preCrime simulation functionality in an OApp.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}}},\"kind\":\"dev\",\"methods\":{\"isPeer(uint32,bytes32)\":{\"details\":\"checks if the specified peer is considered 'trusted' by the OApp.\",\"params\":{\"_eid\":\"The endpoint Id to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"stateVariables\":{\"preCrime\":{\"details\":\"Retrieves the address of the preCrime contract implementation.\",\"return\":\"The address of the preCrime contract.\",\"returns\":{\"_0\":\"The address of the preCrime contract.\"}}},\"title\":\"OAppPreCrimeSimulator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":\"OAppPreCrimeSimulator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nimport { Packet } from \\\"../../interfaces/ISendLib.sol\\\";\\nimport { AddressCast } from \\\"../../libs/AddressCast.sol\\\";\\n\\nlibrary PacketV1Codec {\\n    using AddressCast for address;\\n    using AddressCast for bytes32;\\n\\n    uint8 internal constant PACKET_VERSION = 1;\\n\\n    // header (version + nonce + path)\\n    // version\\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\\n    //    nonce\\n    uint256 private constant NONCE_OFFSET = 1;\\n    //    path\\n    uint256 private constant SRC_EID_OFFSET = 9;\\n    uint256 private constant SENDER_OFFSET = 13;\\n    uint256 private constant DST_EID_OFFSET = 45;\\n    uint256 private constant RECEIVER_OFFSET = 49;\\n    // payload (guid + message)\\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\\n    uint256 private constant MESSAGE_OFFSET = 113;\\n\\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\\n        encodedPacket = abi.encodePacked(\\n            PACKET_VERSION,\\n            _packet.nonce,\\n            _packet.srcEid,\\n            _packet.sender.toBytes32(),\\n            _packet.dstEid,\\n            _packet.receiver,\\n            _packet.guid,\\n            _packet.message\\n        );\\n    }\\n\\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                PACKET_VERSION,\\n                _packet.nonce,\\n                _packet.srcEid,\\n                _packet.sender.toBytes32(),\\n                _packet.dstEid,\\n                _packet.receiver\\n            );\\n    }\\n\\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\\n        return abi.encodePacked(_packet.guid, _packet.message);\\n    }\\n\\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return _packet[0:GUID_OFFSET];\\n    }\\n\\n    function version(bytes calldata _packet) internal pure returns (uint8) {\\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\\n    }\\n\\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\\n    }\\n\\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\\n    }\\n\\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\\n        return sender(_packet).toAddress();\\n    }\\n\\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\\n    }\\n\\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\\n    }\\n\\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\\n        return receiver(_packet).toAddress();\\n    }\\n\\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\\n    }\\n\\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[MESSAGE_OFFSET:]);\\n    }\\n\\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[GUID_OFFSET:]);\\n    }\\n\\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\\n        return keccak256(payload(_packet));\\n    }\\n}\\n\",\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IPreCrime } from \\\"./interfaces/IPreCrime.sol\\\";\\nimport { IOAppPreCrimeSimulator, InboundPacket, Origin } from \\\"./interfaces/IOAppPreCrimeSimulator.sol\\\";\\n\\n/**\\n * @title OAppPreCrimeSimulator\\n * @dev Abstract contract serving as the base for preCrime simulation functionality in an OApp.\\n */\\nabstract contract OAppPreCrimeSimulator is IOAppPreCrimeSimulator, Ownable {\\n    // The address of the preCrime implementation.\\n    address public preCrime;\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     *\\n     * @dev The simulator contract is the base contract for the OApp by default.\\n     * @dev If the simulator is a separate contract, override this function.\\n     */\\n    function oApp() external view virtual returns (address) {\\n        return address(this);\\n    }\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) public virtual onlyOwner {\\n        preCrime = _preCrime;\\n        emit PreCrimeSet(_preCrime);\\n    }\\n\\n    /**\\n     * @dev Interface for pre-crime simulations. Always reverts at the end with the simulation results.\\n     * @param _packets An array of InboundPacket objects representing received packets to be delivered.\\n     *\\n     * @dev WARNING: MUST revert at the end with the simulation results.\\n     * @dev Gives the preCrime implementation the ability to mock sending packets to the lzReceive function,\\n     * WITHOUT actually executing them.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) public payable virtual {\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            InboundPacket calldata packet = _packets[i];\\n\\n            // Ignore packets that are not from trusted peers.\\n            if (!isPeer(packet.origin.srcEid, packet.origin.sender)) continue;\\n\\n            // @dev Because a verifier is calling this function, it doesnt have access to executor params:\\n            //  - address _executor\\n            //  - bytes calldata _extraData\\n            // preCrime will NOT work for OApps that rely on these two parameters inside of their _lzReceive().\\n            // They are instead stubbed to default values, address(0) and bytes(\\\"\\\")\\n            // @dev Calling this.lzReceiveSimulate removes ability for assembly return 0 callstack exit,\\n            // which would cause the revert to be ignored.\\n            this.lzReceiveSimulate{ value: packet.value }(\\n                packet.origin,\\n                packet.guid,\\n                packet.message,\\n                packet.executor,\\n                packet.extraData\\n            );\\n        }\\n\\n        // @dev Revert with the simulation results. msg.sender must implement IPreCrime.buildSimulationResult().\\n        revert SimulationResult(IPreCrime(msg.sender).buildSimulationResult());\\n    }\\n\\n    /**\\n     * @dev Is effectively an internal function because msg.sender must be address(this).\\n     * Allows resetting the call stack for 'internal' calls.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier of the packet.\\n     * @param _message The message payload of the packet.\\n     * @param _executor The executor address for the packet.\\n     * @param _extraData Additional data for the packet.\\n     */\\n    function lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable virtual {\\n        // @dev Ensure ONLY can be called 'internally'.\\n        if (msg.sender != address(this)) revert OnlySelf();\\n        _lzReceiveSimulate(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The GUID of the LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual returns (bool);\\n}\\n\",\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the Origin so it's exposed to OAppPreCrimeSimulator implementers.\\n// solhint-disable-next-line no-unused-import\\nimport { InboundPacket, Origin } from \\\"../libs/Packet.sol\\\";\\n\\n/**\\n * @title IOAppPreCrimeSimulator Interface\\n * @dev Interface for the preCrime simulation functionality in an OApp.\\n */\\ninterface IOAppPreCrimeSimulator {\\n    // @dev simulation result used in PreCrime implementation\\n    error SimulationResult(bytes result);\\n    error OnlySelf();\\n\\n    /**\\n     * @dev Emitted when the preCrime contract address is set.\\n     * @param preCrimeAddress The address of the preCrime contract.\\n     */\\n    event PreCrimeSet(address preCrimeAddress);\\n\\n    /**\\n     * @dev Retrieves the address of the preCrime contract implementation.\\n     * @return The address of the preCrime contract.\\n     */\\n    function preCrime() external view returns (address);\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     */\\n    function oApp() external view returns (address);\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) external;\\n\\n    /**\\n     * @dev Mocks receiving a packet, then reverts with a series of data to infer the state/result.\\n     * @param _packets An array of LayerZero InboundPacket objects representing received packets.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) external payable;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\nstruct PreCrimePeer {\\n    uint32 eid;\\n    bytes32 preCrime;\\n    bytes32 oApp;\\n}\\n\\n// TODO not done yet\\ninterface IPreCrime {\\n    error OnlyOffChain();\\n\\n    // for simulate()\\n    error PacketOversize(uint256 max, uint256 actual);\\n    error PacketUnsorted();\\n    error SimulationFailed(bytes reason);\\n\\n    // for preCrime()\\n    error SimulationResultNotFound(uint32 eid);\\n    error InvalidSimulationResult(uint32 eid, bytes reason);\\n    error CrimeFound(bytes crime);\\n\\n    function getConfig(bytes[] calldata _packets, uint256[] calldata _packetMsgValues) external returns (bytes memory);\\n\\n    function simulate(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues\\n    ) external payable returns (bytes memory);\\n\\n    function buildSimulationResult() external view returns (bytes memory);\\n\\n    function preCrime(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues,\\n        bytes[] calldata _simulations\\n    ) external;\\n\\n    function version() external view returns (uint64 major, uint8 minor);\\n}\\n\",\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { PacketV1Codec } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\\\";\\n\\n/**\\n * @title InboundPacket\\n * @dev Structure representing an inbound packet received by the contract.\\n */\\nstruct InboundPacket {\\n    Origin origin; // Origin information of the packet.\\n    uint32 dstEid; // Destination endpointId of the packet.\\n    address receiver; // Receiver address for the packet.\\n    bytes32 guid; // Unique identifier of the packet.\\n    uint256 value; // msg.value of the packet.\\n    address executor; // Executor address for the packet.\\n    bytes message; // Message payload of the packet.\\n    bytes extraData; // Additional arbitrary data for the packet.\\n}\\n\\n/**\\n * @title PacketDecoder\\n * @dev Library for decoding LayerZero packets.\\n */\\nlibrary PacketDecoder {\\n    using PacketV1Codec for bytes;\\n\\n    /**\\n     * @dev Decode an inbound packet from the given packet data.\\n     * @param _packet The packet data to decode.\\n     * @return packet An InboundPacket struct representing the decoded packet.\\n     */\\n    function decode(bytes calldata _packet) internal pure returns (InboundPacket memory packet) {\\n        packet.origin = Origin(_packet.srcEid(), _packet.sender(), _packet.nonce());\\n        packet.dstEid = _packet.dstEid();\\n        packet.receiver = _packet.receiverB20();\\n        packet.guid = _packet.guid();\\n        packet.message = _packet.message();\\n    }\\n\\n    /**\\n     * @dev Decode multiple inbound packets from the given packet data and associated message values.\\n     * @param _packets An array of packet data to decode.\\n     * @param _packetMsgValues An array of associated message values for each packet.\\n     * @return packets An array of InboundPacket structs representing the decoded packets.\\n     */\\n    function decode(\\n        bytes[] calldata _packets,\\n        uint256[] memory _packetMsgValues\\n    ) internal pure returns (InboundPacket[] memory packets) {\\n        packets = new InboundPacket[](_packets.length);\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            bytes calldata packet = _packets[i];\\n            packets[i] = PacketDecoder.decode(packet);\\n            // @dev Allows the verifier to specify the msg.value that gets passed in lzReceive.\\n            packets[i].value = _packetMsgValues[i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol:OAppPreCrimeSimulator","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":2166,"contract":"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol:OAppPreCrimeSimulator","label":"preCrime","offset":0,"slot":"1","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol":{"IOAppPreCrimeSimulator":{"abi":[{"inputs":[],"name":"OnlySelf","type":"error"},{"inputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"name":"SimulationResult","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"preCrimeAddress","type":"address"}],"name":"PreCrimeSet","type":"event"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"isPeer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"origin","type":"tuple"},{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"internalType":"struct InboundPacket[]","name":"_packets","type":"tuple[]"}],"name":"lzReceiveAndRevert","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"oApp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preCrime","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_preCrime","type":"address"}],"name":"setPreCrime","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for the preCrime simulation functionality in an OApp.","events":{"PreCrimeSet(address)":{"details":"Emitted when the preCrime contract address is set.","params":{"preCrimeAddress":"The address of the preCrime contract."}}},"kind":"dev","methods":{"isPeer(uint32,bytes32)":{"details":"checks if the specified peer is considered 'trusted' by the OApp.","params":{"_eid":"The endpoint Id to check.","_peer":"The peer to check."},"returns":{"_0":"Whether the peer passed is considered 'trusted' by the OApp."}},"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":{"details":"Mocks receiving a packet, then reverts with a series of data to infer the state/result.","params":{"_packets":"An array of LayerZero InboundPacket objects representing received packets."}},"oApp()":{"details":"Retrieves the address of the OApp contract.","returns":{"_0":"The address of the OApp contract."}},"preCrime()":{"details":"Retrieves the address of the preCrime contract implementation.","returns":{"_0":"The address of the preCrime contract."}},"setPreCrime(address)":{"details":"Sets the preCrime contract address.","params":{"_preCrime":"The address of the preCrime contract."}}},"title":"IOAppPreCrimeSimulator Interface","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isPeer(uint32,bytes32)":"5a0dfe4d","lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":"bd815db0","oApp()":"52ae2879","preCrime()":"b731ea0a","setPreCrime(address)":"d4243885"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"isPeer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct InboundPacket[]\",\"name\":\"_packets\",\"type\":\"tuple[]\"}],\"name\":\"lzReceiveAndRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the preCrime simulation functionality in an OApp.\",\"events\":{\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}}},\"kind\":\"dev\",\"methods\":{\"isPeer(uint32,bytes32)\":{\"details\":\"checks if the specified peer is considered 'trusted' by the OApp.\",\"params\":{\"_eid\":\"The endpoint Id to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Mocks receiving a packet, then reverts with a series of data to infer the state/result.\",\"params\":{\"_packets\":\"An array of LayerZero InboundPacket objects representing received packets.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"preCrime()\":{\"details\":\"Retrieves the address of the preCrime contract implementation.\",\"returns\":{\"_0\":\"The address of the preCrime contract.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}}},\"title\":\"IOAppPreCrimeSimulator Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":\"IOAppPreCrimeSimulator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nimport { Packet } from \\\"../../interfaces/ISendLib.sol\\\";\\nimport { AddressCast } from \\\"../../libs/AddressCast.sol\\\";\\n\\nlibrary PacketV1Codec {\\n    using AddressCast for address;\\n    using AddressCast for bytes32;\\n\\n    uint8 internal constant PACKET_VERSION = 1;\\n\\n    // header (version + nonce + path)\\n    // version\\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\\n    //    nonce\\n    uint256 private constant NONCE_OFFSET = 1;\\n    //    path\\n    uint256 private constant SRC_EID_OFFSET = 9;\\n    uint256 private constant SENDER_OFFSET = 13;\\n    uint256 private constant DST_EID_OFFSET = 45;\\n    uint256 private constant RECEIVER_OFFSET = 49;\\n    // payload (guid + message)\\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\\n    uint256 private constant MESSAGE_OFFSET = 113;\\n\\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\\n        encodedPacket = abi.encodePacked(\\n            PACKET_VERSION,\\n            _packet.nonce,\\n            _packet.srcEid,\\n            _packet.sender.toBytes32(),\\n            _packet.dstEid,\\n            _packet.receiver,\\n            _packet.guid,\\n            _packet.message\\n        );\\n    }\\n\\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                PACKET_VERSION,\\n                _packet.nonce,\\n                _packet.srcEid,\\n                _packet.sender.toBytes32(),\\n                _packet.dstEid,\\n                _packet.receiver\\n            );\\n    }\\n\\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\\n        return abi.encodePacked(_packet.guid, _packet.message);\\n    }\\n\\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return _packet[0:GUID_OFFSET];\\n    }\\n\\n    function version(bytes calldata _packet) internal pure returns (uint8) {\\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\\n    }\\n\\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\\n    }\\n\\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\\n    }\\n\\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\\n        return sender(_packet).toAddress();\\n    }\\n\\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\\n    }\\n\\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\\n    }\\n\\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\\n        return receiver(_packet).toAddress();\\n    }\\n\\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\\n    }\\n\\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[MESSAGE_OFFSET:]);\\n    }\\n\\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[GUID_OFFSET:]);\\n    }\\n\\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\\n        return keccak256(payload(_packet));\\n    }\\n}\\n\",\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the Origin so it's exposed to OAppPreCrimeSimulator implementers.\\n// solhint-disable-next-line no-unused-import\\nimport { InboundPacket, Origin } from \\\"../libs/Packet.sol\\\";\\n\\n/**\\n * @title IOAppPreCrimeSimulator Interface\\n * @dev Interface for the preCrime simulation functionality in an OApp.\\n */\\ninterface IOAppPreCrimeSimulator {\\n    // @dev simulation result used in PreCrime implementation\\n    error SimulationResult(bytes result);\\n    error OnlySelf();\\n\\n    /**\\n     * @dev Emitted when the preCrime contract address is set.\\n     * @param preCrimeAddress The address of the preCrime contract.\\n     */\\n    event PreCrimeSet(address preCrimeAddress);\\n\\n    /**\\n     * @dev Retrieves the address of the preCrime contract implementation.\\n     * @return The address of the preCrime contract.\\n     */\\n    function preCrime() external view returns (address);\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     */\\n    function oApp() external view returns (address);\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) external;\\n\\n    /**\\n     * @dev Mocks receiving a packet, then reverts with a series of data to infer the state/result.\\n     * @param _packets An array of LayerZero InboundPacket objects representing received packets.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) external payable;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { PacketV1Codec } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\\\";\\n\\n/**\\n * @title InboundPacket\\n * @dev Structure representing an inbound packet received by the contract.\\n */\\nstruct InboundPacket {\\n    Origin origin; // Origin information of the packet.\\n    uint32 dstEid; // Destination endpointId of the packet.\\n    address receiver; // Receiver address for the packet.\\n    bytes32 guid; // Unique identifier of the packet.\\n    uint256 value; // msg.value of the packet.\\n    address executor; // Executor address for the packet.\\n    bytes message; // Message payload of the packet.\\n    bytes extraData; // Additional arbitrary data for the packet.\\n}\\n\\n/**\\n * @title PacketDecoder\\n * @dev Library for decoding LayerZero packets.\\n */\\nlibrary PacketDecoder {\\n    using PacketV1Codec for bytes;\\n\\n    /**\\n     * @dev Decode an inbound packet from the given packet data.\\n     * @param _packet The packet data to decode.\\n     * @return packet An InboundPacket struct representing the decoded packet.\\n     */\\n    function decode(bytes calldata _packet) internal pure returns (InboundPacket memory packet) {\\n        packet.origin = Origin(_packet.srcEid(), _packet.sender(), _packet.nonce());\\n        packet.dstEid = _packet.dstEid();\\n        packet.receiver = _packet.receiverB20();\\n        packet.guid = _packet.guid();\\n        packet.message = _packet.message();\\n    }\\n\\n    /**\\n     * @dev Decode multiple inbound packets from the given packet data and associated message values.\\n     * @param _packets An array of packet data to decode.\\n     * @param _packetMsgValues An array of associated message values for each packet.\\n     * @return packets An array of InboundPacket structs representing the decoded packets.\\n     */\\n    function decode(\\n        bytes[] calldata _packets,\\n        uint256[] memory _packetMsgValues\\n    ) internal pure returns (InboundPacket[] memory packets) {\\n        packets = new InboundPacket[](_packets.length);\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            bytes calldata packet = _packets[i];\\n            packets[i] = PacketDecoder.decode(packet);\\n            // @dev Allows the verifier to specify the msg.value that gets passed in lzReceive.\\n            packets[i].value = _packetMsgValues[i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol":{"IPreCrime":{"abi":[{"inputs":[{"internalType":"bytes","name":"crime","type":"bytes"}],"name":"CrimeFound","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes","name":"reason","type":"bytes"}],"name":"InvalidSimulationResult","type":"error"},{"inputs":[],"name":"OnlyOffChain","type":"error"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"},{"internalType":"uint256","name":"actual","type":"uint256"}],"name":"PacketOversize","type":"error"},{"inputs":[],"name":"PacketUnsorted","type":"error"},{"inputs":[{"internalType":"bytes","name":"reason","type":"bytes"}],"name":"SimulationFailed","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"SimulationResultNotFound","type":"error"},{"inputs":[],"name":"buildSimulationResult","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"_packets","type":"bytes[]"},{"internalType":"uint256[]","name":"_packetMsgValues","type":"uint256[]"}],"name":"getConfig","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"_packets","type":"bytes[]"},{"internalType":"uint256[]","name":"_packetMsgValues","type":"uint256[]"},{"internalType":"bytes[]","name":"_simulations","type":"bytes[]"}],"name":"preCrime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"_packets","type":"bytes[]"},{"internalType":"uint256[]","name":"_packetMsgValues","type":"uint256[]"}],"name":"simulate","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint64","name":"major","type":"uint64"},{"internalType":"uint8","name":"minor","type":"uint8"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"buildSimulationResult()":"8e9e7099","getConfig(bytes[],uint256[])":"f0cd3836","preCrime(bytes[],uint256[],bytes[])":"10f9cf3a","simulate(bytes[],uint256[])":"50dfa937","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"crime\",\"type\":\"bytes\"}],\"name\":\"CrimeFound\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"InvalidSimulationResult\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyOffChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"PacketOversize\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PacketUnsorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"SimulationFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"SimulationResultNotFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"buildSimulationResult\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_simulations\",\"type\":\"bytes[]\"}],\"name\":\"preCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_packets\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_packetMsgValues\",\"type\":\"uint256[]\"}],\"name\":\"simulate\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"major\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"minor\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":\"IPreCrime\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\nstruct PreCrimePeer {\\n    uint32 eid;\\n    bytes32 preCrime;\\n    bytes32 oApp;\\n}\\n\\n// TODO not done yet\\ninterface IPreCrime {\\n    error OnlyOffChain();\\n\\n    // for simulate()\\n    error PacketOversize(uint256 max, uint256 actual);\\n    error PacketUnsorted();\\n    error SimulationFailed(bytes reason);\\n\\n    // for preCrime()\\n    error SimulationResultNotFound(uint32 eid);\\n    error InvalidSimulationResult(uint32 eid, bytes reason);\\n    error CrimeFound(bytes crime);\\n\\n    function getConfig(bytes[] calldata _packets, uint256[] calldata _packetMsgValues) external returns (bytes memory);\\n\\n    function simulate(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues\\n    ) external payable returns (bytes memory);\\n\\n    function buildSimulationResult() external view returns (bytes memory);\\n\\n    function preCrime(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues,\\n        bytes[] calldata _simulations\\n    ) external;\\n\\n    function version() external view returns (uint64 major, uint8 minor);\\n}\\n\",\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol":{"PacketDecoder":{"abi":[],"devdoc":{"details":"Library for decoding LayerZero packets.","kind":"dev","methods":{},"title":"PacketDecoder","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e842a7001df77ac1479e5917b061ecdbb4ce1c1625bac5e26805fd7737e577f64736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x842A7001DF77AC1479E5917B061ECD 0xBB 0x4C 0xE1 0xC1 PUSH3 0x5BAC5E 0x26 DUP1 PUSH0 0xD7 PUSH20 0x7E577F64736F6C634300081C0033000000000000 ","sourceMap":"942:1527:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;942:1527:22;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206e842a7001df77ac1479e5917b061ecdbb4ce1c1625bac5e26805fd7737e577f64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH15 0x842A7001DF77AC1479E5917B061ECD 0xBB 0x4C 0xE1 0xC1 PUSH3 0x5BAC5E 0x26 DUP1 PUSH0 0xD7 PUSH20 0x7E577F64736F6C634300081C0033000000000000 ","sourceMap":"942:1527:22:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"decode(bytes calldata)":"infinite","decode(bytes calldata[] calldata,uint256[] memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for decoding LayerZero packets.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"PacketDecoder\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":\"PacketDecoder\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nimport { Packet } from \\\"../../interfaces/ISendLib.sol\\\";\\nimport { AddressCast } from \\\"../../libs/AddressCast.sol\\\";\\n\\nlibrary PacketV1Codec {\\n    using AddressCast for address;\\n    using AddressCast for bytes32;\\n\\n    uint8 internal constant PACKET_VERSION = 1;\\n\\n    // header (version + nonce + path)\\n    // version\\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\\n    //    nonce\\n    uint256 private constant NONCE_OFFSET = 1;\\n    //    path\\n    uint256 private constant SRC_EID_OFFSET = 9;\\n    uint256 private constant SENDER_OFFSET = 13;\\n    uint256 private constant DST_EID_OFFSET = 45;\\n    uint256 private constant RECEIVER_OFFSET = 49;\\n    // payload (guid + message)\\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\\n    uint256 private constant MESSAGE_OFFSET = 113;\\n\\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\\n        encodedPacket = abi.encodePacked(\\n            PACKET_VERSION,\\n            _packet.nonce,\\n            _packet.srcEid,\\n            _packet.sender.toBytes32(),\\n            _packet.dstEid,\\n            _packet.receiver,\\n            _packet.guid,\\n            _packet.message\\n        );\\n    }\\n\\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                PACKET_VERSION,\\n                _packet.nonce,\\n                _packet.srcEid,\\n                _packet.sender.toBytes32(),\\n                _packet.dstEid,\\n                _packet.receiver\\n            );\\n    }\\n\\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\\n        return abi.encodePacked(_packet.guid, _packet.message);\\n    }\\n\\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return _packet[0:GUID_OFFSET];\\n    }\\n\\n    function version(bytes calldata _packet) internal pure returns (uint8) {\\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\\n    }\\n\\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\\n    }\\n\\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\\n    }\\n\\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\\n        return sender(_packet).toAddress();\\n    }\\n\\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\\n    }\\n\\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\\n    }\\n\\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\\n        return receiver(_packet).toAddress();\\n    }\\n\\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\\n    }\\n\\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[MESSAGE_OFFSET:]);\\n    }\\n\\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[GUID_OFFSET:]);\\n    }\\n\\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\\n        return keccak256(payload(_packet));\\n    }\\n}\\n\",\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { PacketV1Codec } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\\\";\\n\\n/**\\n * @title InboundPacket\\n * @dev Structure representing an inbound packet received by the contract.\\n */\\nstruct InboundPacket {\\n    Origin origin; // Origin information of the packet.\\n    uint32 dstEid; // Destination endpointId of the packet.\\n    address receiver; // Receiver address for the packet.\\n    bytes32 guid; // Unique identifier of the packet.\\n    uint256 value; // msg.value of the packet.\\n    address executor; // Executor address for the packet.\\n    bytes message; // Message payload of the packet.\\n    bytes extraData; // Additional arbitrary data for the packet.\\n}\\n\\n/**\\n * @title PacketDecoder\\n * @dev Library for decoding LayerZero packets.\\n */\\nlibrary PacketDecoder {\\n    using PacketV1Codec for bytes;\\n\\n    /**\\n     * @dev Decode an inbound packet from the given packet data.\\n     * @param _packet The packet data to decode.\\n     * @return packet An InboundPacket struct representing the decoded packet.\\n     */\\n    function decode(bytes calldata _packet) internal pure returns (InboundPacket memory packet) {\\n        packet.origin = Origin(_packet.srcEid(), _packet.sender(), _packet.nonce());\\n        packet.dstEid = _packet.dstEid();\\n        packet.receiver = _packet.receiverB20();\\n        packet.guid = _packet.guid();\\n        packet.message = _packet.message();\\n    }\\n\\n    /**\\n     * @dev Decode multiple inbound packets from the given packet data and associated message values.\\n     * @param _packets An array of packet data to decode.\\n     * @param _packetMsgValues An array of associated message values for each packet.\\n     * @return packets An array of InboundPacket structs representing the decoded packets.\\n     */\\n    function decode(\\n        bytes[] calldata _packets,\\n        uint256[] memory _packetMsgValues\\n    ) internal pure returns (InboundPacket[] memory packets) {\\n        packets = new InboundPacket[](_packets.length);\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            bytes calldata packet = _packets[i];\\n            packets[i] = PacketDecoder.decode(packet);\\n            // @dev Allows the verifier to specify the msg.value that gets passed in lzReceive.\\n            packets[i].value = _packetMsgValues[i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/oft-evm/contracts/OFT.sol":{"OFT":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[],"name":"InvalidLocalDecimals","type":"error"},{"inputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"name":"InvalidOptions","type":"error"},{"inputs":[],"name":"LzTokenUnavailable","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","type":"error"},{"inputs":[{"internalType":"uint256","name":"msgValue","type":"uint256"}],"name":"NotEnoughNative","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"OnlyEndpoint","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"inputs":[],"name":"OnlySelf","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"name":"SimulationResult","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"}],"name":"SlippageExceeded","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"indexed":false,"internalType":"struct EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"EnforcedOptionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"inspector","type":"address"}],"name":"MsgInspectorSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"dstEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTSent","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":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"peer","type":"bytes32"}],"name":"PeerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"preCrimeAddress","type":"address"}],"name":"PreCrimeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"SEND","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SEND_AND_CALL","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"origin","type":"tuple"}],"name":"allowInitializePath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"approvalRequired","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint16","name":"_msgType","type":"uint16"},{"internalType":"bytes","name":"_extraOptions","type":"bytes"}],"name":"combineOptions","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimalConversionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"}],"name":"enforcedOptions","outputs":[{"internalType":"bytes","name":"enforcedOption","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"","type":"tuple"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"}],"name":"isComposeMsgSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"isPeer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"origin","type":"tuple"},{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"internalType":"struct InboundPacket[]","name":"_packets","type":"tuple[]"}],"name":"lzReceiveAndRevert","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceiveSimulate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"msgInspector","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oApp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"oftVersion","outputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preCrime","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"}],"name":"quoteOFT","outputs":[{"components":[{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"uint256","name":"maxAmountLD","type":"uint256"}],"internalType":"struct OFTLimit","name":"oftLimit","type":"tuple"},{"components":[{"internalType":"int256","name":"feeAmountLD","type":"int256"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct OFTFeeDetail[]","name":"oftFeeDetails","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"oftReceipt","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"internalType":"bool","name":"_payInLzToken","type":"bool"}],"name":"quoteSend","outputs":[{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"msgFee","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"_fee","type":"tuple"},{"internalType":"address","name":"_refundAddress","type":"address"}],"name":"send","outputs":[{"components":[{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"fee","type":"tuple"}],"internalType":"struct MessagingReceipt","name":"msgReceipt","type":"tuple"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"oftReceipt","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"internalType":"struct EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"setEnforcedOptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_msgInspector","type":"address"}],"name":"setMsgInspector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"setPeer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_preCrime","type":"address"}],"name":"setPreCrime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"OFT is an ERC-20 token that extends the functionality of the OFTCore contract.","errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"SafeERC20FailedOperation(address)":[{"details":"An operation with an ERC-20 token failed."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"PreCrimeSet(address)":{"details":"Emitted when the preCrime contract address is set.","params":{"preCrimeAddress":"The address of the preCrime contract."}},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"details":"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.","params":{"origin":"The origin information containing the source endpoint and sender address."},"returns":{"_0":"Whether the path has been initialized."}},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approvalRequired()":{"details":"In the case of OFT where the contract IS the token, approval is NOT required.","returns":{"_0":"requiresApproval Needs approval of the underlying token implementation."}},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"combineOptions(uint32,uint16,bytes)":{"details":"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.","params":{"_eid":"The endpoint ID.","_extraOptions":"Additional options passed by the caller.","_msgType":"The OAPP message type."},"returns":{"_0":"options The combination of caller specified options AND enforced options."}},"constructor":{"details":"Constructor for the OFT contract.","params":{"_delegate":"The delegate capable of making OApp configurations inside of the endpoint.","_lzEndpoint":"The LayerZero endpoint address.","_name":"The name of the OFT.","_symbol":"The symbol of the OFT."}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_sender":"The sender address."},"returns":{"_0":"isSender Is a valid sender."}},"isPeer(uint32,bytes32)":{"details":"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.","params":{"_eid":"The endpoint ID to check.","_peer":"The peer to check."},"returns":{"_0":"Whether the peer passed is considered 'trusted' by the OApp."}},"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.","params":{"_executor":"The address of the executor for the received message.","_extraData":"Additional arbitrary data provided by the corresponding executor.","_guid":"The unique identifier for the received LayerZero message.","_message":"The payload of the received message.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":{"details":"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.","params":{"_packets":"An array of InboundPacket objects representing received packets to be delivered."}},"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.","params":{"_executor":"The executor address for the packet.","_extraData":"Additional data for the packet.","_guid":"The unique identifier of the packet.","_message":"The message payload of the packet.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"name()":{"details":"Returns the name of the token."},"nextNonce(uint32,bytes32)":{"details":"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.","returns":{"nonce":"The next nonce."}},"oApp()":{"details":"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.","returns":{"_0":"The address of the OApp contract."}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol implementation.","senderVersion":"The version of the OAppSender.sol implementation."}},"oftVersion()":{"details":"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)","returns":{"interfaceId":"The interface ID.","version":"The version."}},"owner()":{"details":"Returns the address of the current owner."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"params":{"_sendParam":"The parameters for the send operation."},"returns":{"oftFeeDetails":"The details of OFT fees.","oftLimit":"The OFT limit information.","oftReceipt":"The OFT receipt information."}},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"details":"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.","params":{"_payInLzToken":"Flag indicating whether the caller is paying in the LZ token.","_sendParam":"The parameters for the send() operation."},"returns":{"msgFee":"The calculated LayerZero messaging fee from the send() operation."}},"renounceOwnership()":{"details":"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."},"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":{"details":"Executes the send operation.MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.","params":{"_fee":"The calculated fee for the send() operation.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.","_refundAddress":"The address to receive any excess funds.","_sendParam":"The parameters for the send operation."},"returns":{"msgReceipt":"The receipt for the send operation.","oftReceipt":"The OFT receipt information."}},"setDelegate(address)":{"details":"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.","params":{"_delegate":"The address of the delegate to be set."}},"setEnforcedOptions((uint32,uint16,bytes)[])":{"details":"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().","params":{"_enforcedOptions":"An array of EnforcedOptionParam structures specifying enforced options."}},"setMsgInspector(address)":{"details":"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.","params":{"_msgInspector":"The address of the message inspector."}},"setPeer(uint32,bytes32)":{"details":"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.","params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"setPreCrime(address)":{"details":"Sets the preCrime contract address.","params":{"_preCrime":"The address of the preCrime contract."}},"sharedDecimals()":{"details":"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615","returns":{"_0":"The shared decimals of the OFT."}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"token()":{"details":"Retrieves the address of the underlying ERC20 implementation.In the case of OFT, address(this) and erc20 are the same contract.","returns":{"_0":"The address of the OFT token."}},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"title":"OFT Contract","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"SEND()":"1f5e1334","SEND_AND_CALL()":"134d4f25","allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","allowance(address,address)":"dd62ed3e","approvalRequired()":"9f68b964","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","combineOptions(uint32,uint16,bytes)":"bc70b354","decimalConversionRate()":"963efcaa","decimals()":"313ce567","endpoint()":"5e280f11","enforcedOptions(uint32,uint16)":"5535d461","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","isPeer(uint32,bytes32)":"5a0dfe4d","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":"bd815db0","lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"d045a0dc","msgInspector()":"111ecdad","name()":"06fdde03","nextNonce(uint32,bytes32)":"7d25a05e","oApp()":"52ae2879","oAppVersion()":"17442b70","oftVersion()":"156a0d0f","owner()":"8da5cb5b","peers(uint32)":"bb0b6a53","preCrime()":"b731ea0a","quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":"0d35b415","quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":"3b6f743b","renounceOwnership()":"715018a6","send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":"c7c7f5b3","setDelegate(address)":"ca5eb5e1","setEnforcedOptions((uint32,uint16,bytes)[])":"b98bd070","setMsgInspector(address)":"6fc1b31e","setPeer(uint32,bytes32)":"3400288b","setPreCrime(address)":"d4243885","sharedDecimals()":"857749b0","symbol()":"95d89b41","token()":"fc0c546a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inspector\",\"type\":\"address\"}],\"name\":\"MsgInspectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTSent\",\"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\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SEND\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEND_AND_CALL\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimalConversionRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"enforcedOption\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"isPeer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct InboundPacket[]\",\"name\":\"_packets\",\"type\":\"tuple[]\"}],\"name\":\"lzReceiveAndRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceiveSimulate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"msgInspector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"oftLimit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct OFTFeeDetail[]\",\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"msgFee\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"_fee\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"msgReceipt\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_msgInspector\",\"type\":\"address\"}],\"name\":\"setMsgInspector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"OFT is an ERC-20 token that extends the functionality of the OFTCore contract.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approvalRequired()\":{\"details\":\"In the case of OFT where the contract IS the token, approval is NOT required.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"combineOptions(uint32,uint16,bytes)\":{\"details\":\"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OAPP message type.\"},\"returns\":{\"_0\":\"options The combination of caller specified options AND enforced options.\"}},\"constructor\":{\"details\":\"Constructor for the OFT contract.\",\"params\":{\"_delegate\":\"The delegate capable of making OApp configurations inside of the endpoint.\",\"_lzEndpoint\":\"The LayerZero endpoint address.\",\"_name\":\"The name of the OFT.\",\"_symbol\":\"The symbol of the OFT.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"isPeer(uint32,bytes32)\":{\"details\":\"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\",\"params\":{\"_eid\":\"The endpoint ID to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"oftFeeDetails\":\"The details of OFT fees.\",\"oftLimit\":\"The OFT limit information.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"msgFee\":\"The calculated LayerZero messaging fee from the send() operation.\"}},\"renounceOwnership()\":{\"details\":\"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.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"Executes the send operation.MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The calculated fee for the send() operation.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"msgReceipt\":\"The receipt for the send operation.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\",\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}},\"setMsgInspector(address)\":{\"details\":\"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.\",\"params\":{\"_msgInspector\":\"The address of the message inspector.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"sharedDecimals()\":{\"details\":\"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\",\"returns\":{\"_0\":\"The shared decimals of the OFT.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"token()\":{\"details\":\"Retrieves the address of the underlying ERC20 implementation.In the case of OFT, address(this) and erc20 are the same contract.\",\"returns\":{\"_0\":\"The address of the OFT token.\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OFT Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oft-evm/contracts/OFT.sol\":\"OFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nimport { Packet } from \\\"../../interfaces/ISendLib.sol\\\";\\nimport { AddressCast } from \\\"../../libs/AddressCast.sol\\\";\\n\\nlibrary PacketV1Codec {\\n    using AddressCast for address;\\n    using AddressCast for bytes32;\\n\\n    uint8 internal constant PACKET_VERSION = 1;\\n\\n    // header (version + nonce + path)\\n    // version\\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\\n    //    nonce\\n    uint256 private constant NONCE_OFFSET = 1;\\n    //    path\\n    uint256 private constant SRC_EID_OFFSET = 9;\\n    uint256 private constant SENDER_OFFSET = 13;\\n    uint256 private constant DST_EID_OFFSET = 45;\\n    uint256 private constant RECEIVER_OFFSET = 49;\\n    // payload (guid + message)\\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\\n    uint256 private constant MESSAGE_OFFSET = 113;\\n\\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\\n        encodedPacket = abi.encodePacked(\\n            PACKET_VERSION,\\n            _packet.nonce,\\n            _packet.srcEid,\\n            _packet.sender.toBytes32(),\\n            _packet.dstEid,\\n            _packet.receiver,\\n            _packet.guid,\\n            _packet.message\\n        );\\n    }\\n\\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                PACKET_VERSION,\\n                _packet.nonce,\\n                _packet.srcEid,\\n                _packet.sender.toBytes32(),\\n                _packet.dstEid,\\n                _packet.receiver\\n            );\\n    }\\n\\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\\n        return abi.encodePacked(_packet.guid, _packet.message);\\n    }\\n\\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return _packet[0:GUID_OFFSET];\\n    }\\n\\n    function version(bytes calldata _packet) internal pure returns (uint8) {\\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\\n    }\\n\\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\\n    }\\n\\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\\n    }\\n\\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\\n        return sender(_packet).toAddress();\\n    }\\n\\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\\n    }\\n\\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\\n    }\\n\\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\\n        return receiver(_packet).toAddress();\\n    }\\n\\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\\n    }\\n\\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[MESSAGE_OFFSET:]);\\n    }\\n\\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[GUID_OFFSET:]);\\n    }\\n\\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\\n        return keccak256(payload(_packet));\\n    }\\n}\\n\",\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the 'MessagingFee' and 'MessagingReceipt' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppSender, MessagingFee, MessagingReceipt } from \\\"./OAppSender.sol\\\";\\n// @dev Import the 'Origin' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppReceiver, Origin } from \\\"./OAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OApp\\n * @dev Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.\\n */\\nabstract contract OApp is OAppSender, OAppReceiver {\\n    /**\\n     * @dev Constructor to initialize the OApp with the provided endpoint and owner.\\n     * @param _endpoint The address of the LOCAL LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(address _endpoint, address _delegate) OAppCore(_endpoint, _delegate) {}\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol implementation.\\n     * @return receiverVersion The version of the OAppReceiver.sol implementation.\\n     */\\n    function oAppVersion()\\n        public\\n        pure\\n        virtual\\n        override(OAppSender, OAppReceiver)\\n        returns (uint64 senderVersion, uint64 receiverVersion)\\n    {\\n        return (SENDER_VERSION, RECEIVER_VERSION);\\n    }\\n}\\n\",\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IOAppReceiver, Origin } from \\\"./interfaces/IOAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppReceiver\\n * @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\\n */\\nabstract contract OAppReceiver is IOAppReceiver, OAppCore {\\n    // Custom error message for when the caller is not the registered endpoint/\\n    error OnlyEndpoint(address addr);\\n\\n    // @dev The version of the OAppReceiver implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant RECEIVER_VERSION = 2;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.\\n     * ie. this is a RECEIVE only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (0, RECEIVER_VERSION);\\n    }\\n\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @dev _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @dev _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata /*_origin*/,\\n        bytes calldata /*_message*/,\\n        address _sender\\n    ) public view virtual returns (bool) {\\n        return _sender == address(this);\\n    }\\n\\n    /**\\n     * @notice Checks if the path initialization is allowed based on the provided origin.\\n     * @param origin The origin information containing the source endpoint and sender address.\\n     * @return Whether the path has been initialized.\\n     *\\n     * @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.\\n     * @dev This defaults to assuming if a peer has been set, its initialized.\\n     * Can be overridden by the OApp if there is other logic to determine this.\\n     */\\n    function allowInitializePath(Origin calldata origin) public view virtual returns (bool) {\\n        return peers[origin.srcEid] == origin.sender;\\n    }\\n\\n    /**\\n     * @notice Retrieves the next nonce for a given source endpoint and sender address.\\n     * @dev _srcEid The source endpoint ID.\\n     * @dev _sender The sender address.\\n     * @return nonce The next nonce.\\n     *\\n     * @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.\\n     * @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.\\n     * @dev This is also enforced by the OApp.\\n     * @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\\n     */\\n    function nextNonce(uint32 /*_srcEid*/, bytes32 /*_sender*/) public view virtual returns (uint64 nonce) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Entry point for receiving messages or packets from the endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The payload of the received message.\\n     * @param _executor The address of the executor for the received message.\\n     * @param _extraData Additional arbitrary data provided by the corresponding executor.\\n     *\\n     * @dev Entry point for receiving msg/packet from the LayerZero endpoint.\\n     */\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) public payable virtual {\\n        // Ensures that only the endpoint can attempt to lzReceive() messages to this OApp.\\n        if (address(endpoint) != msg.sender) revert OnlyEndpoint(msg.sender);\\n\\n        // Ensure that the sender matches the expected peer for the source endpoint.\\n        if (_getPeerOrRevert(_origin.srcEid) != _origin.sender) revert OnlyPeer(_origin.srcEid, _origin.sender);\\n\\n        // Call the internal OApp implementation of lzReceive.\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n}\\n\",\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { SafeERC20, IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport { MessagingParams, MessagingFee, MessagingReceipt } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppSender\\n * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\\n */\\nabstract contract OAppSender is OAppCore {\\n    using SafeERC20 for IERC20;\\n\\n    // Custom error messages\\n    error NotEnoughNative(uint256 msgValue);\\n    error LzTokenUnavailable();\\n\\n    // @dev The version of the OAppSender implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant SENDER_VERSION = 1;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\\n     * ie. this is a SEND only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (SENDER_VERSION, 0);\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\\n     * @return fee The calculated MessagingFee for the message.\\n     *      - nativeFee: The native fee for the message.\\n     *      - lzTokenFee: The LZ token fee for the message.\\n     */\\n    function _quote(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        bool _payInLzToken\\n    ) internal view virtual returns (MessagingFee memory fee) {\\n        return\\n            endpoint.quote(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),\\n                address(this)\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _fee The calculated LayerZero fee for the message.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess fee values sent to the endpoint.\\n     * @return receipt The receipt for the sent message.\\n     *      - guid: The unique identifier for the sent message.\\n     *      - nonce: The nonce of the sent message.\\n     *      - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _lzSend(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        MessagingFee memory _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory receipt) {\\n        // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.\\n        uint256 messageValue = _payNative(_fee.nativeFee);\\n        if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);\\n\\n        return\\n            // solhint-disable-next-line check-send-result\\n            endpoint.send{ value: messageValue }(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),\\n                _refundAddress\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the native fee associated with the message.\\n     * @param _nativeFee The native fee to be paid.\\n     * @return nativeFee The amount of native currency paid.\\n     *\\n     * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\\n     * this will need to be overridden because msg.value would contain multiple lzFees.\\n     * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\\n     * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\\n     * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.\\n     */\\n    function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {\\n        if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);\\n        return _nativeFee;\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the LZ token fee associated with the message.\\n     * @param _lzTokenFee The LZ token fee to be paid.\\n     *\\n     * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\\n     * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().\\n     */\\n    function _payLzToken(uint256 _lzTokenFee) internal virtual {\\n        // @dev Cannot cache the token because it is not immutable in the endpoint.\\n        address lzToken = endpoint.lzToken();\\n        if (lzToken == address(0)) revert LzTokenUnavailable();\\n\\n        // Pay LZ token fee by sending tokens to the endpoint.\\n        IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);\\n    }\\n}\\n\",\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title IOAppMsgInspector\\n * @dev Interface for the OApp Message Inspector, allowing examination of message and options contents.\\n */\\ninterface IOAppMsgInspector {\\n    // Custom error message for inspection failure\\n    error InspectionFailed(bytes message, bytes options);\\n\\n    /**\\n     * @notice Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid.\\n     * @param _message The message payload to be inspected.\\n     * @param _options Additional options or parameters for inspection.\\n     * @return valid A boolean indicating whether the inspection passed (true) or failed (false).\\n     *\\n     * @dev Optionally done as a revert, OR use the boolean provided to handle the failure.\\n     */\\n    function inspect(bytes calldata _message, bytes calldata _options) external view returns (bool valid);\\n}\\n\",\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Struct representing enforced option parameters.\\n */\\nstruct EnforcedOptionParam {\\n    uint32 eid; // Endpoint ID\\n    uint16 msgType; // Message Type\\n    bytes options; // Additional options\\n}\\n\\n/**\\n * @title IOAppOptionsType3\\n * @dev Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\\n */\\ninterface IOAppOptionsType3 {\\n    // Custom error message for invalid options\\n    error InvalidOptions(bytes options);\\n\\n    // Event emitted when enforced options are set\\n    event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\\n\\n    /**\\n     * @notice Sets enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OApp message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) external view returns (bytes memory options);\\n}\\n\",\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroReceiver, Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata _origin,\\n        bytes calldata _message,\\n        address _sender\\n    ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppOptionsType3, EnforcedOptionParam } from \\\"../interfaces/IOAppOptionsType3.sol\\\";\\n\\n/**\\n * @title OAppOptionsType3\\n * @dev Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.\\n */\\nabstract contract OAppOptionsType3 is IOAppOptionsType3, Ownable {\\n    uint16 internal constant OPTION_TYPE_3 = 3;\\n\\n    // @dev The \\\"msgType\\\" should be defined in the child contract.\\n    mapping(uint32 eid => mapping(uint16 msgType => bytes enforcedOption)) public enforcedOptions;\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) public virtual onlyOwner {\\n        _setEnforcedOptions(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function _setEnforcedOptions(EnforcedOptionParam[] memory _enforcedOptions) internal virtual {\\n        for (uint256 i = 0; i < _enforcedOptions.length; i++) {\\n            // @dev Enforced options are only available for optionType 3, as type 1 and 2 dont support combining.\\n            _assertOptionsType3(_enforcedOptions[i].options);\\n            enforcedOptions[_enforcedOptions[i].eid][_enforcedOptions[i].msgType] = _enforcedOptions[i].options;\\n        }\\n\\n        emit EnforcedOptionSet(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OAPP message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     *\\n     * @dev If there is an enforced lzReceive option:\\n     * - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether}\\n     * - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.\\n     * @dev This presence of duplicated options is handled off-chain in the verifier/executor.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) public view virtual returns (bytes memory) {\\n        bytes memory enforced = enforcedOptions[_eid][_msgType];\\n\\n        // No enforced options, pass whatever the caller supplied, even if it's empty or legacy type 1/2 options.\\n        if (enforced.length == 0) return _extraOptions;\\n\\n        // No caller options, return enforced\\n        if (_extraOptions.length == 0) return enforced;\\n\\n        // @dev If caller provided _extraOptions, must be type 3 as its the ONLY type that can be combined.\\n        if (_extraOptions.length >= 2) {\\n            _assertOptionsType3(_extraOptions);\\n            // @dev Remove the first 2 bytes containing the type from the _extraOptions and combine with enforced.\\n            return bytes.concat(enforced, _extraOptions[2:]);\\n        }\\n\\n        // No valid set of options was found.\\n        revert InvalidOptions(_extraOptions);\\n    }\\n\\n    /**\\n     * @dev Internal function to assert that options are of type 3.\\n     * @param _options The options to be checked.\\n     */\\n    function _assertOptionsType3(bytes memory _options) internal pure virtual {\\n        uint16 optionsType;\\n        assembly {\\n            optionsType := mload(add(_options, 2))\\n        }\\n        if (optionsType != OPTION_TYPE_3) revert InvalidOptions(_options);\\n    }\\n}\\n\",\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IPreCrime } from \\\"./interfaces/IPreCrime.sol\\\";\\nimport { IOAppPreCrimeSimulator, InboundPacket, Origin } from \\\"./interfaces/IOAppPreCrimeSimulator.sol\\\";\\n\\n/**\\n * @title OAppPreCrimeSimulator\\n * @dev Abstract contract serving as the base for preCrime simulation functionality in an OApp.\\n */\\nabstract contract OAppPreCrimeSimulator is IOAppPreCrimeSimulator, Ownable {\\n    // The address of the preCrime implementation.\\n    address public preCrime;\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     *\\n     * @dev The simulator contract is the base contract for the OApp by default.\\n     * @dev If the simulator is a separate contract, override this function.\\n     */\\n    function oApp() external view virtual returns (address) {\\n        return address(this);\\n    }\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) public virtual onlyOwner {\\n        preCrime = _preCrime;\\n        emit PreCrimeSet(_preCrime);\\n    }\\n\\n    /**\\n     * @dev Interface for pre-crime simulations. Always reverts at the end with the simulation results.\\n     * @param _packets An array of InboundPacket objects representing received packets to be delivered.\\n     *\\n     * @dev WARNING: MUST revert at the end with the simulation results.\\n     * @dev Gives the preCrime implementation the ability to mock sending packets to the lzReceive function,\\n     * WITHOUT actually executing them.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) public payable virtual {\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            InboundPacket calldata packet = _packets[i];\\n\\n            // Ignore packets that are not from trusted peers.\\n            if (!isPeer(packet.origin.srcEid, packet.origin.sender)) continue;\\n\\n            // @dev Because a verifier is calling this function, it doesnt have access to executor params:\\n            //  - address _executor\\n            //  - bytes calldata _extraData\\n            // preCrime will NOT work for OApps that rely on these two parameters inside of their _lzReceive().\\n            // They are instead stubbed to default values, address(0) and bytes(\\\"\\\")\\n            // @dev Calling this.lzReceiveSimulate removes ability for assembly return 0 callstack exit,\\n            // which would cause the revert to be ignored.\\n            this.lzReceiveSimulate{ value: packet.value }(\\n                packet.origin,\\n                packet.guid,\\n                packet.message,\\n                packet.executor,\\n                packet.extraData\\n            );\\n        }\\n\\n        // @dev Revert with the simulation results. msg.sender must implement IPreCrime.buildSimulationResult().\\n        revert SimulationResult(IPreCrime(msg.sender).buildSimulationResult());\\n    }\\n\\n    /**\\n     * @dev Is effectively an internal function because msg.sender must be address(this).\\n     * Allows resetting the call stack for 'internal' calls.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier of the packet.\\n     * @param _message The message payload of the packet.\\n     * @param _executor The executor address for the packet.\\n     * @param _extraData Additional data for the packet.\\n     */\\n    function lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable virtual {\\n        // @dev Ensure ONLY can be called 'internally'.\\n        if (msg.sender != address(this)) revert OnlySelf();\\n        _lzReceiveSimulate(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The GUID of the LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual returns (bool);\\n}\\n\",\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the Origin so it's exposed to OAppPreCrimeSimulator implementers.\\n// solhint-disable-next-line no-unused-import\\nimport { InboundPacket, Origin } from \\\"../libs/Packet.sol\\\";\\n\\n/**\\n * @title IOAppPreCrimeSimulator Interface\\n * @dev Interface for the preCrime simulation functionality in an OApp.\\n */\\ninterface IOAppPreCrimeSimulator {\\n    // @dev simulation result used in PreCrime implementation\\n    error SimulationResult(bytes result);\\n    error OnlySelf();\\n\\n    /**\\n     * @dev Emitted when the preCrime contract address is set.\\n     * @param preCrimeAddress The address of the preCrime contract.\\n     */\\n    event PreCrimeSet(address preCrimeAddress);\\n\\n    /**\\n     * @dev Retrieves the address of the preCrime contract implementation.\\n     * @return The address of the preCrime contract.\\n     */\\n    function preCrime() external view returns (address);\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     */\\n    function oApp() external view returns (address);\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) external;\\n\\n    /**\\n     * @dev Mocks receiving a packet, then reverts with a series of data to infer the state/result.\\n     * @param _packets An array of LayerZero InboundPacket objects representing received packets.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) external payable;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\nstruct PreCrimePeer {\\n    uint32 eid;\\n    bytes32 preCrime;\\n    bytes32 oApp;\\n}\\n\\n// TODO not done yet\\ninterface IPreCrime {\\n    error OnlyOffChain();\\n\\n    // for simulate()\\n    error PacketOversize(uint256 max, uint256 actual);\\n    error PacketUnsorted();\\n    error SimulationFailed(bytes reason);\\n\\n    // for preCrime()\\n    error SimulationResultNotFound(uint32 eid);\\n    error InvalidSimulationResult(uint32 eid, bytes reason);\\n    error CrimeFound(bytes crime);\\n\\n    function getConfig(bytes[] calldata _packets, uint256[] calldata _packetMsgValues) external returns (bytes memory);\\n\\n    function simulate(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues\\n    ) external payable returns (bytes memory);\\n\\n    function buildSimulationResult() external view returns (bytes memory);\\n\\n    function preCrime(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues,\\n        bytes[] calldata _simulations\\n    ) external;\\n\\n    function version() external view returns (uint64 major, uint8 minor);\\n}\\n\",\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { PacketV1Codec } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\\\";\\n\\n/**\\n * @title InboundPacket\\n * @dev Structure representing an inbound packet received by the contract.\\n */\\nstruct InboundPacket {\\n    Origin origin; // Origin information of the packet.\\n    uint32 dstEid; // Destination endpointId of the packet.\\n    address receiver; // Receiver address for the packet.\\n    bytes32 guid; // Unique identifier of the packet.\\n    uint256 value; // msg.value of the packet.\\n    address executor; // Executor address for the packet.\\n    bytes message; // Message payload of the packet.\\n    bytes extraData; // Additional arbitrary data for the packet.\\n}\\n\\n/**\\n * @title PacketDecoder\\n * @dev Library for decoding LayerZero packets.\\n */\\nlibrary PacketDecoder {\\n    using PacketV1Codec for bytes;\\n\\n    /**\\n     * @dev Decode an inbound packet from the given packet data.\\n     * @param _packet The packet data to decode.\\n     * @return packet An InboundPacket struct representing the decoded packet.\\n     */\\n    function decode(bytes calldata _packet) internal pure returns (InboundPacket memory packet) {\\n        packet.origin = Origin(_packet.srcEid(), _packet.sender(), _packet.nonce());\\n        packet.dstEid = _packet.dstEid();\\n        packet.receiver = _packet.receiverB20();\\n        packet.guid = _packet.guid();\\n        packet.message = _packet.message();\\n    }\\n\\n    /**\\n     * @dev Decode multiple inbound packets from the given packet data and associated message values.\\n     * @param _packets An array of packet data to decode.\\n     * @param _packetMsgValues An array of associated message values for each packet.\\n     * @return packets An array of InboundPacket structs representing the decoded packets.\\n     */\\n    function decode(\\n        bytes[] calldata _packets,\\n        uint256[] memory _packetMsgValues\\n    ) internal pure returns (InboundPacket[] memory packets) {\\n        packets = new InboundPacket[](_packets.length);\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            bytes calldata packet = _packets[i];\\n            packets[i] = PacketDecoder.decode(packet);\\n            // @dev Allows the verifier to specify the msg.value that gets passed in lzReceive.\\n            packets[i].value = _packetMsgValues[i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/OFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ERC20 } from \\\"@openzeppelin/contracts/token/ERC20/ERC20.sol\\\";\\nimport { IOFT, OFTCore } from \\\"./OFTCore.sol\\\";\\n\\n/**\\n * @title OFT Contract\\n * @dev OFT is an ERC-20 token that extends the functionality of the OFTCore contract.\\n */\\nabstract contract OFT is OFTCore, ERC20 {\\n    /**\\n     * @dev Constructor for the OFT contract.\\n     * @param _name The name of the OFT.\\n     * @param _symbol The symbol of the OFT.\\n     * @param _lzEndpoint The LayerZero endpoint address.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(\\n        string memory _name,\\n        string memory _symbol,\\n        address _lzEndpoint,\\n        address _delegate\\n    ) ERC20(_name, _symbol) OFTCore(decimals(), _lzEndpoint, _delegate) {}\\n\\n    /**\\n     * @dev Retrieves the address of the underlying ERC20 implementation.\\n     * @return The address of the OFT token.\\n     *\\n     * @dev In the case of OFT, address(this) and erc20 are the same contract.\\n     */\\n    function token() public view returns (address) {\\n        return address(this);\\n    }\\n\\n    /**\\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n     * @return requiresApproval Needs approval of the underlying token implementation.\\n     *\\n     * @dev In the case of OFT where the contract IS the token, approval is NOT required.\\n     */\\n    function approvalRequired() external pure virtual returns (bool) {\\n        return false;\\n    }\\n\\n    /**\\n     * @dev Burns tokens from the sender's specified balance.\\n     * @param _from The address to debit the tokens from.\\n     * @param _amountLD The amount of tokens to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @param _dstEid The destination chain ID.\\n     * @return amountSentLD The amount sent in local decimals.\\n     * @return amountReceivedLD The amount received in local decimals on the remote.\\n     */\\n    function _debit(\\n        address _from,\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 _dstEid\\n    ) internal virtual override returns (uint256 amountSentLD, uint256 amountReceivedLD) {\\n        (amountSentLD, amountReceivedLD) = _debitView(_amountLD, _minAmountLD, _dstEid);\\n\\n        // @dev In NON-default OFT, amountSentLD could be 100, with a 10% fee, the amountReceivedLD amount is 90,\\n        // therefore amountSentLD CAN differ from amountReceivedLD.\\n\\n        // @dev Default OFT burns on src.\\n        _burn(_from, amountSentLD);\\n    }\\n\\n    /**\\n     * @dev Credits tokens to the specified address.\\n     * @param _to The address to credit the tokens to.\\n     * @param _amountLD The amount of tokens to credit in local decimals.\\n     * @dev _srcEid The source chain ID.\\n     * @return amountReceivedLD The amount of tokens ACTUALLY received in local decimals.\\n     */\\n    function _credit(\\n        address _to,\\n        uint256 _amountLD,\\n        uint32 /*_srcEid*/\\n    ) internal virtual override returns (uint256 amountReceivedLD) {\\n        if (_to == address(0x0)) _to = address(0xdead); // _mint(...) does not support address(0x0)\\n        // @dev Default OFT mints on dst.\\n        _mint(_to, _amountLD);\\n        // @dev In the case of NON-default OFT, the _amountLD MIGHT not be == amountReceivedLD.\\n        return _amountLD;\\n    }\\n}\\n\",\"keccak256\":\"0xdc3582e4a20e02a79050c17058a1f1f42a4335d1a70be06c0a52a3fb05d4c89a\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/OFTCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport { OApp, Origin } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\\\";\\nimport { OAppOptionsType3 } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\\\";\\nimport { IOAppMsgInspector } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\\\";\\n\\nimport { OAppPreCrimeSimulator } from \\\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\\\";\\n\\nimport { IOFT, SendParam, OFTLimit, OFTReceipt, OFTFeeDetail, MessagingReceipt, MessagingFee } from \\\"./interfaces/IOFT.sol\\\";\\nimport { OFTMsgCodec } from \\\"./libs/OFTMsgCodec.sol\\\";\\nimport { OFTComposeMsgCodec } from \\\"./libs/OFTComposeMsgCodec.sol\\\";\\n\\n/**\\n * @title OFTCore\\n * @dev Abstract contract for the OftChain (OFT) token.\\n */\\nabstract contract OFTCore is IOFT, OApp, OAppPreCrimeSimulator, OAppOptionsType3 {\\n    using OFTMsgCodec for bytes;\\n    using OFTMsgCodec for bytes32;\\n\\n    // @notice Provides a conversion rate when swapping between denominations of SD and LD\\n    //      - shareDecimals == SD == shared Decimals\\n    //      - localDecimals == LD == local decimals\\n    // @dev Considers that tokens have different decimal amounts on various chains.\\n    // @dev eg.\\n    //  For a token\\n    //      - locally with 4 decimals --> 1.2345 => uint(12345)\\n    //      - remotely with 2 decimals --> 1.23 => uint(123)\\n    //      - The conversion rate would be 10 ** (4 - 2) = 100\\n    //  @dev If you want to send 1.2345 -> (uint 12345), you CANNOT represent that value on the remote,\\n    //  you can only display 1.23 -> uint(123).\\n    //  @dev To preserve the dust that would otherwise be lost on that conversion,\\n    //  we need to unify a denomination that can be represented on ALL chains inside of the OFT mesh\\n    uint256 public immutable decimalConversionRate;\\n\\n    // @notice Msg types that are used to identify the various OFT operations.\\n    // @dev This can be extended in child contracts for non-default oft operations\\n    // @dev These values are used in things like combineOptions() in OAppOptionsType3.sol.\\n    uint16 public constant SEND = 1;\\n    uint16 public constant SEND_AND_CALL = 2;\\n\\n    // Address of an optional contract to inspect both 'message' and 'options'\\n    address public msgInspector;\\n    event MsgInspectorSet(address inspector);\\n\\n    /**\\n     * @dev Constructor.\\n     * @param _localDecimals The decimals of the token on the local chain (this chain).\\n     * @param _endpoint The address of the LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(uint8 _localDecimals, address _endpoint, address _delegate) OApp(_endpoint, _delegate) {\\n        if (_localDecimals < sharedDecimals()) revert InvalidLocalDecimals();\\n        decimalConversionRate = 10 ** (_localDecimals - sharedDecimals());\\n    }\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external pure virtual returns (bytes4 interfaceId, uint64 version) {\\n        return (type(IOFT).interfaceId, 1);\\n    }\\n\\n    /**\\n     * @dev Retrieves the shared decimals of the OFT.\\n     * @return The shared decimals of the OFT.\\n     *\\n     * @dev Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap\\n     * Lowest common decimal denominator between chains.\\n     * Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64).\\n     * For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller.\\n     * ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\\n     */\\n    function sharedDecimals() public view virtual returns (uint8) {\\n        return 6;\\n    }\\n\\n    /**\\n     * @dev Sets the message inspector address for the OFT.\\n     * @param _msgInspector The address of the message inspector.\\n     *\\n     * @dev This is an optional contract that can be used to inspect both 'message' and 'options'.\\n     * @dev Set it to address(0) to disable it, or set it to a contract address to enable it.\\n     */\\n    function setMsgInspector(address _msgInspector) public virtual onlyOwner {\\n        msgInspector = _msgInspector;\\n        emit MsgInspectorSet(_msgInspector);\\n    }\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return oftLimit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return oftReceipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    )\\n        external\\n        view\\n        virtual\\n        returns (OFTLimit memory oftLimit, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory oftReceipt)\\n    {\\n        uint256 minAmountLD = 0; // Unused in the default implementation.\\n        uint256 maxAmountLD = IERC20(this.token()).totalSupply(); // Unused in the default implementation.\\n        oftLimit = OFTLimit(minAmountLD, maxAmountLD);\\n\\n        // Unused in the default implementation; reserved for future complex fee details.\\n        oftFeeDetails = new OFTFeeDetail[](0);\\n\\n        // @dev This is the same as the send() operation, but without the actual send.\\n        // - amountSentLD is the amount in local decimals that would be sent from the sender.\\n        // - amountReceivedLD is the amount in local decimals that will be credited to the recipient on the remote OFT instance.\\n        // @dev The amountSentLD MIGHT not equal the amount the user actually receives. HOWEVER, the default does.\\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debitView(\\n            _sendParam.amountLD,\\n            _sendParam.minAmountLD,\\n            _sendParam.dstEid\\n        );\\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return msgFee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(\\n        SendParam calldata _sendParam,\\n        bool _payInLzToken\\n    ) external view virtual returns (MessagingFee memory msgFee) {\\n        // @dev mock the amount to receive, this is the same operation used in the send().\\n        // The quote is as similar as possible to the actual send() operation.\\n        (, uint256 amountReceivedLD) = _debitView(_sendParam.amountLD, _sendParam.minAmountLD, _sendParam.dstEid);\\n\\n        // @dev Builds the options and OFT message to quote in the endpoint.\\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\\n\\n        // @dev Calculates the LayerZero fee for the send() operation.\\n        return _quote(_sendParam.dstEid, message, options, _payInLzToken);\\n    }\\n\\n    /**\\n     * @dev Executes the send operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The calculated fee for the send() operation.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds.\\n     * @return msgReceipt The receipt for the send operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\\n        return _send(_sendParam, _fee, _refundAddress);\\n    }\\n\\n    /**\\n     * @dev Internal function to execute the send operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The calculated fee for the send() operation.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds.\\n     * @return msgReceipt The receipt for the send operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\\n        // @dev Applies the token transfers regarding this send() operation.\\n        // - amountSentLD is the amount in local decimals that was ACTUALLY sent/debited from the sender.\\n        // - amountReceivedLD is the amount in local decimals that will be received/credited to the recipient on the remote OFT instance.\\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debit(\\n            msg.sender,\\n            _sendParam.amountLD,\\n            _sendParam.minAmountLD,\\n            _sendParam.dstEid\\n        );\\n\\n        // @dev Builds the options and OFT message to quote in the endpoint.\\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\\n\\n        // @dev Sends the message to the LayerZero endpoint and returns the LayerZero msg receipt.\\n        msgReceipt = _lzSend(_sendParam.dstEid, message, options, _fee, _refundAddress);\\n        // @dev Formulate the OFT receipt.\\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\\n\\n        emit OFTSent(msgReceipt.guid, _sendParam.dstEid, msg.sender, amountSentLD, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @dev Internal function to build the message and options.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _amountLD The amount in local decimals.\\n     * @return message The encoded message.\\n     * @return options The encoded options.\\n     */\\n    function _buildMsgAndOptions(\\n        SendParam calldata _sendParam,\\n        uint256 _amountLD\\n    ) internal view virtual returns (bytes memory message, bytes memory options) {\\n        bool hasCompose;\\n        // @dev This generated message has the msg.sender encoded into the payload so the remote knows who the caller is.\\n        (message, hasCompose) = OFTMsgCodec.encode(\\n            _sendParam.to,\\n            _toSD(_amountLD),\\n            // @dev Must be include a non empty bytes if you want to compose, EVEN if you dont need it on the remote.\\n            // EVEN if you dont require an arbitrary payload to be sent... eg. '0x01'\\n            _sendParam.composeMsg\\n        );\\n        // @dev Change the msg type depending if its composed or not.\\n        uint16 msgType = hasCompose ? SEND_AND_CALL : SEND;\\n        // @dev Combine the callers _extraOptions with the enforced options via the OAppOptionsType3.\\n        options = combineOptions(_sendParam.dstEid, msgType, _sendParam.extraOptions);\\n\\n        // @dev Optionally inspect the message and options depending if the OApp owner has set a msg inspector.\\n        // @dev If it fails inspection, needs to revert in the implementation. ie. does not rely on return boolean\\n        address inspector = msgInspector; // caches the msgInspector to avoid potential double storage read\\n        if (inspector != address(0)) IOAppMsgInspector(inspector).inspect(message, options);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the receive on the LayerZero endpoint.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The encoded message.\\n     * @dev _executor The address of the executor.\\n     * @dev _extraData Additional data.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address /*_executor*/, // @dev unused in the default implementation.\\n        bytes calldata /*_extraData*/ // @dev unused in the default implementation.\\n    ) internal virtual override {\\n        // @dev The src sending chain doesnt know the address length on this chain (potentially non-evm)\\n        // Thus everything is bytes32() encoded in flight.\\n        address toAddress = _message.sendTo().bytes32ToAddress();\\n        // @dev Credit the amountLD to the recipient and return the ACTUAL amount the recipient received in local decimals\\n        uint256 amountReceivedLD = _credit(toAddress, _toLD(_message.amountSD()), _origin.srcEid);\\n\\n        if (_message.isComposed()) {\\n            // @dev Proprietary composeMsg format for the OFT.\\n            bytes memory composeMsg = OFTComposeMsgCodec.encode(\\n                _origin.nonce,\\n                _origin.srcEid,\\n                amountReceivedLD,\\n                _message.composeMsg()\\n            );\\n\\n            // @dev Stores the lzCompose payload that will be executed in a separate tx.\\n            // Standardizes functionality for executing arbitrary contract invocation on some non-evm chains.\\n            // @dev The off-chain executor will listen and process the msg based on the src-chain-callers compose options passed.\\n            // @dev The index is used when a OApp needs to compose multiple msgs on lzReceive.\\n            // For default OFT implementation there is only 1 compose msg per lzReceive, thus its always 0.\\n            endpoint.sendCompose(toAddress, _guid, 0 /* the index of the composed message*/, composeMsg);\\n        }\\n\\n        emit OFTReceived(_guid, _origin.srcEid, toAddress, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual override {\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Check if the peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint ID to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     *\\n     * @dev Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual override returns (bool) {\\n        return peers[_eid] == _peer;\\n    }\\n\\n    /**\\n     * @dev Internal function to remove dust from the given local decimal amount.\\n     * @param _amountLD The amount in local decimals.\\n     * @return amountLD The amount after removing dust.\\n     *\\n     * @dev Prevents the loss of dust when moving amounts between chains with different decimals.\\n     * @dev eg. uint(123) with a conversion rate of 100 becomes uint(100).\\n     */\\n    function _removeDust(uint256 _amountLD) internal view virtual returns (uint256 amountLD) {\\n        return (_amountLD / decimalConversionRate) * decimalConversionRate;\\n    }\\n\\n    /**\\n     * @dev Internal function to convert an amount from shared decimals into local decimals.\\n     * @param _amountSD The amount in shared decimals.\\n     * @return amountLD The amount in local decimals.\\n     */\\n    function _toLD(uint64 _amountSD) internal view virtual returns (uint256 amountLD) {\\n        return _amountSD * decimalConversionRate;\\n    }\\n\\n    /**\\n     * @dev Internal function to convert an amount from local decimals into shared decimals.\\n     * @param _amountLD The amount in local decimals.\\n     * @return amountSD The amount in shared decimals.\\n     */\\n    function _toSD(uint256 _amountLD) internal view virtual returns (uint64 amountSD) {\\n        return uint64(_amountLD / decimalConversionRate);\\n    }\\n\\n    /**\\n     * @dev Internal function to mock the amount mutation from a OFT debit() operation.\\n     * @param _amountLD The amount to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @dev _dstEid The destination endpoint ID.\\n     * @return amountSentLD The amount sent, in local decimals.\\n     * @return amountReceivedLD The amount to be received on the remote chain, in local decimals.\\n     *\\n     * @dev This is where things like fees would be calculated and deducted from the amount to be received on the remote.\\n     */\\n    function _debitView(\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 /*_dstEid*/\\n    ) internal view virtual returns (uint256 amountSentLD, uint256 amountReceivedLD) {\\n        // @dev Remove the dust so nothing is lost on the conversion between chains with different decimals for the token.\\n        amountSentLD = _removeDust(_amountLD);\\n        // @dev The amount to send is the same as amount received in the default implementation.\\n        amountReceivedLD = amountSentLD;\\n\\n        // @dev Check for slippage.\\n        if (amountReceivedLD < _minAmountLD) {\\n            revert SlippageExceeded(amountReceivedLD, _minAmountLD);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to perform a debit operation.\\n     * @param _from The address to debit.\\n     * @param _amountLD The amount to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @param _dstEid The destination endpoint ID.\\n     * @return amountSentLD The amount sent in local decimals.\\n     * @return amountReceivedLD The amount received in local decimals on the remote.\\n     *\\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\\n     */\\n    function _debit(\\n        address _from,\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 _dstEid\\n    ) internal virtual returns (uint256 amountSentLD, uint256 amountReceivedLD);\\n\\n    /**\\n     * @dev Internal function to perform a credit operation.\\n     * @param _to The address to credit.\\n     * @param _amountLD The amount to credit in local decimals.\\n     * @param _srcEid The source endpoint ID.\\n     * @return amountReceivedLD The amount ACTUALLY received in local decimals.\\n     *\\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\\n     */\\n    function _credit(\\n        address _to,\\n        uint256 _amountLD,\\n        uint32 _srcEid\\n    ) internal virtual returns (uint256 amountReceivedLD);\\n}\\n\",\"keccak256\":\"0x4c5a5412cf671bb70d84c9e783312eddf864ef56566f7bf86401c5661015e228\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { MessagingReceipt, MessagingFee } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\\\";\\n\\n/**\\n * @dev Struct representing token parameters for the OFT send() operation.\\n */\\nstruct SendParam {\\n    uint32 dstEid; // Destination endpoint ID.\\n    bytes32 to; // Recipient address.\\n    uint256 amountLD; // Amount to send in local decimals.\\n    uint256 minAmountLD; // Minimum amount to send in local decimals.\\n    bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.\\n    bytes composeMsg; // The composed message for the send() operation.\\n    bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.\\n}\\n\\n/**\\n * @dev Struct representing OFT limit information.\\n * @dev These amounts can change dynamically and are up the specific oft implementation.\\n */\\nstruct OFTLimit {\\n    uint256 minAmountLD; // Minimum amount in local decimals that can be sent to the recipient.\\n    uint256 maxAmountLD; // Maximum amount in local decimals that can be sent to the recipient.\\n}\\n\\n/**\\n * @dev Struct representing OFT receipt information.\\n */\\nstruct OFTReceipt {\\n    uint256 amountSentLD; // Amount of tokens ACTUALLY debited from the sender in local decimals.\\n    // @dev In non-default implementations, the amountReceivedLD COULD differ from this value.\\n    uint256 amountReceivedLD; // Amount of tokens to be received on the remote side.\\n}\\n\\n/**\\n * @dev Struct representing OFT fee details.\\n * @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI.\\n */\\nstruct OFTFeeDetail {\\n    int256 feeAmountLD; // Amount of the fee in local decimals.\\n    string description; // Description of the fee.\\n}\\n\\n/**\\n * @title IOFT\\n * @dev Interface for the OftChain (OFT) token.\\n * @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\\n * @dev This specific interface ID is '0x02e49c2c'.\\n */\\ninterface IOFT {\\n    // Custom error messages\\n    error InvalidLocalDecimals();\\n    error SlippageExceeded(uint256 amountLD, uint256 minAmountLD);\\n\\n    // Events\\n    event OFTSent(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 dstEid, // Destination Endpoint ID.\\n        address indexed fromAddress, // Address of the sender on the src chain.\\n        uint256 amountSentLD, // Amount of tokens sent in local decimals.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n    event OFTReceived(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 srcEid, // Source Endpoint ID.\\n        address indexed toAddress, // Address of the recipient on the dst chain.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external view returns (bytes4 interfaceId, uint64 version);\\n\\n    /**\\n     * @notice Retrieves the address of the token associated with the OFT.\\n     * @return token The address of the ERC20 token implementation.\\n     */\\n    function token() external view returns (address);\\n\\n    /**\\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n     * @return requiresApproval Needs approval of the underlying token implementation.\\n     *\\n     * @dev Allows things like wallet implementers to determine integration requirements,\\n     * without understanding the underlying token implementation.\\n     */\\n    function approvalRequired() external view returns (bool);\\n\\n    /**\\n     * @notice Retrieves the shared decimals of the OFT.\\n     * @return sharedDecimals The shared decimals of the OFT.\\n     */\\n    function sharedDecimals() external view returns (uint8);\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return limit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return receipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    ) external view returns (OFTLimit memory, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory);\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return fee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(SendParam calldata _sendParam, bool _payInLzToken) external view returns (MessagingFee memory);\\n\\n    /**\\n     * @notice Executes the send() operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The fee information supplied by the caller.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds from fees etc. on the src.\\n     * @return receipt The LayerZero messaging receipt from the send() operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory, OFTReceipt memory);\\n}\\n\",\"keccak256\":\"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTComposeMsgCodec {\\n    // Offset constants for decoding composed messages\\n    uint8 private constant NONCE_OFFSET = 8;\\n    uint8 private constant SRC_EID_OFFSET = 12;\\n    uint8 private constant AMOUNT_LD_OFFSET = 44;\\n    uint8 private constant COMPOSE_FROM_OFFSET = 76;\\n\\n    /**\\n     * @dev Encodes a OFT composed message.\\n     * @param _nonce The nonce value.\\n     * @param _srcEid The source endpoint ID.\\n     * @param _amountLD The amount in local decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded Composed message.\\n     */\\n    function encode(\\n        uint64 _nonce,\\n        uint32 _srcEid,\\n        uint256 _amountLD,\\n        bytes memory _composeMsg // 0x[composeFrom][composeMsg]\\n    ) internal pure returns (bytes memory _msg) {\\n        _msg = abi.encodePacked(_nonce, _srcEid, _amountLD, _composeMsg);\\n    }\\n\\n    /**\\n     * @dev Retrieves the nonce for the composed message.\\n     * @param _msg The message.\\n     * @return The nonce value.\\n     */\\n    function nonce(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[:NONCE_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the source endpoint ID for the composed message.\\n     * @param _msg The message.\\n     * @return The source endpoint ID.\\n     */\\n    function srcEid(bytes calldata _msg) internal pure returns (uint32) {\\n        return uint32(bytes4(_msg[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in local decimals from the composed message.\\n     * @param _msg The message.\\n     * @return The amount in local decimals.\\n     */\\n    function amountLD(bytes calldata _msg) internal pure returns (uint256) {\\n        return uint256(bytes32(_msg[SRC_EID_OFFSET:AMOUNT_LD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composeFrom value from the composed message.\\n     * @param _msg The message.\\n     * @return The composeFrom value.\\n     */\\n    function composeFrom(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[AMOUNT_LD_OFFSET:COMPOSE_FROM_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message.\\n     * @param _msg The message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[COMPOSE_FROM_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTMsgCodec {\\n    // Offset constants for encoding and decoding OFT messages\\n    uint8 private constant SEND_TO_OFFSET = 32;\\n    uint8 private constant SEND_AMOUNT_SD_OFFSET = 40;\\n\\n    /**\\n     * @dev Encodes an OFT LayerZero message.\\n     * @param _sendTo The recipient address.\\n     * @param _amountShared The amount in shared decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded message.\\n     * @return hasCompose A boolean indicating whether the message has a composed payload.\\n     */\\n    function encode(\\n        bytes32 _sendTo,\\n        uint64 _amountShared,\\n        bytes memory _composeMsg\\n    ) internal view returns (bytes memory _msg, bool hasCompose) {\\n        hasCompose = _composeMsg.length > 0;\\n        // @dev Remote chains will want to know the composed function caller ie. msg.sender on the src.\\n        _msg = hasCompose\\n            ? abi.encodePacked(_sendTo, _amountShared, addressToBytes32(msg.sender), _composeMsg)\\n            : abi.encodePacked(_sendTo, _amountShared);\\n    }\\n\\n    /**\\n     * @dev Checks if the OFT message is composed.\\n     * @param _msg The OFT message.\\n     * @return A boolean indicating whether the message is composed.\\n     */\\n    function isComposed(bytes calldata _msg) internal pure returns (bool) {\\n        return _msg.length > SEND_AMOUNT_SD_OFFSET;\\n    }\\n\\n    /**\\n     * @dev Retrieves the recipient address from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The recipient address.\\n     */\\n    function sendTo(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[:SEND_TO_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in shared decimals from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The amount in shared decimals.\\n     */\\n    function amountSD(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[SEND_TO_OFFSET:SEND_AMOUNT_SD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[SEND_AMOUNT_SD_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0x5358948017669c03e157f871d8c38e988f9004dbd0801ad3119d2487f0d40b0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"./extensions/IERC20Metadata.sol\\\";\\nimport {Context} from \\\"../../utils/Context.sol\\\";\\nimport {IERC20Errors} from \\\"../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC-20\\n * applications.\\n */\\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\\n    mapping(address account => uint256) private _balances;\\n\\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * Both values are immutable: they can only be set once during construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Skips emitting an {Approval} event indicating an allowance update. This is not\\n     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            _totalSupply += value;\\n        } else {\\n            uint256 fromBalance = _balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                _balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                _totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                _balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     *\\n     * ```solidity\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        _allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance < type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x41f6b3b9e030561e7896dbef372b499cc8d418a80c3884a4d65a68f2fdc7493a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\nimport {IERC1363} from \\\"../../../interfaces/IERC1363.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    /**\\n     * @dev An operation with an ERC-20 token failed.\\n     */\\n    error SafeERC20FailedOperation(address token);\\n\\n    /**\\n     * @dev Indicates a failed `decreaseAllowance` request.\\n     */\\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        forceApprove(token, spender, oldAllowance + value);\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\n     * value, non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\n        unchecked {\\n            uint256 currentAllowance = token.allowance(address(this), spender);\\n            if (currentAllowance < requestedDecrease) {\\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\n            }\\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     *\\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\\n     * only sets the \\\"standard\\\" allowance. Any temporary allowance will remain active, in addition to the value being\\n     * set here.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            safeTransfer(token, to, value);\\n        } else if (!token.transferAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferFromAndCallRelaxed(\\n        IERC1363 token,\\n        address from,\\n        address to,\\n        uint256 value,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length == 0) {\\n            safeTransferFrom(token, from, to, value);\\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\\n     * once without retrying, and relies on the returned value to be true.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            forceApprove(token, to, value);\\n        } else if (!token.approveAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            // bubble errors\\n            if iszero(success) {\\n                let ptr := mload(0x40)\\n                returndatacopy(ptr, 0, returndatasize())\\n                revert(ptr, returndatasize())\\n            }\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n\\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        bool success;\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\\n    }\\n}\\n\",\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1390,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"peers","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_bytes32)"},{"astId":2166,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"preCrime","offset":0,"slot":"2","type":"t_address"},{"astId":2006,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"enforcedOptions","offset":0,"slot":"3","type":"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))"},{"astId":2786,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"msgInspector","offset":0,"slot":"4","type":"t_address"},{"astId":4272,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"_balances","offset":0,"slot":"5","type":"t_mapping(t_address,t_uint256)"},{"astId":4278,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"_allowances","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":4280,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"_totalSupply","offset":0,"slot":"7","type":"t_uint256"},{"astId":4282,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"_name","offset":0,"slot":"8","type":"t_string_storage"},{"astId":4284,"contract":"@layerzerolabs/oft-evm/contracts/OFT.sol:OFT","label":"_symbol","offset":0,"slot":"9","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint16,t_bytes_storage)":{"encoding":"mapping","key":"t_uint16","label":"mapping(uint16 => bytes)","numberOfBytes":"32","value":"t_bytes_storage"},"t_mapping(t_uint32,t_bytes32)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => mapping(uint16 => bytes))","numberOfBytes":"32","value":"t_mapping(t_uint16,t_bytes_storage)"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint16":{"encoding":"inplace","label":"uint16","numberOfBytes":"2"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"notice":"Checks if the path initialization is allowed based on the provided origin."},"approvalRequired()":{"notice":"Indicates whether the OFT contract requires approval of the 'token()' to send."},"combineOptions(uint32,uint16,bytes)":{"notice":"Combines options for a given endpoint and message type."},"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."},"nextNonce(uint32,bytes32)":{"notice":"Retrieves the next nonce for a given source endpoint and sender address."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"oftVersion()":{"notice":"Retrieves interfaceID and the version of the OFT."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"notice":"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation."},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"notice":"Provides a quote for the send() operation."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}},"@layerzerolabs/oft-evm/contracts/OFTCore.sol":{"OFTCore":{"abi":[{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[],"name":"InvalidLocalDecimals","type":"error"},{"inputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"name":"InvalidOptions","type":"error"},{"inputs":[],"name":"LzTokenUnavailable","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","type":"error"},{"inputs":[{"internalType":"uint256","name":"msgValue","type":"uint256"}],"name":"NotEnoughNative","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"OnlyEndpoint","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"inputs":[],"name":"OnlySelf","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"name":"SimulationResult","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"}],"name":"SlippageExceeded","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"indexed":false,"internalType":"struct EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"EnforcedOptionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"inspector","type":"address"}],"name":"MsgInspectorSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"dstEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTSent","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":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"peer","type":"bytes32"}],"name":"PeerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"preCrimeAddress","type":"address"}],"name":"PreCrimeSet","type":"event"},{"inputs":[],"name":"SEND","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SEND_AND_CALL","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"origin","type":"tuple"}],"name":"allowInitializePath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"approvalRequired","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint16","name":"_msgType","type":"uint16"},{"internalType":"bytes","name":"_extraOptions","type":"bytes"}],"name":"combineOptions","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimalConversionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"}],"name":"enforcedOptions","outputs":[{"internalType":"bytes","name":"enforcedOption","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"","type":"tuple"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"}],"name":"isComposeMsgSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"isPeer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"origin","type":"tuple"},{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"internalType":"struct InboundPacket[]","name":"_packets","type":"tuple[]"}],"name":"lzReceiveAndRevert","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceiveSimulate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"msgInspector","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oApp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"oftVersion","outputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preCrime","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"}],"name":"quoteOFT","outputs":[{"components":[{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"uint256","name":"maxAmountLD","type":"uint256"}],"internalType":"struct OFTLimit","name":"oftLimit","type":"tuple"},{"components":[{"internalType":"int256","name":"feeAmountLD","type":"int256"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct OFTFeeDetail[]","name":"oftFeeDetails","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"oftReceipt","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"internalType":"bool","name":"_payInLzToken","type":"bool"}],"name":"quoteSend","outputs":[{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"msgFee","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"_fee","type":"tuple"},{"internalType":"address","name":"_refundAddress","type":"address"}],"name":"send","outputs":[{"components":[{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"fee","type":"tuple"}],"internalType":"struct MessagingReceipt","name":"msgReceipt","type":"tuple"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"oftReceipt","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"internalType":"struct EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"setEnforcedOptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_msgInspector","type":"address"}],"name":"setMsgInspector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"setPeer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_preCrime","type":"address"}],"name":"setPreCrime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Abstract contract for the OftChain (OFT) token.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"SafeERC20FailedOperation(address)":[{"details":"An operation with an ERC-20 token failed."}]},"events":{"PreCrimeSet(address)":{"details":"Emitted when the preCrime contract address is set.","params":{"preCrimeAddress":"The address of the preCrime contract."}}},"kind":"dev","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"details":"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.","params":{"origin":"The origin information containing the source endpoint and sender address."},"returns":{"_0":"Whether the path has been initialized."}},"approvalRequired()":{"details":"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.","returns":{"_0":"requiresApproval Needs approval of the underlying token implementation."}},"combineOptions(uint32,uint16,bytes)":{"details":"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.","params":{"_eid":"The endpoint ID.","_extraOptions":"Additional options passed by the caller.","_msgType":"The OAPP message type."},"returns":{"_0":"options The combination of caller specified options AND enforced options."}},"constructor":{"details":"Constructor.","params":{"_delegate":"The delegate capable of making OApp configurations inside of the endpoint.","_endpoint":"The address of the LayerZero endpoint.","_localDecimals":"The decimals of the token on the local chain (this chain)."}},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_sender":"The sender address."},"returns":{"_0":"isSender Is a valid sender."}},"isPeer(uint32,bytes32)":{"details":"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.","params":{"_eid":"The endpoint ID to check.","_peer":"The peer to check."},"returns":{"_0":"Whether the peer passed is considered 'trusted' by the OApp."}},"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.","params":{"_executor":"The address of the executor for the received message.","_extraData":"Additional arbitrary data provided by the corresponding executor.","_guid":"The unique identifier for the received LayerZero message.","_message":"The payload of the received message.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":{"details":"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.","params":{"_packets":"An array of InboundPacket objects representing received packets to be delivered."}},"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.","params":{"_executor":"The executor address for the packet.","_extraData":"Additional data for the packet.","_guid":"The unique identifier of the packet.","_message":"The message payload of the packet.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"nextNonce(uint32,bytes32)":{"details":"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.","returns":{"nonce":"The next nonce."}},"oApp()":{"details":"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.","returns":{"_0":"The address of the OApp contract."}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol implementation.","senderVersion":"The version of the OAppSender.sol implementation."}},"oftVersion()":{"details":"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)","returns":{"interfaceId":"The interface ID.","version":"The version."}},"owner()":{"details":"Returns the address of the current owner."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"params":{"_sendParam":"The parameters for the send operation."},"returns":{"oftFeeDetails":"The details of OFT fees.","oftLimit":"The OFT limit information.","oftReceipt":"The OFT receipt information."}},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"details":"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.","params":{"_payInLzToken":"Flag indicating whether the caller is paying in the LZ token.","_sendParam":"The parameters for the send() operation."},"returns":{"msgFee":"The calculated LayerZero messaging fee from the send() operation."}},"renounceOwnership()":{"details":"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."},"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":{"details":"Executes the send operation.MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.","params":{"_fee":"The calculated fee for the send() operation.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.","_refundAddress":"The address to receive any excess funds.","_sendParam":"The parameters for the send operation."},"returns":{"msgReceipt":"The receipt for the send operation.","oftReceipt":"The OFT receipt information."}},"setDelegate(address)":{"details":"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.","params":{"_delegate":"The address of the delegate to be set."}},"setEnforcedOptions((uint32,uint16,bytes)[])":{"details":"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().","params":{"_enforcedOptions":"An array of EnforcedOptionParam structures specifying enforced options."}},"setMsgInspector(address)":{"details":"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.","params":{"_msgInspector":"The address of the message inspector."}},"setPeer(uint32,bytes32)":{"details":"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.","params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"setPreCrime(address)":{"details":"Sets the preCrime contract address.","params":{"_preCrime":"The address of the preCrime contract."}},"sharedDecimals()":{"details":"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615","returns":{"_0":"The shared decimals of the OFT."}},"token()":{"returns":{"_0":"token The address of the ERC20 token implementation."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"title":"OFTCore","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"SEND()":"1f5e1334","SEND_AND_CALL()":"134d4f25","allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","approvalRequired()":"9f68b964","combineOptions(uint32,uint16,bytes)":"bc70b354","decimalConversionRate()":"963efcaa","endpoint()":"5e280f11","enforcedOptions(uint32,uint16)":"5535d461","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","isPeer(uint32,bytes32)":"5a0dfe4d","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":"bd815db0","lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"d045a0dc","msgInspector()":"111ecdad","nextNonce(uint32,bytes32)":"7d25a05e","oApp()":"52ae2879","oAppVersion()":"17442b70","oftVersion()":"156a0d0f","owner()":"8da5cb5b","peers(uint32)":"bb0b6a53","preCrime()":"b731ea0a","quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":"0d35b415","quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":"3b6f743b","renounceOwnership()":"715018a6","send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":"c7c7f5b3","setDelegate(address)":"ca5eb5e1","setEnforcedOptions((uint32,uint16,bytes)[])":"b98bd070","setMsgInspector(address)":"6fc1b31e","setPeer(uint32,bytes32)":"3400288b","setPreCrime(address)":"d4243885","sharedDecimals()":"857749b0","token()":"fc0c546a","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inspector\",\"type\":\"address\"}],\"name\":\"MsgInspectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTSent\",\"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\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SEND\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEND_AND_CALL\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimalConversionRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"enforcedOption\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"isPeer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct InboundPacket[]\",\"name\":\"_packets\",\"type\":\"tuple[]\"}],\"name\":\"lzReceiveAndRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceiveSimulate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"msgInspector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"oftLimit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct OFTFeeDetail[]\",\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"msgFee\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"_fee\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"msgReceipt\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_msgInspector\",\"type\":\"address\"}],\"name\":\"setMsgInspector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Abstract contract for the OftChain (OFT) token.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"approvalRequired()\":{\"details\":\"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"combineOptions(uint32,uint16,bytes)\":{\"details\":\"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OAPP message type.\"},\"returns\":{\"_0\":\"options The combination of caller specified options AND enforced options.\"}},\"constructor\":{\"details\":\"Constructor.\",\"params\":{\"_delegate\":\"The delegate capable of making OApp configurations inside of the endpoint.\",\"_endpoint\":\"The address of the LayerZero endpoint.\",\"_localDecimals\":\"The decimals of the token on the local chain (this chain).\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"isPeer(uint32,bytes32)\":{\"details\":\"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\",\"params\":{\"_eid\":\"The endpoint ID to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"oftFeeDetails\":\"The details of OFT fees.\",\"oftLimit\":\"The OFT limit information.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"msgFee\":\"The calculated LayerZero messaging fee from the send() operation.\"}},\"renounceOwnership()\":{\"details\":\"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.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"Executes the send operation.MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The calculated fee for the send() operation.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"msgReceipt\":\"The receipt for the send operation.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\",\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}},\"setMsgInspector(address)\":{\"details\":\"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.\",\"params\":{\"_msgInspector\":\"The address of the message inspector.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"sharedDecimals()\":{\"details\":\"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\",\"returns\":{\"_0\":\"The shared decimals of the OFT.\"}},\"token()\":{\"returns\":{\"_0\":\"token The address of the ERC20 token implementation.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"OFTCore\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"},\"token()\":{\"notice\":\"Retrieves the address of the token associated with the OFT.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oft-evm/contracts/OFTCore.sol\":\"OFTCore\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nimport { Packet } from \\\"../../interfaces/ISendLib.sol\\\";\\nimport { AddressCast } from \\\"../../libs/AddressCast.sol\\\";\\n\\nlibrary PacketV1Codec {\\n    using AddressCast for address;\\n    using AddressCast for bytes32;\\n\\n    uint8 internal constant PACKET_VERSION = 1;\\n\\n    // header (version + nonce + path)\\n    // version\\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\\n    //    nonce\\n    uint256 private constant NONCE_OFFSET = 1;\\n    //    path\\n    uint256 private constant SRC_EID_OFFSET = 9;\\n    uint256 private constant SENDER_OFFSET = 13;\\n    uint256 private constant DST_EID_OFFSET = 45;\\n    uint256 private constant RECEIVER_OFFSET = 49;\\n    // payload (guid + message)\\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\\n    uint256 private constant MESSAGE_OFFSET = 113;\\n\\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\\n        encodedPacket = abi.encodePacked(\\n            PACKET_VERSION,\\n            _packet.nonce,\\n            _packet.srcEid,\\n            _packet.sender.toBytes32(),\\n            _packet.dstEid,\\n            _packet.receiver,\\n            _packet.guid,\\n            _packet.message\\n        );\\n    }\\n\\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                PACKET_VERSION,\\n                _packet.nonce,\\n                _packet.srcEid,\\n                _packet.sender.toBytes32(),\\n                _packet.dstEid,\\n                _packet.receiver\\n            );\\n    }\\n\\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\\n        return abi.encodePacked(_packet.guid, _packet.message);\\n    }\\n\\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return _packet[0:GUID_OFFSET];\\n    }\\n\\n    function version(bytes calldata _packet) internal pure returns (uint8) {\\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\\n    }\\n\\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\\n    }\\n\\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\\n    }\\n\\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\\n        return sender(_packet).toAddress();\\n    }\\n\\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\\n    }\\n\\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\\n    }\\n\\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\\n        return receiver(_packet).toAddress();\\n    }\\n\\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\\n    }\\n\\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[MESSAGE_OFFSET:]);\\n    }\\n\\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[GUID_OFFSET:]);\\n    }\\n\\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\\n        return keccak256(payload(_packet));\\n    }\\n}\\n\",\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the 'MessagingFee' and 'MessagingReceipt' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppSender, MessagingFee, MessagingReceipt } from \\\"./OAppSender.sol\\\";\\n// @dev Import the 'Origin' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppReceiver, Origin } from \\\"./OAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OApp\\n * @dev Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.\\n */\\nabstract contract OApp is OAppSender, OAppReceiver {\\n    /**\\n     * @dev Constructor to initialize the OApp with the provided endpoint and owner.\\n     * @param _endpoint The address of the LOCAL LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(address _endpoint, address _delegate) OAppCore(_endpoint, _delegate) {}\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol implementation.\\n     * @return receiverVersion The version of the OAppReceiver.sol implementation.\\n     */\\n    function oAppVersion()\\n        public\\n        pure\\n        virtual\\n        override(OAppSender, OAppReceiver)\\n        returns (uint64 senderVersion, uint64 receiverVersion)\\n    {\\n        return (SENDER_VERSION, RECEIVER_VERSION);\\n    }\\n}\\n\",\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IOAppReceiver, Origin } from \\\"./interfaces/IOAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppReceiver\\n * @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\\n */\\nabstract contract OAppReceiver is IOAppReceiver, OAppCore {\\n    // Custom error message for when the caller is not the registered endpoint/\\n    error OnlyEndpoint(address addr);\\n\\n    // @dev The version of the OAppReceiver implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant RECEIVER_VERSION = 2;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.\\n     * ie. this is a RECEIVE only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (0, RECEIVER_VERSION);\\n    }\\n\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @dev _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @dev _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata /*_origin*/,\\n        bytes calldata /*_message*/,\\n        address _sender\\n    ) public view virtual returns (bool) {\\n        return _sender == address(this);\\n    }\\n\\n    /**\\n     * @notice Checks if the path initialization is allowed based on the provided origin.\\n     * @param origin The origin information containing the source endpoint and sender address.\\n     * @return Whether the path has been initialized.\\n     *\\n     * @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.\\n     * @dev This defaults to assuming if a peer has been set, its initialized.\\n     * Can be overridden by the OApp if there is other logic to determine this.\\n     */\\n    function allowInitializePath(Origin calldata origin) public view virtual returns (bool) {\\n        return peers[origin.srcEid] == origin.sender;\\n    }\\n\\n    /**\\n     * @notice Retrieves the next nonce for a given source endpoint and sender address.\\n     * @dev _srcEid The source endpoint ID.\\n     * @dev _sender The sender address.\\n     * @return nonce The next nonce.\\n     *\\n     * @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.\\n     * @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.\\n     * @dev This is also enforced by the OApp.\\n     * @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\\n     */\\n    function nextNonce(uint32 /*_srcEid*/, bytes32 /*_sender*/) public view virtual returns (uint64 nonce) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Entry point for receiving messages or packets from the endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The payload of the received message.\\n     * @param _executor The address of the executor for the received message.\\n     * @param _extraData Additional arbitrary data provided by the corresponding executor.\\n     *\\n     * @dev Entry point for receiving msg/packet from the LayerZero endpoint.\\n     */\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) public payable virtual {\\n        // Ensures that only the endpoint can attempt to lzReceive() messages to this OApp.\\n        if (address(endpoint) != msg.sender) revert OnlyEndpoint(msg.sender);\\n\\n        // Ensure that the sender matches the expected peer for the source endpoint.\\n        if (_getPeerOrRevert(_origin.srcEid) != _origin.sender) revert OnlyPeer(_origin.srcEid, _origin.sender);\\n\\n        // Call the internal OApp implementation of lzReceive.\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n}\\n\",\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { SafeERC20, IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport { MessagingParams, MessagingFee, MessagingReceipt } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppSender\\n * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\\n */\\nabstract contract OAppSender is OAppCore {\\n    using SafeERC20 for IERC20;\\n\\n    // Custom error messages\\n    error NotEnoughNative(uint256 msgValue);\\n    error LzTokenUnavailable();\\n\\n    // @dev The version of the OAppSender implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant SENDER_VERSION = 1;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\\n     * ie. this is a SEND only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (SENDER_VERSION, 0);\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\\n     * @return fee The calculated MessagingFee for the message.\\n     *      - nativeFee: The native fee for the message.\\n     *      - lzTokenFee: The LZ token fee for the message.\\n     */\\n    function _quote(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        bool _payInLzToken\\n    ) internal view virtual returns (MessagingFee memory fee) {\\n        return\\n            endpoint.quote(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),\\n                address(this)\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _fee The calculated LayerZero fee for the message.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess fee values sent to the endpoint.\\n     * @return receipt The receipt for the sent message.\\n     *      - guid: The unique identifier for the sent message.\\n     *      - nonce: The nonce of the sent message.\\n     *      - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _lzSend(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        MessagingFee memory _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory receipt) {\\n        // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.\\n        uint256 messageValue = _payNative(_fee.nativeFee);\\n        if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);\\n\\n        return\\n            // solhint-disable-next-line check-send-result\\n            endpoint.send{ value: messageValue }(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),\\n                _refundAddress\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the native fee associated with the message.\\n     * @param _nativeFee The native fee to be paid.\\n     * @return nativeFee The amount of native currency paid.\\n     *\\n     * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\\n     * this will need to be overridden because msg.value would contain multiple lzFees.\\n     * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\\n     * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\\n     * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.\\n     */\\n    function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {\\n        if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);\\n        return _nativeFee;\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the LZ token fee associated with the message.\\n     * @param _lzTokenFee The LZ token fee to be paid.\\n     *\\n     * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\\n     * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().\\n     */\\n    function _payLzToken(uint256 _lzTokenFee) internal virtual {\\n        // @dev Cannot cache the token because it is not immutable in the endpoint.\\n        address lzToken = endpoint.lzToken();\\n        if (lzToken == address(0)) revert LzTokenUnavailable();\\n\\n        // Pay LZ token fee by sending tokens to the endpoint.\\n        IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);\\n    }\\n}\\n\",\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title IOAppMsgInspector\\n * @dev Interface for the OApp Message Inspector, allowing examination of message and options contents.\\n */\\ninterface IOAppMsgInspector {\\n    // Custom error message for inspection failure\\n    error InspectionFailed(bytes message, bytes options);\\n\\n    /**\\n     * @notice Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid.\\n     * @param _message The message payload to be inspected.\\n     * @param _options Additional options or parameters for inspection.\\n     * @return valid A boolean indicating whether the inspection passed (true) or failed (false).\\n     *\\n     * @dev Optionally done as a revert, OR use the boolean provided to handle the failure.\\n     */\\n    function inspect(bytes calldata _message, bytes calldata _options) external view returns (bool valid);\\n}\\n\",\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Struct representing enforced option parameters.\\n */\\nstruct EnforcedOptionParam {\\n    uint32 eid; // Endpoint ID\\n    uint16 msgType; // Message Type\\n    bytes options; // Additional options\\n}\\n\\n/**\\n * @title IOAppOptionsType3\\n * @dev Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\\n */\\ninterface IOAppOptionsType3 {\\n    // Custom error message for invalid options\\n    error InvalidOptions(bytes options);\\n\\n    // Event emitted when enforced options are set\\n    event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\\n\\n    /**\\n     * @notice Sets enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OApp message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) external view returns (bytes memory options);\\n}\\n\",\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroReceiver, Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata _origin,\\n        bytes calldata _message,\\n        address _sender\\n    ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppOptionsType3, EnforcedOptionParam } from \\\"../interfaces/IOAppOptionsType3.sol\\\";\\n\\n/**\\n * @title OAppOptionsType3\\n * @dev Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.\\n */\\nabstract contract OAppOptionsType3 is IOAppOptionsType3, Ownable {\\n    uint16 internal constant OPTION_TYPE_3 = 3;\\n\\n    // @dev The \\\"msgType\\\" should be defined in the child contract.\\n    mapping(uint32 eid => mapping(uint16 msgType => bytes enforcedOption)) public enforcedOptions;\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) public virtual onlyOwner {\\n        _setEnforcedOptions(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function _setEnforcedOptions(EnforcedOptionParam[] memory _enforcedOptions) internal virtual {\\n        for (uint256 i = 0; i < _enforcedOptions.length; i++) {\\n            // @dev Enforced options are only available for optionType 3, as type 1 and 2 dont support combining.\\n            _assertOptionsType3(_enforcedOptions[i].options);\\n            enforcedOptions[_enforcedOptions[i].eid][_enforcedOptions[i].msgType] = _enforcedOptions[i].options;\\n        }\\n\\n        emit EnforcedOptionSet(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OAPP message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     *\\n     * @dev If there is an enforced lzReceive option:\\n     * - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether}\\n     * - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.\\n     * @dev This presence of duplicated options is handled off-chain in the verifier/executor.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) public view virtual returns (bytes memory) {\\n        bytes memory enforced = enforcedOptions[_eid][_msgType];\\n\\n        // No enforced options, pass whatever the caller supplied, even if it's empty or legacy type 1/2 options.\\n        if (enforced.length == 0) return _extraOptions;\\n\\n        // No caller options, return enforced\\n        if (_extraOptions.length == 0) return enforced;\\n\\n        // @dev If caller provided _extraOptions, must be type 3 as its the ONLY type that can be combined.\\n        if (_extraOptions.length >= 2) {\\n            _assertOptionsType3(_extraOptions);\\n            // @dev Remove the first 2 bytes containing the type from the _extraOptions and combine with enforced.\\n            return bytes.concat(enforced, _extraOptions[2:]);\\n        }\\n\\n        // No valid set of options was found.\\n        revert InvalidOptions(_extraOptions);\\n    }\\n\\n    /**\\n     * @dev Internal function to assert that options are of type 3.\\n     * @param _options The options to be checked.\\n     */\\n    function _assertOptionsType3(bytes memory _options) internal pure virtual {\\n        uint16 optionsType;\\n        assembly {\\n            optionsType := mload(add(_options, 2))\\n        }\\n        if (optionsType != OPTION_TYPE_3) revert InvalidOptions(_options);\\n    }\\n}\\n\",\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IPreCrime } from \\\"./interfaces/IPreCrime.sol\\\";\\nimport { IOAppPreCrimeSimulator, InboundPacket, Origin } from \\\"./interfaces/IOAppPreCrimeSimulator.sol\\\";\\n\\n/**\\n * @title OAppPreCrimeSimulator\\n * @dev Abstract contract serving as the base for preCrime simulation functionality in an OApp.\\n */\\nabstract contract OAppPreCrimeSimulator is IOAppPreCrimeSimulator, Ownable {\\n    // The address of the preCrime implementation.\\n    address public preCrime;\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     *\\n     * @dev The simulator contract is the base contract for the OApp by default.\\n     * @dev If the simulator is a separate contract, override this function.\\n     */\\n    function oApp() external view virtual returns (address) {\\n        return address(this);\\n    }\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) public virtual onlyOwner {\\n        preCrime = _preCrime;\\n        emit PreCrimeSet(_preCrime);\\n    }\\n\\n    /**\\n     * @dev Interface for pre-crime simulations. Always reverts at the end with the simulation results.\\n     * @param _packets An array of InboundPacket objects representing received packets to be delivered.\\n     *\\n     * @dev WARNING: MUST revert at the end with the simulation results.\\n     * @dev Gives the preCrime implementation the ability to mock sending packets to the lzReceive function,\\n     * WITHOUT actually executing them.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) public payable virtual {\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            InboundPacket calldata packet = _packets[i];\\n\\n            // Ignore packets that are not from trusted peers.\\n            if (!isPeer(packet.origin.srcEid, packet.origin.sender)) continue;\\n\\n            // @dev Because a verifier is calling this function, it doesnt have access to executor params:\\n            //  - address _executor\\n            //  - bytes calldata _extraData\\n            // preCrime will NOT work for OApps that rely on these two parameters inside of their _lzReceive().\\n            // They are instead stubbed to default values, address(0) and bytes(\\\"\\\")\\n            // @dev Calling this.lzReceiveSimulate removes ability for assembly return 0 callstack exit,\\n            // which would cause the revert to be ignored.\\n            this.lzReceiveSimulate{ value: packet.value }(\\n                packet.origin,\\n                packet.guid,\\n                packet.message,\\n                packet.executor,\\n                packet.extraData\\n            );\\n        }\\n\\n        // @dev Revert with the simulation results. msg.sender must implement IPreCrime.buildSimulationResult().\\n        revert SimulationResult(IPreCrime(msg.sender).buildSimulationResult());\\n    }\\n\\n    /**\\n     * @dev Is effectively an internal function because msg.sender must be address(this).\\n     * Allows resetting the call stack for 'internal' calls.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier of the packet.\\n     * @param _message The message payload of the packet.\\n     * @param _executor The executor address for the packet.\\n     * @param _extraData Additional data for the packet.\\n     */\\n    function lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable virtual {\\n        // @dev Ensure ONLY can be called 'internally'.\\n        if (msg.sender != address(this)) revert OnlySelf();\\n        _lzReceiveSimulate(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The GUID of the LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual returns (bool);\\n}\\n\",\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the Origin so it's exposed to OAppPreCrimeSimulator implementers.\\n// solhint-disable-next-line no-unused-import\\nimport { InboundPacket, Origin } from \\\"../libs/Packet.sol\\\";\\n\\n/**\\n * @title IOAppPreCrimeSimulator Interface\\n * @dev Interface for the preCrime simulation functionality in an OApp.\\n */\\ninterface IOAppPreCrimeSimulator {\\n    // @dev simulation result used in PreCrime implementation\\n    error SimulationResult(bytes result);\\n    error OnlySelf();\\n\\n    /**\\n     * @dev Emitted when the preCrime contract address is set.\\n     * @param preCrimeAddress The address of the preCrime contract.\\n     */\\n    event PreCrimeSet(address preCrimeAddress);\\n\\n    /**\\n     * @dev Retrieves the address of the preCrime contract implementation.\\n     * @return The address of the preCrime contract.\\n     */\\n    function preCrime() external view returns (address);\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     */\\n    function oApp() external view returns (address);\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) external;\\n\\n    /**\\n     * @dev Mocks receiving a packet, then reverts with a series of data to infer the state/result.\\n     * @param _packets An array of LayerZero InboundPacket objects representing received packets.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) external payable;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\nstruct PreCrimePeer {\\n    uint32 eid;\\n    bytes32 preCrime;\\n    bytes32 oApp;\\n}\\n\\n// TODO not done yet\\ninterface IPreCrime {\\n    error OnlyOffChain();\\n\\n    // for simulate()\\n    error PacketOversize(uint256 max, uint256 actual);\\n    error PacketUnsorted();\\n    error SimulationFailed(bytes reason);\\n\\n    // for preCrime()\\n    error SimulationResultNotFound(uint32 eid);\\n    error InvalidSimulationResult(uint32 eid, bytes reason);\\n    error CrimeFound(bytes crime);\\n\\n    function getConfig(bytes[] calldata _packets, uint256[] calldata _packetMsgValues) external returns (bytes memory);\\n\\n    function simulate(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues\\n    ) external payable returns (bytes memory);\\n\\n    function buildSimulationResult() external view returns (bytes memory);\\n\\n    function preCrime(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues,\\n        bytes[] calldata _simulations\\n    ) external;\\n\\n    function version() external view returns (uint64 major, uint8 minor);\\n}\\n\",\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { PacketV1Codec } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\\\";\\n\\n/**\\n * @title InboundPacket\\n * @dev Structure representing an inbound packet received by the contract.\\n */\\nstruct InboundPacket {\\n    Origin origin; // Origin information of the packet.\\n    uint32 dstEid; // Destination endpointId of the packet.\\n    address receiver; // Receiver address for the packet.\\n    bytes32 guid; // Unique identifier of the packet.\\n    uint256 value; // msg.value of the packet.\\n    address executor; // Executor address for the packet.\\n    bytes message; // Message payload of the packet.\\n    bytes extraData; // Additional arbitrary data for the packet.\\n}\\n\\n/**\\n * @title PacketDecoder\\n * @dev Library for decoding LayerZero packets.\\n */\\nlibrary PacketDecoder {\\n    using PacketV1Codec for bytes;\\n\\n    /**\\n     * @dev Decode an inbound packet from the given packet data.\\n     * @param _packet The packet data to decode.\\n     * @return packet An InboundPacket struct representing the decoded packet.\\n     */\\n    function decode(bytes calldata _packet) internal pure returns (InboundPacket memory packet) {\\n        packet.origin = Origin(_packet.srcEid(), _packet.sender(), _packet.nonce());\\n        packet.dstEid = _packet.dstEid();\\n        packet.receiver = _packet.receiverB20();\\n        packet.guid = _packet.guid();\\n        packet.message = _packet.message();\\n    }\\n\\n    /**\\n     * @dev Decode multiple inbound packets from the given packet data and associated message values.\\n     * @param _packets An array of packet data to decode.\\n     * @param _packetMsgValues An array of associated message values for each packet.\\n     * @return packets An array of InboundPacket structs representing the decoded packets.\\n     */\\n    function decode(\\n        bytes[] calldata _packets,\\n        uint256[] memory _packetMsgValues\\n    ) internal pure returns (InboundPacket[] memory packets) {\\n        packets = new InboundPacket[](_packets.length);\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            bytes calldata packet = _packets[i];\\n            packets[i] = PacketDecoder.decode(packet);\\n            // @dev Allows the verifier to specify the msg.value that gets passed in lzReceive.\\n            packets[i].value = _packetMsgValues[i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/OFTCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport { OApp, Origin } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\\\";\\nimport { OAppOptionsType3 } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\\\";\\nimport { IOAppMsgInspector } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\\\";\\n\\nimport { OAppPreCrimeSimulator } from \\\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\\\";\\n\\nimport { IOFT, SendParam, OFTLimit, OFTReceipt, OFTFeeDetail, MessagingReceipt, MessagingFee } from \\\"./interfaces/IOFT.sol\\\";\\nimport { OFTMsgCodec } from \\\"./libs/OFTMsgCodec.sol\\\";\\nimport { OFTComposeMsgCodec } from \\\"./libs/OFTComposeMsgCodec.sol\\\";\\n\\n/**\\n * @title OFTCore\\n * @dev Abstract contract for the OftChain (OFT) token.\\n */\\nabstract contract OFTCore is IOFT, OApp, OAppPreCrimeSimulator, OAppOptionsType3 {\\n    using OFTMsgCodec for bytes;\\n    using OFTMsgCodec for bytes32;\\n\\n    // @notice Provides a conversion rate when swapping between denominations of SD and LD\\n    //      - shareDecimals == SD == shared Decimals\\n    //      - localDecimals == LD == local decimals\\n    // @dev Considers that tokens have different decimal amounts on various chains.\\n    // @dev eg.\\n    //  For a token\\n    //      - locally with 4 decimals --> 1.2345 => uint(12345)\\n    //      - remotely with 2 decimals --> 1.23 => uint(123)\\n    //      - The conversion rate would be 10 ** (4 - 2) = 100\\n    //  @dev If you want to send 1.2345 -> (uint 12345), you CANNOT represent that value on the remote,\\n    //  you can only display 1.23 -> uint(123).\\n    //  @dev To preserve the dust that would otherwise be lost on that conversion,\\n    //  we need to unify a denomination that can be represented on ALL chains inside of the OFT mesh\\n    uint256 public immutable decimalConversionRate;\\n\\n    // @notice Msg types that are used to identify the various OFT operations.\\n    // @dev This can be extended in child contracts for non-default oft operations\\n    // @dev These values are used in things like combineOptions() in OAppOptionsType3.sol.\\n    uint16 public constant SEND = 1;\\n    uint16 public constant SEND_AND_CALL = 2;\\n\\n    // Address of an optional contract to inspect both 'message' and 'options'\\n    address public msgInspector;\\n    event MsgInspectorSet(address inspector);\\n\\n    /**\\n     * @dev Constructor.\\n     * @param _localDecimals The decimals of the token on the local chain (this chain).\\n     * @param _endpoint The address of the LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(uint8 _localDecimals, address _endpoint, address _delegate) OApp(_endpoint, _delegate) {\\n        if (_localDecimals < sharedDecimals()) revert InvalidLocalDecimals();\\n        decimalConversionRate = 10 ** (_localDecimals - sharedDecimals());\\n    }\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external pure virtual returns (bytes4 interfaceId, uint64 version) {\\n        return (type(IOFT).interfaceId, 1);\\n    }\\n\\n    /**\\n     * @dev Retrieves the shared decimals of the OFT.\\n     * @return The shared decimals of the OFT.\\n     *\\n     * @dev Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap\\n     * Lowest common decimal denominator between chains.\\n     * Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64).\\n     * For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller.\\n     * ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\\n     */\\n    function sharedDecimals() public view virtual returns (uint8) {\\n        return 6;\\n    }\\n\\n    /**\\n     * @dev Sets the message inspector address for the OFT.\\n     * @param _msgInspector The address of the message inspector.\\n     *\\n     * @dev This is an optional contract that can be used to inspect both 'message' and 'options'.\\n     * @dev Set it to address(0) to disable it, or set it to a contract address to enable it.\\n     */\\n    function setMsgInspector(address _msgInspector) public virtual onlyOwner {\\n        msgInspector = _msgInspector;\\n        emit MsgInspectorSet(_msgInspector);\\n    }\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return oftLimit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return oftReceipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    )\\n        external\\n        view\\n        virtual\\n        returns (OFTLimit memory oftLimit, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory oftReceipt)\\n    {\\n        uint256 minAmountLD = 0; // Unused in the default implementation.\\n        uint256 maxAmountLD = IERC20(this.token()).totalSupply(); // Unused in the default implementation.\\n        oftLimit = OFTLimit(minAmountLD, maxAmountLD);\\n\\n        // Unused in the default implementation; reserved for future complex fee details.\\n        oftFeeDetails = new OFTFeeDetail[](0);\\n\\n        // @dev This is the same as the send() operation, but without the actual send.\\n        // - amountSentLD is the amount in local decimals that would be sent from the sender.\\n        // - amountReceivedLD is the amount in local decimals that will be credited to the recipient on the remote OFT instance.\\n        // @dev The amountSentLD MIGHT not equal the amount the user actually receives. HOWEVER, the default does.\\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debitView(\\n            _sendParam.amountLD,\\n            _sendParam.minAmountLD,\\n            _sendParam.dstEid\\n        );\\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return msgFee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(\\n        SendParam calldata _sendParam,\\n        bool _payInLzToken\\n    ) external view virtual returns (MessagingFee memory msgFee) {\\n        // @dev mock the amount to receive, this is the same operation used in the send().\\n        // The quote is as similar as possible to the actual send() operation.\\n        (, uint256 amountReceivedLD) = _debitView(_sendParam.amountLD, _sendParam.minAmountLD, _sendParam.dstEid);\\n\\n        // @dev Builds the options and OFT message to quote in the endpoint.\\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\\n\\n        // @dev Calculates the LayerZero fee for the send() operation.\\n        return _quote(_sendParam.dstEid, message, options, _payInLzToken);\\n    }\\n\\n    /**\\n     * @dev Executes the send operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The calculated fee for the send() operation.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds.\\n     * @return msgReceipt The receipt for the send operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\\n        return _send(_sendParam, _fee, _refundAddress);\\n    }\\n\\n    /**\\n     * @dev Internal function to execute the send operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The calculated fee for the send() operation.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds.\\n     * @return msgReceipt The receipt for the send operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\\n        // @dev Applies the token transfers regarding this send() operation.\\n        // - amountSentLD is the amount in local decimals that was ACTUALLY sent/debited from the sender.\\n        // - amountReceivedLD is the amount in local decimals that will be received/credited to the recipient on the remote OFT instance.\\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debit(\\n            msg.sender,\\n            _sendParam.amountLD,\\n            _sendParam.minAmountLD,\\n            _sendParam.dstEid\\n        );\\n\\n        // @dev Builds the options and OFT message to quote in the endpoint.\\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\\n\\n        // @dev Sends the message to the LayerZero endpoint and returns the LayerZero msg receipt.\\n        msgReceipt = _lzSend(_sendParam.dstEid, message, options, _fee, _refundAddress);\\n        // @dev Formulate the OFT receipt.\\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\\n\\n        emit OFTSent(msgReceipt.guid, _sendParam.dstEid, msg.sender, amountSentLD, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @dev Internal function to build the message and options.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _amountLD The amount in local decimals.\\n     * @return message The encoded message.\\n     * @return options The encoded options.\\n     */\\n    function _buildMsgAndOptions(\\n        SendParam calldata _sendParam,\\n        uint256 _amountLD\\n    ) internal view virtual returns (bytes memory message, bytes memory options) {\\n        bool hasCompose;\\n        // @dev This generated message has the msg.sender encoded into the payload so the remote knows who the caller is.\\n        (message, hasCompose) = OFTMsgCodec.encode(\\n            _sendParam.to,\\n            _toSD(_amountLD),\\n            // @dev Must be include a non empty bytes if you want to compose, EVEN if you dont need it on the remote.\\n            // EVEN if you dont require an arbitrary payload to be sent... eg. '0x01'\\n            _sendParam.composeMsg\\n        );\\n        // @dev Change the msg type depending if its composed or not.\\n        uint16 msgType = hasCompose ? SEND_AND_CALL : SEND;\\n        // @dev Combine the callers _extraOptions with the enforced options via the OAppOptionsType3.\\n        options = combineOptions(_sendParam.dstEid, msgType, _sendParam.extraOptions);\\n\\n        // @dev Optionally inspect the message and options depending if the OApp owner has set a msg inspector.\\n        // @dev If it fails inspection, needs to revert in the implementation. ie. does not rely on return boolean\\n        address inspector = msgInspector; // caches the msgInspector to avoid potential double storage read\\n        if (inspector != address(0)) IOAppMsgInspector(inspector).inspect(message, options);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the receive on the LayerZero endpoint.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The encoded message.\\n     * @dev _executor The address of the executor.\\n     * @dev _extraData Additional data.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address /*_executor*/, // @dev unused in the default implementation.\\n        bytes calldata /*_extraData*/ // @dev unused in the default implementation.\\n    ) internal virtual override {\\n        // @dev The src sending chain doesnt know the address length on this chain (potentially non-evm)\\n        // Thus everything is bytes32() encoded in flight.\\n        address toAddress = _message.sendTo().bytes32ToAddress();\\n        // @dev Credit the amountLD to the recipient and return the ACTUAL amount the recipient received in local decimals\\n        uint256 amountReceivedLD = _credit(toAddress, _toLD(_message.amountSD()), _origin.srcEid);\\n\\n        if (_message.isComposed()) {\\n            // @dev Proprietary composeMsg format for the OFT.\\n            bytes memory composeMsg = OFTComposeMsgCodec.encode(\\n                _origin.nonce,\\n                _origin.srcEid,\\n                amountReceivedLD,\\n                _message.composeMsg()\\n            );\\n\\n            // @dev Stores the lzCompose payload that will be executed in a separate tx.\\n            // Standardizes functionality for executing arbitrary contract invocation on some non-evm chains.\\n            // @dev The off-chain executor will listen and process the msg based on the src-chain-callers compose options passed.\\n            // @dev The index is used when a OApp needs to compose multiple msgs on lzReceive.\\n            // For default OFT implementation there is only 1 compose msg per lzReceive, thus its always 0.\\n            endpoint.sendCompose(toAddress, _guid, 0 /* the index of the composed message*/, composeMsg);\\n        }\\n\\n        emit OFTReceived(_guid, _origin.srcEid, toAddress, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual override {\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Check if the peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint ID to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     *\\n     * @dev Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual override returns (bool) {\\n        return peers[_eid] == _peer;\\n    }\\n\\n    /**\\n     * @dev Internal function to remove dust from the given local decimal amount.\\n     * @param _amountLD The amount in local decimals.\\n     * @return amountLD The amount after removing dust.\\n     *\\n     * @dev Prevents the loss of dust when moving amounts between chains with different decimals.\\n     * @dev eg. uint(123) with a conversion rate of 100 becomes uint(100).\\n     */\\n    function _removeDust(uint256 _amountLD) internal view virtual returns (uint256 amountLD) {\\n        return (_amountLD / decimalConversionRate) * decimalConversionRate;\\n    }\\n\\n    /**\\n     * @dev Internal function to convert an amount from shared decimals into local decimals.\\n     * @param _amountSD The amount in shared decimals.\\n     * @return amountLD The amount in local decimals.\\n     */\\n    function _toLD(uint64 _amountSD) internal view virtual returns (uint256 amountLD) {\\n        return _amountSD * decimalConversionRate;\\n    }\\n\\n    /**\\n     * @dev Internal function to convert an amount from local decimals into shared decimals.\\n     * @param _amountLD The amount in local decimals.\\n     * @return amountSD The amount in shared decimals.\\n     */\\n    function _toSD(uint256 _amountLD) internal view virtual returns (uint64 amountSD) {\\n        return uint64(_amountLD / decimalConversionRate);\\n    }\\n\\n    /**\\n     * @dev Internal function to mock the amount mutation from a OFT debit() operation.\\n     * @param _amountLD The amount to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @dev _dstEid The destination endpoint ID.\\n     * @return amountSentLD The amount sent, in local decimals.\\n     * @return amountReceivedLD The amount to be received on the remote chain, in local decimals.\\n     *\\n     * @dev This is where things like fees would be calculated and deducted from the amount to be received on the remote.\\n     */\\n    function _debitView(\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 /*_dstEid*/\\n    ) internal view virtual returns (uint256 amountSentLD, uint256 amountReceivedLD) {\\n        // @dev Remove the dust so nothing is lost on the conversion between chains with different decimals for the token.\\n        amountSentLD = _removeDust(_amountLD);\\n        // @dev The amount to send is the same as amount received in the default implementation.\\n        amountReceivedLD = amountSentLD;\\n\\n        // @dev Check for slippage.\\n        if (amountReceivedLD < _minAmountLD) {\\n            revert SlippageExceeded(amountReceivedLD, _minAmountLD);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to perform a debit operation.\\n     * @param _from The address to debit.\\n     * @param _amountLD The amount to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @param _dstEid The destination endpoint ID.\\n     * @return amountSentLD The amount sent in local decimals.\\n     * @return amountReceivedLD The amount received in local decimals on the remote.\\n     *\\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\\n     */\\n    function _debit(\\n        address _from,\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 _dstEid\\n    ) internal virtual returns (uint256 amountSentLD, uint256 amountReceivedLD);\\n\\n    /**\\n     * @dev Internal function to perform a credit operation.\\n     * @param _to The address to credit.\\n     * @param _amountLD The amount to credit in local decimals.\\n     * @param _srcEid The source endpoint ID.\\n     * @return amountReceivedLD The amount ACTUALLY received in local decimals.\\n     *\\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\\n     */\\n    function _credit(\\n        address _to,\\n        uint256 _amountLD,\\n        uint32 _srcEid\\n    ) internal virtual returns (uint256 amountReceivedLD);\\n}\\n\",\"keccak256\":\"0x4c5a5412cf671bb70d84c9e783312eddf864ef56566f7bf86401c5661015e228\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { MessagingReceipt, MessagingFee } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\\\";\\n\\n/**\\n * @dev Struct representing token parameters for the OFT send() operation.\\n */\\nstruct SendParam {\\n    uint32 dstEid; // Destination endpoint ID.\\n    bytes32 to; // Recipient address.\\n    uint256 amountLD; // Amount to send in local decimals.\\n    uint256 minAmountLD; // Minimum amount to send in local decimals.\\n    bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.\\n    bytes composeMsg; // The composed message for the send() operation.\\n    bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.\\n}\\n\\n/**\\n * @dev Struct representing OFT limit information.\\n * @dev These amounts can change dynamically and are up the specific oft implementation.\\n */\\nstruct OFTLimit {\\n    uint256 minAmountLD; // Minimum amount in local decimals that can be sent to the recipient.\\n    uint256 maxAmountLD; // Maximum amount in local decimals that can be sent to the recipient.\\n}\\n\\n/**\\n * @dev Struct representing OFT receipt information.\\n */\\nstruct OFTReceipt {\\n    uint256 amountSentLD; // Amount of tokens ACTUALLY debited from the sender in local decimals.\\n    // @dev In non-default implementations, the amountReceivedLD COULD differ from this value.\\n    uint256 amountReceivedLD; // Amount of tokens to be received on the remote side.\\n}\\n\\n/**\\n * @dev Struct representing OFT fee details.\\n * @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI.\\n */\\nstruct OFTFeeDetail {\\n    int256 feeAmountLD; // Amount of the fee in local decimals.\\n    string description; // Description of the fee.\\n}\\n\\n/**\\n * @title IOFT\\n * @dev Interface for the OftChain (OFT) token.\\n * @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\\n * @dev This specific interface ID is '0x02e49c2c'.\\n */\\ninterface IOFT {\\n    // Custom error messages\\n    error InvalidLocalDecimals();\\n    error SlippageExceeded(uint256 amountLD, uint256 minAmountLD);\\n\\n    // Events\\n    event OFTSent(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 dstEid, // Destination Endpoint ID.\\n        address indexed fromAddress, // Address of the sender on the src chain.\\n        uint256 amountSentLD, // Amount of tokens sent in local decimals.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n    event OFTReceived(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 srcEid, // Source Endpoint ID.\\n        address indexed toAddress, // Address of the recipient on the dst chain.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external view returns (bytes4 interfaceId, uint64 version);\\n\\n    /**\\n     * @notice Retrieves the address of the token associated with the OFT.\\n     * @return token The address of the ERC20 token implementation.\\n     */\\n    function token() external view returns (address);\\n\\n    /**\\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n     * @return requiresApproval Needs approval of the underlying token implementation.\\n     *\\n     * @dev Allows things like wallet implementers to determine integration requirements,\\n     * without understanding the underlying token implementation.\\n     */\\n    function approvalRequired() external view returns (bool);\\n\\n    /**\\n     * @notice Retrieves the shared decimals of the OFT.\\n     * @return sharedDecimals The shared decimals of the OFT.\\n     */\\n    function sharedDecimals() external view returns (uint8);\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return limit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return receipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    ) external view returns (OFTLimit memory, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory);\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return fee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(SendParam calldata _sendParam, bool _payInLzToken) external view returns (MessagingFee memory);\\n\\n    /**\\n     * @notice Executes the send() operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The fee information supplied by the caller.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds from fees etc. on the src.\\n     * @return receipt The LayerZero messaging receipt from the send() operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory, OFTReceipt memory);\\n}\\n\",\"keccak256\":\"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTComposeMsgCodec {\\n    // Offset constants for decoding composed messages\\n    uint8 private constant NONCE_OFFSET = 8;\\n    uint8 private constant SRC_EID_OFFSET = 12;\\n    uint8 private constant AMOUNT_LD_OFFSET = 44;\\n    uint8 private constant COMPOSE_FROM_OFFSET = 76;\\n\\n    /**\\n     * @dev Encodes a OFT composed message.\\n     * @param _nonce The nonce value.\\n     * @param _srcEid The source endpoint ID.\\n     * @param _amountLD The amount in local decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded Composed message.\\n     */\\n    function encode(\\n        uint64 _nonce,\\n        uint32 _srcEid,\\n        uint256 _amountLD,\\n        bytes memory _composeMsg // 0x[composeFrom][composeMsg]\\n    ) internal pure returns (bytes memory _msg) {\\n        _msg = abi.encodePacked(_nonce, _srcEid, _amountLD, _composeMsg);\\n    }\\n\\n    /**\\n     * @dev Retrieves the nonce for the composed message.\\n     * @param _msg The message.\\n     * @return The nonce value.\\n     */\\n    function nonce(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[:NONCE_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the source endpoint ID for the composed message.\\n     * @param _msg The message.\\n     * @return The source endpoint ID.\\n     */\\n    function srcEid(bytes calldata _msg) internal pure returns (uint32) {\\n        return uint32(bytes4(_msg[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in local decimals from the composed message.\\n     * @param _msg The message.\\n     * @return The amount in local decimals.\\n     */\\n    function amountLD(bytes calldata _msg) internal pure returns (uint256) {\\n        return uint256(bytes32(_msg[SRC_EID_OFFSET:AMOUNT_LD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composeFrom value from the composed message.\\n     * @param _msg The message.\\n     * @return The composeFrom value.\\n     */\\n    function composeFrom(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[AMOUNT_LD_OFFSET:COMPOSE_FROM_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message.\\n     * @param _msg The message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[COMPOSE_FROM_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTMsgCodec {\\n    // Offset constants for encoding and decoding OFT messages\\n    uint8 private constant SEND_TO_OFFSET = 32;\\n    uint8 private constant SEND_AMOUNT_SD_OFFSET = 40;\\n\\n    /**\\n     * @dev Encodes an OFT LayerZero message.\\n     * @param _sendTo The recipient address.\\n     * @param _amountShared The amount in shared decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded message.\\n     * @return hasCompose A boolean indicating whether the message has a composed payload.\\n     */\\n    function encode(\\n        bytes32 _sendTo,\\n        uint64 _amountShared,\\n        bytes memory _composeMsg\\n    ) internal view returns (bytes memory _msg, bool hasCompose) {\\n        hasCompose = _composeMsg.length > 0;\\n        // @dev Remote chains will want to know the composed function caller ie. msg.sender on the src.\\n        _msg = hasCompose\\n            ? abi.encodePacked(_sendTo, _amountShared, addressToBytes32(msg.sender), _composeMsg)\\n            : abi.encodePacked(_sendTo, _amountShared);\\n    }\\n\\n    /**\\n     * @dev Checks if the OFT message is composed.\\n     * @param _msg The OFT message.\\n     * @return A boolean indicating whether the message is composed.\\n     */\\n    function isComposed(bytes calldata _msg) internal pure returns (bool) {\\n        return _msg.length > SEND_AMOUNT_SD_OFFSET;\\n    }\\n\\n    /**\\n     * @dev Retrieves the recipient address from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The recipient address.\\n     */\\n    function sendTo(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[:SEND_TO_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in shared decimals from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The amount in shared decimals.\\n     */\\n    function amountSD(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[SEND_TO_OFFSET:SEND_AMOUNT_SD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[SEND_AMOUNT_SD_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0x5358948017669c03e157f871d8c38e988f9004dbd0801ad3119d2487f0d40b0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\nimport {IERC1363} from \\\"../../../interfaces/IERC1363.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    /**\\n     * @dev An operation with an ERC-20 token failed.\\n     */\\n    error SafeERC20FailedOperation(address token);\\n\\n    /**\\n     * @dev Indicates a failed `decreaseAllowance` request.\\n     */\\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        forceApprove(token, spender, oldAllowance + value);\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\n     * value, non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\n        unchecked {\\n            uint256 currentAllowance = token.allowance(address(this), spender);\\n            if (currentAllowance < requestedDecrease) {\\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\n            }\\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     *\\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\\n     * only sets the \\\"standard\\\" allowance. Any temporary allowance will remain active, in addition to the value being\\n     * set here.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            safeTransfer(token, to, value);\\n        } else if (!token.transferAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferFromAndCallRelaxed(\\n        IERC1363 token,\\n        address from,\\n        address to,\\n        uint256 value,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length == 0) {\\n            safeTransferFrom(token, from, to, value);\\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\\n     * once without retrying, and relies on the returned value to be true.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            forceApprove(token, to, value);\\n        } else if (!token.approveAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            // bubble errors\\n            if iszero(success) {\\n                let ptr := mload(0x40)\\n                returndatacopy(ptr, 0, returndatasize())\\n                revert(ptr, returndatasize())\\n            }\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n\\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        bool success;\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\\n    }\\n}\\n\",\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@layerzerolabs/oft-evm/contracts/OFTCore.sol:OFTCore","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1390,"contract":"@layerzerolabs/oft-evm/contracts/OFTCore.sol:OFTCore","label":"peers","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_bytes32)"},{"astId":2166,"contract":"@layerzerolabs/oft-evm/contracts/OFTCore.sol:OFTCore","label":"preCrime","offset":0,"slot":"2","type":"t_address"},{"astId":2006,"contract":"@layerzerolabs/oft-evm/contracts/OFTCore.sol:OFTCore","label":"enforcedOptions","offset":0,"slot":"3","type":"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))"},{"astId":2786,"contract":"@layerzerolabs/oft-evm/contracts/OFTCore.sol:OFTCore","label":"msgInspector","offset":0,"slot":"4","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_uint16,t_bytes_storage)":{"encoding":"mapping","key":"t_uint16","label":"mapping(uint16 => bytes)","numberOfBytes":"32","value":"t_bytes_storage"},"t_mapping(t_uint32,t_bytes32)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => mapping(uint16 => bytes))","numberOfBytes":"32","value":"t_mapping(t_uint16,t_bytes_storage)"},"t_uint16":{"encoding":"inplace","label":"uint16","numberOfBytes":"2"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"notice":"Checks if the path initialization is allowed based on the provided origin."},"approvalRequired()":{"notice":"Indicates whether the OFT contract requires approval of the 'token()' to send."},"combineOptions(uint32,uint16,bytes)":{"notice":"Combines options for a given endpoint and message type."},"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."},"nextNonce(uint32,bytes32)":{"notice":"Retrieves the next nonce for a given source endpoint and sender address."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"oftVersion()":{"notice":"Retrieves interfaceID and the version of the OFT."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"notice":"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation."},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"notice":"Provides a quote for the send() operation."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."},"token()":{"notice":"Retrieves the address of the token associated with the OFT."}},"version":1}}},"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol":{"IOFT":{"abi":[{"inputs":[],"name":"InvalidLocalDecimals","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"}],"name":"SlippageExceeded","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"dstEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTSent","type":"event"},{"inputs":[],"name":"approvalRequired","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oftVersion","outputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"}],"name":"quoteOFT","outputs":[{"components":[{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"uint256","name":"maxAmountLD","type":"uint256"}],"internalType":"struct OFTLimit","name":"","type":"tuple"},{"components":[{"internalType":"int256","name":"feeAmountLD","type":"int256"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct OFTFeeDetail[]","name":"oftFeeDetails","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"internalType":"bool","name":"_payInLzToken","type":"bool"}],"name":"quoteSend","outputs":[{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"_fee","type":"tuple"},{"internalType":"address","name":"_refundAddress","type":"address"}],"name":"send","outputs":[{"components":[{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"fee","type":"tuple"}],"internalType":"struct MessagingReceipt","name":"","type":"tuple"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface for the OftChain (OFT) token.Does not inherit ERC20 to accommodate usage by OFTAdapter as well.This specific interface ID is '0x02e49c2c'.","kind":"dev","methods":{"approvalRequired()":{"details":"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.","returns":{"_0":"requiresApproval Needs approval of the underlying token implementation."}},"oftVersion()":{"details":"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)","returns":{"interfaceId":"The interface ID.","version":"The version."}},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"params":{"_sendParam":"The parameters for the send operation."},"returns":{"_0":"limit The OFT limit information.","_2":"receipt The OFT receipt information.","oftFeeDetails":"The details of OFT fees."}},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"details":"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.","params":{"_payInLzToken":"Flag indicating whether the caller is paying in the LZ token.","_sendParam":"The parameters for the send() operation."},"returns":{"_0":"fee The calculated LayerZero messaging fee from the send() operation."}},"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":{"details":"MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.","params":{"_fee":"The fee information supplied by the caller.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.","_refundAddress":"The address to receive any excess funds from fees etc. on the src.","_sendParam":"The parameters for the send operation."},"returns":{"_0":"receipt The LayerZero messaging receipt from the send() operation.","_1":"oftReceipt The OFT receipt information."}},"sharedDecimals()":{"returns":{"_0":"sharedDecimals The shared decimals of the OFT."}},"token()":{"returns":{"_0":"token The address of the ERC20 token implementation."}}},"title":"IOFT","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approvalRequired()":"9f68b964","oftVersion()":"156a0d0f","quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":"0d35b415","quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":"3b6f743b","send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":"c7c7f5b3","sharedDecimals()":"857749b0","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct OFTFeeDetail[]\",\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"_fee\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the OftChain (OFT) token.Does not inherit ERC20 to accommodate usage by OFTAdapter as well.This specific interface ID is '0x02e49c2c'.\",\"kind\":\"dev\",\"methods\":{\"approvalRequired()\":{\"details\":\"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"_0\":\"limit The OFT limit information.\",\"_2\":\"receipt The OFT receipt information.\",\"oftFeeDetails\":\"The details of OFT fees.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"_0\":\"fee The calculated LayerZero messaging fee from the send() operation.\"}},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The fee information supplied by the caller.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds from fees etc. on the src.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"_0\":\"receipt The LayerZero messaging receipt from the send() operation.\",\"_1\":\"oftReceipt The OFT receipt information.\"}},\"sharedDecimals()\":{\"returns\":{\"_0\":\"sharedDecimals The shared decimals of the OFT.\"}},\"token()\":{\"returns\":{\"_0\":\"token The address of the ERC20 token implementation.\"}}},\"title\":\"IOFT\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"notice\":\"Executes the send() operation.\"},\"sharedDecimals()\":{\"notice\":\"Retrieves the shared decimals of the OFT.\"},\"token()\":{\"notice\":\"Retrieves the address of the token associated with the OFT.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":\"IOFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { SafeERC20, IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport { MessagingParams, MessagingFee, MessagingReceipt } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppSender\\n * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\\n */\\nabstract contract OAppSender is OAppCore {\\n    using SafeERC20 for IERC20;\\n\\n    // Custom error messages\\n    error NotEnoughNative(uint256 msgValue);\\n    error LzTokenUnavailable();\\n\\n    // @dev The version of the OAppSender implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant SENDER_VERSION = 1;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\\n     * ie. this is a SEND only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (SENDER_VERSION, 0);\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\\n     * @return fee The calculated MessagingFee for the message.\\n     *      - nativeFee: The native fee for the message.\\n     *      - lzTokenFee: The LZ token fee for the message.\\n     */\\n    function _quote(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        bool _payInLzToken\\n    ) internal view virtual returns (MessagingFee memory fee) {\\n        return\\n            endpoint.quote(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),\\n                address(this)\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _fee The calculated LayerZero fee for the message.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess fee values sent to the endpoint.\\n     * @return receipt The receipt for the sent message.\\n     *      - guid: The unique identifier for the sent message.\\n     *      - nonce: The nonce of the sent message.\\n     *      - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _lzSend(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        MessagingFee memory _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory receipt) {\\n        // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.\\n        uint256 messageValue = _payNative(_fee.nativeFee);\\n        if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);\\n\\n        return\\n            // solhint-disable-next-line check-send-result\\n            endpoint.send{ value: messageValue }(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),\\n                _refundAddress\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the native fee associated with the message.\\n     * @param _nativeFee The native fee to be paid.\\n     * @return nativeFee The amount of native currency paid.\\n     *\\n     * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\\n     * this will need to be overridden because msg.value would contain multiple lzFees.\\n     * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\\n     * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\\n     * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.\\n     */\\n    function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {\\n        if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);\\n        return _nativeFee;\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the LZ token fee associated with the message.\\n     * @param _lzTokenFee The LZ token fee to be paid.\\n     *\\n     * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\\n     * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().\\n     */\\n    function _payLzToken(uint256 _lzTokenFee) internal virtual {\\n        // @dev Cannot cache the token because it is not immutable in the endpoint.\\n        address lzToken = endpoint.lzToken();\\n        if (lzToken == address(0)) revert LzTokenUnavailable();\\n\\n        // Pay LZ token fee by sending tokens to the endpoint.\\n        IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);\\n    }\\n}\\n\",\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { MessagingReceipt, MessagingFee } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\\\";\\n\\n/**\\n * @dev Struct representing token parameters for the OFT send() operation.\\n */\\nstruct SendParam {\\n    uint32 dstEid; // Destination endpoint ID.\\n    bytes32 to; // Recipient address.\\n    uint256 amountLD; // Amount to send in local decimals.\\n    uint256 minAmountLD; // Minimum amount to send in local decimals.\\n    bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.\\n    bytes composeMsg; // The composed message for the send() operation.\\n    bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.\\n}\\n\\n/**\\n * @dev Struct representing OFT limit information.\\n * @dev These amounts can change dynamically and are up the specific oft implementation.\\n */\\nstruct OFTLimit {\\n    uint256 minAmountLD; // Minimum amount in local decimals that can be sent to the recipient.\\n    uint256 maxAmountLD; // Maximum amount in local decimals that can be sent to the recipient.\\n}\\n\\n/**\\n * @dev Struct representing OFT receipt information.\\n */\\nstruct OFTReceipt {\\n    uint256 amountSentLD; // Amount of tokens ACTUALLY debited from the sender in local decimals.\\n    // @dev In non-default implementations, the amountReceivedLD COULD differ from this value.\\n    uint256 amountReceivedLD; // Amount of tokens to be received on the remote side.\\n}\\n\\n/**\\n * @dev Struct representing OFT fee details.\\n * @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI.\\n */\\nstruct OFTFeeDetail {\\n    int256 feeAmountLD; // Amount of the fee in local decimals.\\n    string description; // Description of the fee.\\n}\\n\\n/**\\n * @title IOFT\\n * @dev Interface for the OftChain (OFT) token.\\n * @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\\n * @dev This specific interface ID is '0x02e49c2c'.\\n */\\ninterface IOFT {\\n    // Custom error messages\\n    error InvalidLocalDecimals();\\n    error SlippageExceeded(uint256 amountLD, uint256 minAmountLD);\\n\\n    // Events\\n    event OFTSent(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 dstEid, // Destination Endpoint ID.\\n        address indexed fromAddress, // Address of the sender on the src chain.\\n        uint256 amountSentLD, // Amount of tokens sent in local decimals.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n    event OFTReceived(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 srcEid, // Source Endpoint ID.\\n        address indexed toAddress, // Address of the recipient on the dst chain.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external view returns (bytes4 interfaceId, uint64 version);\\n\\n    /**\\n     * @notice Retrieves the address of the token associated with the OFT.\\n     * @return token The address of the ERC20 token implementation.\\n     */\\n    function token() external view returns (address);\\n\\n    /**\\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n     * @return requiresApproval Needs approval of the underlying token implementation.\\n     *\\n     * @dev Allows things like wallet implementers to determine integration requirements,\\n     * without understanding the underlying token implementation.\\n     */\\n    function approvalRequired() external view returns (bool);\\n\\n    /**\\n     * @notice Retrieves the shared decimals of the OFT.\\n     * @return sharedDecimals The shared decimals of the OFT.\\n     */\\n    function sharedDecimals() external view returns (uint8);\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return limit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return receipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    ) external view returns (OFTLimit memory, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory);\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return fee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(SendParam calldata _sendParam, bool _payInLzToken) external view returns (MessagingFee memory);\\n\\n    /**\\n     * @notice Executes the send() operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The fee information supplied by the caller.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds from fees etc. on the src.\\n     * @return receipt The LayerZero messaging receipt from the send() operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory, OFTReceipt memory);\\n}\\n\",\"keccak256\":\"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\nimport {IERC1363} from \\\"../../../interfaces/IERC1363.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    /**\\n     * @dev An operation with an ERC-20 token failed.\\n     */\\n    error SafeERC20FailedOperation(address token);\\n\\n    /**\\n     * @dev Indicates a failed `decreaseAllowance` request.\\n     */\\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        forceApprove(token, spender, oldAllowance + value);\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\n     * value, non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\n        unchecked {\\n            uint256 currentAllowance = token.allowance(address(this), spender);\\n            if (currentAllowance < requestedDecrease) {\\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\n            }\\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     *\\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\\n     * only sets the \\\"standard\\\" allowance. Any temporary allowance will remain active, in addition to the value being\\n     * set here.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            safeTransfer(token, to, value);\\n        } else if (!token.transferAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferFromAndCallRelaxed(\\n        IERC1363 token,\\n        address from,\\n        address to,\\n        uint256 value,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length == 0) {\\n            safeTransferFrom(token, from, to, value);\\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\\n     * once without retrying, and relies on the returned value to be true.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            forceApprove(token, to, value);\\n        } else if (!token.approveAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            // bubble errors\\n            if iszero(success) {\\n                let ptr := mload(0x40)\\n                returndatacopy(ptr, 0, returndatasize())\\n                revert(ptr, returndatasize())\\n            }\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n\\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        bool success;\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\\n    }\\n}\\n\",\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"approvalRequired()":{"notice":"Indicates whether the OFT contract requires approval of the 'token()' to send."},"oftVersion()":{"notice":"Retrieves interfaceID and the version of the OFT."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"notice":"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation."},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"notice":"Provides a quote for the send() operation."},"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":{"notice":"Executes the send() operation."},"sharedDecimals()":{"notice":"Retrieves the shared decimals of the OFT."},"token()":{"notice":"Retrieves the address of the token associated with the OFT."}},"version":1}}},"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol":{"OFTComposeMsgCodec":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cbb57c3da9025309c08af971ec098a803ebc96c96e45170283a4fa6743b4632b64736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB 0xB5 PUSH29 0x3DA9025309C08AF971EC098A803EBC96C96E45170283A4FA6743B4632B PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"59:2931:26:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;59:2931:26;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cbb57c3da9025309c08af971ec098a803ebc96c96e45170283a4fa6743b4632b64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB 0xB5 PUSH29 0x3DA9025309C08AF971EC098A803EBC96C96E45170283A4FA6743B4632B PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"59:2931:26:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"addressToBytes32(address)":"infinite","amountLD(bytes calldata)":"infinite","bytes32ToAddress(bytes32)":"infinite","composeFrom(bytes calldata)":"infinite","composeMsg(bytes calldata)":"infinite","encode(uint64,uint32,uint256,bytes memory)":"infinite","nonce(bytes calldata)":"infinite","srcEid(bytes calldata)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":\"OFTComposeMsgCodec\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTComposeMsgCodec {\\n    // Offset constants for decoding composed messages\\n    uint8 private constant NONCE_OFFSET = 8;\\n    uint8 private constant SRC_EID_OFFSET = 12;\\n    uint8 private constant AMOUNT_LD_OFFSET = 44;\\n    uint8 private constant COMPOSE_FROM_OFFSET = 76;\\n\\n    /**\\n     * @dev Encodes a OFT composed message.\\n     * @param _nonce The nonce value.\\n     * @param _srcEid The source endpoint ID.\\n     * @param _amountLD The amount in local decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded Composed message.\\n     */\\n    function encode(\\n        uint64 _nonce,\\n        uint32 _srcEid,\\n        uint256 _amountLD,\\n        bytes memory _composeMsg // 0x[composeFrom][composeMsg]\\n    ) internal pure returns (bytes memory _msg) {\\n        _msg = abi.encodePacked(_nonce, _srcEid, _amountLD, _composeMsg);\\n    }\\n\\n    /**\\n     * @dev Retrieves the nonce for the composed message.\\n     * @param _msg The message.\\n     * @return The nonce value.\\n     */\\n    function nonce(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[:NONCE_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the source endpoint ID for the composed message.\\n     * @param _msg The message.\\n     * @return The source endpoint ID.\\n     */\\n    function srcEid(bytes calldata _msg) internal pure returns (uint32) {\\n        return uint32(bytes4(_msg[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in local decimals from the composed message.\\n     * @param _msg The message.\\n     * @return The amount in local decimals.\\n     */\\n    function amountLD(bytes calldata _msg) internal pure returns (uint256) {\\n        return uint256(bytes32(_msg[SRC_EID_OFFSET:AMOUNT_LD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composeFrom value from the composed message.\\n     * @param _msg The message.\\n     * @return The composeFrom value.\\n     */\\n    function composeFrom(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[AMOUNT_LD_OFFSET:COMPOSE_FROM_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message.\\n     * @param _msg The message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[COMPOSE_FROM_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol":{"OFTMsgCodec":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eba7bce6f05cdeba27adb206010b0978508e07f2a159546ef99c19d96630095964736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEB 0xA7 0xBC 0xE6 CREATE TLOAD 0xDE 0xBA 0x27 0xAD 0xB2 MOD ADD SIGNEXTEND MULMOD PUSH25 0x508E07F2A159546EF99C19D96630095964736F6C634300081C STOP CALLER ","sourceMap":"59:2846:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;59:2846:27;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eba7bce6f05cdeba27adb206010b0978508e07f2a159546ef99c19d96630095964736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEB 0xA7 0xBC 0xE6 CREATE TLOAD 0xDE 0xBA 0x27 0xAD 0xB2 MOD ADD SIGNEXTEND MULMOD PUSH25 0x508E07F2A159546EF99C19D96630095964736F6C634300081C STOP CALLER ","sourceMap":"59:2846:27:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"addressToBytes32(address)":"infinite","amountSD(bytes calldata)":"infinite","bytes32ToAddress(bytes32)":"infinite","composeMsg(bytes calldata)":"infinite","encode(bytes32,uint64,bytes memory)":"infinite","isComposed(bytes calldata)":"infinite","sendTo(bytes calldata)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol\":\"OFTMsgCodec\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTMsgCodec {\\n    // Offset constants for encoding and decoding OFT messages\\n    uint8 private constant SEND_TO_OFFSET = 32;\\n    uint8 private constant SEND_AMOUNT_SD_OFFSET = 40;\\n\\n    /**\\n     * @dev Encodes an OFT LayerZero message.\\n     * @param _sendTo The recipient address.\\n     * @param _amountShared The amount in shared decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded message.\\n     * @return hasCompose A boolean indicating whether the message has a composed payload.\\n     */\\n    function encode(\\n        bytes32 _sendTo,\\n        uint64 _amountShared,\\n        bytes memory _composeMsg\\n    ) internal view returns (bytes memory _msg, bool hasCompose) {\\n        hasCompose = _composeMsg.length > 0;\\n        // @dev Remote chains will want to know the composed function caller ie. msg.sender on the src.\\n        _msg = hasCompose\\n            ? abi.encodePacked(_sendTo, _amountShared, addressToBytes32(msg.sender), _composeMsg)\\n            : abi.encodePacked(_sendTo, _amountShared);\\n    }\\n\\n    /**\\n     * @dev Checks if the OFT message is composed.\\n     * @param _msg The OFT message.\\n     * @return A boolean indicating whether the message is composed.\\n     */\\n    function isComposed(bytes calldata _msg) internal pure returns (bool) {\\n        return _msg.length > SEND_AMOUNT_SD_OFFSET;\\n    }\\n\\n    /**\\n     * @dev Retrieves the recipient address from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The recipient address.\\n     */\\n    function sendTo(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[:SEND_TO_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in shared decimals from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The amount in shared decimals.\\n     */\\n    function amountSD(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[SEND_TO_OFFSET:SEND_AMOUNT_SD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[SEND_AMOUNT_SD_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0x5358948017669c03e157f871d8c38e988f9004dbd0801ad3119d2487f0d40b0b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"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.","errors":{"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the address provided by the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"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."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"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.\",\"errors\":{\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"@openzeppelin/contracts/access/Ownable.sol:Ownable","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC1271.sol":{"IERC1271":{"abi":[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC-1271 standard signature validation method for contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].","kind":"dev","methods":{"isValidSignature(bytes32,bytes)":{"details":"Should return whether the signature provided is valid for the provided data","params":{"hash":"Hash of the data to be signed","signature":"Signature byte array associated with `hash`"}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-1271 standard signature validation method for contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\",\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"Should return whether the signature provided is valid for the provided data\",\"params\":{\"hash\":\"Hash of the data to be signed\",\"signature\":\"Signature byte array associated with `hash`\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (interfaces/IERC1271.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-1271 standard signature validation method for\\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\\n */\\ninterface IERC1271 {\\n    /**\\n     * @dev Should return whether the signature provided is valid for the provided data\\n     * @param hash      Hash of the data to be signed\\n     * @param signature Signature byte array associated with `hash`\\n     */\\n    function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0x3d4cd07258d675b6dfa3d9dfd623a77b38fb9935f4a5381ff4bc969948720976\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC1363.sol":{"IERC1363":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363]. Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"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."},"approve(address,uint256)":{"details":"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."},"approveAndCall(address,uint256)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.","params":{"spender":"The address which will spend the funds.","value":"The amount of tokens to be spent."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"approveAndCall(address,uint256,bytes)":{"details":"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.","params":{"data":"Additional data with no specified format, sent in call to `spender`.","spender":"The address which will spend the funds.","value":"The amount of tokens to be spent."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"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."},"transferAndCall(address,uint256)":{"details":"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"transferAndCall(address,uint256,bytes)":{"details":"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"data":"Additional data with no specified format, sent in call to `to`.","to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"transferFrom(address,address,uint256)":{"details":"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."},"transferFromAndCall(address,address,uint256)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"from":"The address which you want to send tokens from.","to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}},"transferFromAndCall(address,address,uint256,bytes)":{"details":"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.","params":{"data":"Additional data with no specified format, sent in call to `to`.","from":"The address which you want to send tokens from.","to":"The address which you want to transfer to.","value":"The amount of tokens to be transferred."},"returns":{"_0":"A boolean value indicating whether the operation succeeded unless throwing."}}},"title":"IERC1363","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","approveAndCall(address,uint256)":"3177029f","approveAndCall(address,uint256,bytes)":"cae9ca51","balanceOf(address)":"70a08231","supportsInterface(bytes4)":"01ffc9a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferAndCall(address,uint256)":"1296ee62","transferAndCall(address,uint256,bytes)":"4000aea0","transferFrom(address,address,uint256)":"23b872dd","transferFromAndCall(address,address,uint256)":"d8fbe994","transferFromAndCall(address,address,uint256,bytes)":"c1d34b89"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363]. Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"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.\"},\"approve(address,uint256)\":{\"details\":\"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.\"},\"approveAndCall(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"approveAndCall(address,uint256,bytes)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `spender`.\",\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"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.\"},\"transferAndCall(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferAndCall(address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"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.\"},\"transferFromAndCall(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFromAndCall(address,address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}}},\"title\":\"IERC1363\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":\"IERC1363\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC4906.sol":{"IERC4906":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"MetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"BatchMetadataUpdate(uint256,uint256)":{"details":"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs."},"MetadataUpdate(uint256)":{"details":"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or   {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"title":"ERC-721 Metadata Update Extension","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toTokenId\",\"type\":\"uint256\"}],\"name\":\"BatchMetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"BatchMetadataUpdate(uint256,uint256)\":{\"details\":\"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs.\"},\"MetadataUpdate(uint256)\":{\"details\":\"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or   {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Metadata Update Extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC4906.sol\":\"IERC4906\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC4906.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC4906.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\nimport {IERC721} from \\\"./IERC721.sol\\\";\\n\\n/// @title ERC-721 Metadata Update Extension\\ninterface IERC4906 is IERC165, IERC721 {\\n    /// @dev This event emits when the metadata of a token is changed.\\n    /// So that the third-party platforms such as NFT market could\\n    /// timely update the images and related attributes of the NFT.\\n    event MetadataUpdate(uint256 _tokenId);\\n\\n    /// @dev This event emits when the metadata of a range of tokens is changed.\\n    /// So that the third-party platforms such as NFT market could\\n    /// timely update the images and related attributes of the NFTs.\\n    event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);\\n}\\n\",\"keccak256\":\"0x1b8691e244f6e11d987459993671db0af33e6a29f7805eac6a9925cc6b601957\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721} from \\\"../token/ERC721/IERC721.sol\\\";\\n\",\"keccak256\":\"0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\\n     *   {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"IERC1155Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC1155InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC1155InvalidApprover","type":"error"},{"inputs":[{"internalType":"uint256","name":"idsLength","type":"uint256"},{"internalType":"uint256","name":"valuesLength","type":"uint256"}],"name":"ERC1155InvalidArrayLength","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC1155InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC1155InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC1155InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC1155MissingApprovalForAll","type":"error"}],"devdoc":{"details":"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.","errors":{"ERC1155InsufficientBalance(address,uint256,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC1155InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC1155InvalidArrayLength(uint256,uint256)":[{"details":"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.","params":{"idsLength":"Length of the array of token identifiers","valuesLength":"Length of the array of token amounts"}}],"ERC1155InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC1155InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC1155InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC1155MissingApprovalForAll(address,address)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","owner":"Address of the current owner of a token."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IERC20Errors":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"}],"devdoc":{"details":"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.","errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IERC721Errors":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"}],"devdoc":{"details":"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.","errors":{"ERC721IncorrectOwner(address,uint256,address)":[{"details":"Indicates an error related to the ownership over a particular token. Used in transfers.","params":{"owner":"Address of the current owner of a token.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC721InsufficientApproval(address,uint256)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","tokenId":"Identifier number of a token."}}],"ERC721InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC721InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC721InvalidOwner(address)":[{"details":"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.","params":{"owner":"Address of the current owner of a token."}}],"ERC721InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC721InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC721NonexistentToken(uint256)":[{"details":"Indicates a `tokenId` whose `owner` is the zero address.","params":{"tokenId":"Identifier number of a token."}}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.","errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"constructor":{"details":"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. Both values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"./extensions/IERC20Metadata.sol\\\";\\nimport {Context} from \\\"../../utils/Context.sol\\\";\\nimport {IERC20Errors} from \\\"../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC-20\\n * applications.\\n */\\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\\n    mapping(address account => uint256) private _balances;\\n\\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * Both values are immutable: they can only be set once during construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Skips emitting an {Approval} event indicating an allowance update. This is not\\n     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            _totalSupply += value;\\n        } else {\\n            uint256 fromBalance = _balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                _balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                _totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                _balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     *\\n     * ```solidity\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        _allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance < type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x41f6b3b9e030561e7896dbef372b499cc8d418a80c3884a4d65a68f2fdc7493a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":4272,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":4278,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":4280,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":4282,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":4284,"contract":"@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface of the ERC-20 standard as defined in the ERC.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"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."},"approve(address,uint256)":{"details":"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."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"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."},"transferFrom(address,address,uint256)":{"details":"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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"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.\"},\"approve(address,uint256)\":{\"details\":\"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.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"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.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"IERC20Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for the optional metadata functions from the ERC-20 standard.","events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowance(address,address)":{"details":"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."},"approve(address,uint256)":{"details":"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."},"balanceOf(address)":{"details":"Returns the value of tokens owned by `account`."},"decimals()":{"details":"Returns the decimals places of the token."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token."},"totalSupply()":{"details":"Returns the value of tokens in existence."},"transfer(address,uint256)":{"details":"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."},"transferFrom(address,address,uint256)":{"details":"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."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"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.\"},\"approve(address,uint256)\":{\"details\":\"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.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"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.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"SafeERC20":{"abi":[{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"currentAllowance","type":"uint256"},{"internalType":"uint256","name":"requestedDecrease","type":"uint256"}],"name":"SafeERC20FailedDecreaseAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"}],"devdoc":{"details":"Wrappers around ERC-20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.","errors":{"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)":[{"details":"Indicates a failed `decreaseAllowance` request."}],"SafeERC20FailedOperation(address)":[{"details":"An operation with an ERC-20 token failed."}]},"kind":"dev","methods":{},"title":"SafeERC20","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220be63f77ef0e3ba545c37e793ea87ad187d7d6c56a9884285bc4d39e3464e911a64736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE PUSH4 0xF77EF0E3 0xBA SLOAD TLOAD CALLDATACOPY 0xE7 SWAP4 0xEA DUP8 0xAD XOR PUSH30 0x7D6C56A9884285BC4D39E3464E911A64736F6C634300081C003300000000 ","sourceMap":"698:9376:39:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;698:9376:39;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220be63f77ef0e3ba545c37e793ea87ad187d7d6c56a9884285bc4d39e3464e911a64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE PUSH4 0xF77EF0E3 0xBA SLOAD TLOAD CALLDATACOPY 0xE7 SWAP4 0xEA DUP8 0xAD XOR PUSH30 0x7D6C56A9884285BC4D39E3464E911A64736F6C634300081C003300000000 ","sourceMap":"698:9376:39:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"_callOptionalReturn(contract IERC20,bytes memory)":"infinite","_callOptionalReturnBool(contract IERC20,bytes memory)":"infinite","approveAndCallRelaxed(contract IERC1363,address,uint256,bytes memory)":"infinite","forceApprove(contract IERC20,address,uint256)":"infinite","safeDecreaseAllowance(contract IERC20,address,uint256)":"infinite","safeIncreaseAllowance(contract IERC20,address,uint256)":"infinite","safeTransfer(contract IERC20,address,uint256)":"infinite","safeTransferFrom(contract IERC20,address,address,uint256)":"infinite","transferAndCallRelaxed(contract IERC1363,address,uint256,bytes memory)":"infinite","transferFromAndCallRelaxed(contract IERC1363,address,address,uint256,bytes memory)":"infinite","trySafeTransfer(contract IERC20,address,uint256)":"infinite","trySafeTransferFrom(contract IERC20,address,address,uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers around ERC-20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"errors\":{\"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failed `decreaseAllowance` request.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\nimport {IERC1363} from \\\"../../../interfaces/IERC1363.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    /**\\n     * @dev An operation with an ERC-20 token failed.\\n     */\\n    error SafeERC20FailedOperation(address token);\\n\\n    /**\\n     * @dev Indicates a failed `decreaseAllowance` request.\\n     */\\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        forceApprove(token, spender, oldAllowance + value);\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\n     * value, non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\n        unchecked {\\n            uint256 currentAllowance = token.allowance(address(this), spender);\\n            if (currentAllowance < requestedDecrease) {\\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\n            }\\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     *\\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\\n     * only sets the \\\"standard\\\" allowance. Any temporary allowance will remain active, in addition to the value being\\n     * set here.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            safeTransfer(token, to, value);\\n        } else if (!token.transferAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferFromAndCallRelaxed(\\n        IERC1363 token,\\n        address from,\\n        address to,\\n        uint256 value,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length == 0) {\\n            safeTransferFrom(token, from, to, value);\\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\\n     * once without retrying, and relies on the returned value to be true.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            forceApprove(token, to, value);\\n        } else if (!token.approveAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            // bubble errors\\n            if iszero(success) {\\n                let ptr := mload(0x40)\\n                returndatacopy(ptr, 0, returndatasize())\\n                revert(ptr, returndatasize())\\n            }\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n\\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        bool success;\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\\n    }\\n}\\n\",\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ERC721":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.","errors":{"ERC721IncorrectOwner(address,uint256,address)":[{"details":"Indicates an error related to the ownership over a particular token. Used in transfers.","params":{"owner":"Address of the current owner of a token.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC721InsufficientApproval(address,uint256)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","tokenId":"Identifier number of a token."}}],"ERC721InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC721InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC721InvalidOwner(address)":[{"details":"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.","params":{"owner":"Address of the current owner of a token."}}],"ERC721InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC721InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC721NonexistentToken(uint256)":[{"details":"Indicates a `tokenId` whose `owner` is the zero address.","params":{"tokenId":"Identifier number of a token."}}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"constructor":{"details":"Initializes the contract by setting a `name` and a `symbol` to the token collection."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721} from \\\"./IERC721.sol\\\";\\nimport {IERC721Metadata} from \\\"./extensions/IERC721Metadata.sol\\\";\\nimport {ERC721Utils} from \\\"./utils/ERC721Utils.sol\\\";\\nimport {Context} from \\\"../../utils/Context.sol\\\";\\nimport {Strings} from \\\"../../utils/Strings.sol\\\";\\nimport {IERC165, ERC165} from \\\"../../utils/introspection/ERC165.sol\\\";\\nimport {IERC721Errors} from \\\"../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\nabstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Errors {\\n    using Strings for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    mapping(uint256 tokenId => address) private _owners;\\n\\n    mapping(address owner => uint256) private _balances;\\n\\n    mapping(uint256 tokenId => address) private _tokenApprovals;\\n\\n    mapping(address owner => mapping(address operator => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n        return\\n            interfaceId == type(IERC721).interfaceId ||\\n            interfaceId == type(IERC721Metadata).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual returns (uint256) {\\n        if (owner == address(0)) {\\n            revert ERC721InvalidOwner(address(0));\\n        }\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual returns (address) {\\n        return _requireOwned(tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual returns (string memory) {\\n        _requireOwned(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string.concat(baseURI, tokenId.toString()) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual {\\n        _approve(to, tokenId, _msgSender());\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual returns (address) {\\n        _requireOwned(tokenId);\\n\\n        return _getApproved(tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) public virtual {\\n        if (to == address(0)) {\\n            revert ERC721InvalidReceiver(address(0));\\n        }\\n        // Setting an \\\"auth\\\" arguments enables the `_isAuthorized` check which verifies that the token exists\\n        // (from != 0). Therefore, it is not needed to verify that the return value is not 0 here.\\n        address previousOwner = _update(to, tokenId, _msgSender());\\n        if (previousOwner != from) {\\n            revert ERC721IncorrectOwner(from, tokenId, previousOwner);\\n        }\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) public {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual {\\n        transferFrom(from, to, tokenId);\\n        ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n     *\\n     * IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\\n     * core ERC-721 logic MUST be matched with the use of {_increaseBalance} to keep balances\\n     * consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\\n     * `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`.\\n     */\\n    function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n        return _owners[tokenId];\\n    }\\n\\n    /**\\n     * @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted.\\n     */\\n    function _getApproved(uint256 tokenId) internal view virtual returns (address) {\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\\n     * particular (ignoring whether it is owned by `owner`).\\n     *\\n     * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\\n     * assumption.\\n     */\\n    function _isAuthorized(address owner, address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        return\\n            spender != address(0) &&\\n            (owner == spender || isApprovedForAll(owner, spender) || _getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\\n     * Reverts if:\\n     * - `spender` does not have approval from `owner` for `tokenId`.\\n     * - `spender` does not have approval to manage all of `owner`'s assets.\\n     *\\n     * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\\n     * assumption.\\n     */\\n    function _checkAuthorized(address owner, address spender, uint256 tokenId) internal view virtual {\\n        if (!_isAuthorized(owner, spender, tokenId)) {\\n            if (owner == address(0)) {\\n                revert ERC721NonexistentToken(tokenId);\\n            } else {\\n                revert ERC721InsufficientApproval(spender, tokenId);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n     *\\n     * NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\\n     * a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\\n     *\\n     * WARNING: Increasing an account's balance using this function tends to be paired with an override of the\\n     * {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\\n     * remain consistent with one another.\\n     */\\n    function _increaseBalance(address account, uint128 value) internal virtual {\\n        unchecked {\\n            _balances[account] += value;\\n        }\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\\n     * (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\\n     *\\n     * The `auth` argument is optional. If the value passed is non 0, then this function will check that\\n     * `auth` is either the owner of the token, or approved to operate on the token (by the owner).\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}.\\n     */\\n    function _update(address to, uint256 tokenId, address auth) internal virtual returns (address) {\\n        address from = _ownerOf(tokenId);\\n\\n        // Perform (optional) operator check\\n        if (auth != address(0)) {\\n            _checkAuthorized(from, auth, tokenId);\\n        }\\n\\n        // Execute the update\\n        if (from != address(0)) {\\n            // Clear approval. No need to re-authorize or emit the Approval event\\n            _approve(address(0), tokenId, address(0), false);\\n\\n            unchecked {\\n                _balances[from] -= 1;\\n            }\\n        }\\n\\n        if (to != address(0)) {\\n            unchecked {\\n                _balances[to] += 1;\\n            }\\n        }\\n\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        return from;\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal {\\n        if (to == address(0)) {\\n            revert ERC721InvalidReceiver(address(0));\\n        }\\n        address previousOwner = _update(to, tokenId, address(0));\\n        if (previousOwner != address(0)) {\\n            revert ERC721InvalidSender(address(0));\\n        }\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\\n        _mint(to, tokenId);\\n        ERC721Utils.checkOnERC721Received(_msgSender(), address(0), to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     * This is an internal function that does not check if the sender is authorized to operate on the token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal {\\n        address previousOwner = _update(address(0), tokenId, address(0));\\n        if (previousOwner == address(0)) {\\n            revert ERC721NonexistentToken(tokenId);\\n        }\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(address from, address to, uint256 tokenId) internal {\\n        if (to == address(0)) {\\n            revert ERC721InvalidReceiver(address(0));\\n        }\\n        address previousOwner = _update(to, tokenId, address(0));\\n        if (previousOwner == address(0)) {\\n            revert ERC721NonexistentToken(tokenId);\\n        } else if (previousOwner != from) {\\n            revert ERC721IncorrectOwner(from, tokenId, previousOwner);\\n        }\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\\n     * are aware of the ERC-721 standard to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is like {safeTransferFrom} in the sense that it invokes\\n     * {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - `to` cannot be the zero address.\\n     * - `from` cannot be the zero address.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(address from, address to, uint256 tokenId) internal {\\n        _safeTransfer(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\\n        _transfer(from, to, tokenId);\\n        ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\\n     * either the owner of the token, or approved to operate on all tokens held by this owner.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address to, uint256 tokenId, address auth) internal {\\n        _approve(to, tokenId, auth, true);\\n    }\\n\\n    /**\\n     * @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\\n     * emitted in the context of transfers.\\n     */\\n    function _approve(address to, uint256 tokenId, address auth, bool emitEvent) internal virtual {\\n        // Avoid reading the owner unless necessary\\n        if (emitEvent || auth != address(0)) {\\n            address owner = _requireOwned(tokenId);\\n\\n            // We do not use _isAuthorized because single-token approvals should not be able to call approve\\n            if (auth != address(0) && owner != auth && !isApprovedForAll(owner, auth)) {\\n                revert ERC721InvalidApprover(auth);\\n            }\\n\\n            if (emitEvent) {\\n                emit Approval(owner, to, tokenId);\\n            }\\n        }\\n\\n        _tokenApprovals[tokenId] = to;\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Requirements:\\n     * - operator can't be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\\n        if (operator == address(0)) {\\n            revert ERC721InvalidOperator(operator);\\n        }\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\\n     * Returns the owner.\\n     *\\n     * Overrides to ownership logic should be done to {_ownerOf}.\\n     */\\n    function _requireOwned(uint256 tokenId) internal view returns (address) {\\n        address owner = _ownerOf(tokenId);\\n        if (owner == address(0)) {\\n            revert ERC721NonexistentToken(tokenId);\\n        }\\n        return owner;\\n    }\\n}\\n\",\"keccak256\":\"0x39ed367e54765186281efcfe83e47cf0ad62cc879f10e191360712507125f29a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\\n     *   {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title ERC-721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC-721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be\\n     * reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721} from \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC721/utils/ERC721Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721Receiver} from \\\"../IERC721Receiver.sol\\\";\\nimport {IERC721Errors} from \\\"../../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Library that provide common ERC-721 utility functions.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-721[ERC-721].\\n *\\n * _Available since v5.1._\\n */\\nlibrary ERC721Utils {\\n    /**\\n     * @dev Performs an acceptance check for the provided `operator` by calling {IERC721Receiver-onERC721Received}\\n     * on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).\\n     *\\n     * The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).\\n     * Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept\\n     * the transfer.\\n     */\\n    function checkOnERC721Received(\\n        address operator,\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length > 0) {\\n            try IERC721Receiver(to).onERC721Received(operator, from, tokenId, data) returns (bytes4 retval) {\\n                if (retval != IERC721Receiver.onERC721Received.selector) {\\n                    // Token rejected\\n                    revert IERC721Errors.ERC721InvalidReceiver(to);\\n                }\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    // non-IERC721Receiver implementer\\n                    revert IERC721Errors.ERC721InvalidReceiver(to);\\n                } else {\\n                    assembly (\\\"memory-safe\\\") {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xddab643169f47a2c5291afafcbfdca045d9e6835553307d090bc048b6dabd0ac\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Panic.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Helper library for emitting standardized panic codes.\\n *\\n * ```solidity\\n * contract Example {\\n *      using Panic for uint256;\\n *\\n *      // Use any of the declared internal constants\\n *      function foo() { Panic.GENERIC.panic(); }\\n *\\n *      // Alternatively\\n *      function foo() { Panic.panic(Panic.GENERIC); }\\n * }\\n * ```\\n *\\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\\n *\\n * _Available since v5.1._\\n */\\n// slither-disable-next-line unused-state\\nlibrary Panic {\\n    /// @dev generic / unspecified error\\n    uint256 internal constant GENERIC = 0x00;\\n    /// @dev used by the assert() builtin\\n    uint256 internal constant ASSERT = 0x01;\\n    /// @dev arithmetic underflow or overflow\\n    uint256 internal constant UNDER_OVERFLOW = 0x11;\\n    /// @dev division or modulo by zero\\n    uint256 internal constant DIVISION_BY_ZERO = 0x12;\\n    /// @dev enum conversion error\\n    uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\\n    /// @dev invalid encoding in storage\\n    uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\\n    /// @dev empty array pop\\n    uint256 internal constant EMPTY_ARRAY_POP = 0x31;\\n    /// @dev array out of bounds access\\n    uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\\n    /// @dev resource error (too large allocation or too large array)\\n    uint256 internal constant RESOURCE_ERROR = 0x41;\\n    /// @dev calling invalid internal function\\n    uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\\n\\n    /// @dev Reverts with a panic code. Recommended to use with\\n    /// the internal constants with predefined codes.\\n    function panic(uint256 code) internal pure {\\n        assembly (\\\"memory-safe\\\") {\\n            mstore(0x00, 0x4e487b71)\\n            mstore(0x20, code)\\n            revert(0x1c, 0x24)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Math} from \\\"./math/Math.sol\\\";\\nimport {SafeCast} from \\\"./math/SafeCast.sol\\\";\\nimport {SignedMath} from \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    using SafeCast for *;\\n\\n    bytes16 private constant HEX_DIGITS = \\\"0123456789abcdef\\\";\\n    uint8 private constant ADDRESS_LENGTH = 20;\\n    uint256 private constant SPECIAL_CHARS_LOOKUP =\\n        (1 << 0x08) | // backspace\\n            (1 << 0x09) | // tab\\n            (1 << 0x0a) | // newline\\n            (1 << 0x0c) | // form feed\\n            (1 << 0x0d) | // carriage return\\n            (1 << 0x22) | // double quote\\n            (1 << 0x5c); // backslash\\n\\n    /**\\n     * @dev The `value` string doesn't fit in the specified `length`.\\n     */\\n    error StringsInsufficientHexLength(uint256 value, uint256 length);\\n\\n    /**\\n     * @dev The string being parsed contains characters that are not in scope of the given base.\\n     */\\n    error StringsInvalidChar();\\n\\n    /**\\n     * @dev The string being parsed is not a properly formatted address.\\n     */\\n    error StringsInvalidAddressFormat();\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            uint256 length = Math.log10(value) + 1;\\n            string memory buffer = new string(length);\\n            uint256 ptr;\\n            assembly (\\\"memory-safe\\\") {\\n                ptr := add(buffer, add(32, length))\\n            }\\n            while (true) {\\n                ptr--;\\n                assembly (\\\"memory-safe\\\") {\\n                    mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\\n                }\\n                value /= 10;\\n                if (value == 0) break;\\n            }\\n            return buffer;\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n     */\\n    function toStringSigned(int256 value) internal pure returns (string memory) {\\n        return string.concat(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value)));\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            return toHexString(value, Math.log256(value) + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        uint256 localValue = value;\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = HEX_DIGITS[localValue & 0xf];\\n            localValue >>= 4;\\n        }\\n        if (localValue != 0) {\\n            revert StringsInsufficientHexLength(value, length);\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\\n     * representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\\n     * representation, according to EIP-55.\\n     */\\n    function toChecksumHexString(address addr) internal pure returns (string memory) {\\n        bytes memory buffer = bytes(toHexString(addr));\\n\\n        // hash the hex part of buffer (skip length + 2 bytes, length 40)\\n        uint256 hashValue;\\n        assembly (\\\"memory-safe\\\") {\\n            hashValue := shr(96, keccak256(add(buffer, 0x22), 40))\\n        }\\n\\n        for (uint256 i = 41; i > 1; --i) {\\n            // possible values for buffer[i] are 48 (0) to 57 (9) and 97 (a) to 102 (f)\\n            if (hashValue & 0xf > 7 && uint8(buffer[i]) > 96) {\\n                // case shift by xoring with 0x20\\n                buffer[i] ^= 0x20;\\n            }\\n            hashValue >>= 4;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Returns true if the two strings are equal.\\n     */\\n    function equal(string memory a, string memory b) internal pure returns (bool) {\\n        return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\\n    }\\n\\n    /**\\n     * @dev Parse a decimal string and returns the value as a `uint256`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `[0-9]*`\\n     * - The result must fit into an `uint256` type\\n     */\\n    function parseUint(string memory input) internal pure returns (uint256) {\\n        return parseUint(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `[0-9]*`\\n     * - The result must fit into an `uint256` type\\n     */\\n    function parseUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\\n        (bool success, uint256 value) = tryParseUint(input, begin, end);\\n        if (!success) revert StringsInvalidChar();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseUint(string memory input) internal pure returns (bool success, uint256 value) {\\n        return _tryParseUintUncheckedBounds(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid\\n     * character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseUint(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, uint256 value) {\\n        if (end > bytes(input).length || begin > end) return (false, 0);\\n        return _tryParseUintUncheckedBounds(input, begin, end);\\n    }\\n\\n    /**\\n     * @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\\n     */\\n    function _tryParseUintUncheckedBounds(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) private pure returns (bool success, uint256 value) {\\n        bytes memory buffer = bytes(input);\\n\\n        uint256 result = 0;\\n        for (uint256 i = begin; i < end; ++i) {\\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\\n            if (chr > 9) return (false, 0);\\n            result *= 10;\\n            result += chr;\\n        }\\n        return (true, result);\\n    }\\n\\n    /**\\n     * @dev Parse a decimal string and returns the value as a `int256`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `[-+]?[0-9]*`\\n     * - The result must fit in an `int256` type.\\n     */\\n    function parseInt(string memory input) internal pure returns (int256) {\\n        return parseInt(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `[-+]?[0-9]*`\\n     * - The result must fit in an `int256` type.\\n     */\\n    function parseInt(string memory input, uint256 begin, uint256 end) internal pure returns (int256) {\\n        (bool success, int256 value) = tryParseInt(input, begin, end);\\n        if (!success) revert StringsInvalidChar();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if\\n     * the result does not fit in a `int256`.\\n     *\\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\\n     */\\n    function tryParseInt(string memory input) internal pure returns (bool success, int256 value) {\\n        return _tryParseIntUncheckedBounds(input, 0, bytes(input).length);\\n    }\\n\\n    uint256 private constant ABS_MIN_INT256 = 2 ** 255;\\n\\n    /**\\n     * @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid\\n     * character or if the result does not fit in a `int256`.\\n     *\\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\\n     */\\n    function tryParseInt(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, int256 value) {\\n        if (end > bytes(input).length || begin > end) return (false, 0);\\n        return _tryParseIntUncheckedBounds(input, begin, end);\\n    }\\n\\n    /**\\n     * @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that\\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\\n     */\\n    function _tryParseIntUncheckedBounds(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) private pure returns (bool success, int256 value) {\\n        bytes memory buffer = bytes(input);\\n\\n        // Check presence of a negative sign.\\n        bytes1 sign = begin == end ? bytes1(0) : bytes1(_unsafeReadBytesOffset(buffer, begin)); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\\n        bool positiveSign = sign == bytes1(\\\"+\\\");\\n        bool negativeSign = sign == bytes1(\\\"-\\\");\\n        uint256 offset = (positiveSign || negativeSign).toUint();\\n\\n        (bool absSuccess, uint256 absValue) = tryParseUint(input, begin + offset, end);\\n\\n        if (absSuccess && absValue < ABS_MIN_INT256) {\\n            return (true, negativeSign ? -int256(absValue) : int256(absValue));\\n        } else if (absSuccess && negativeSign && absValue == ABS_MIN_INT256) {\\n            return (true, type(int256).min);\\n        } else return (false, 0);\\n    }\\n\\n    /**\\n     * @dev Parse a hexadecimal string (with or without \\\"0x\\\" prefix), and returns the value as a `uint256`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]*`\\n     * - The result must fit in an `uint256` type.\\n     */\\n    function parseHexUint(string memory input) internal pure returns (uint256) {\\n        return parseHexUint(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]*`\\n     * - The result must fit in an `uint256` type.\\n     */\\n    function parseHexUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\\n        (bool success, uint256 value) = tryParseHexUint(input, begin, end);\\n        if (!success) revert StringsInvalidChar();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseHexUint(string memory input) internal pure returns (bool success, uint256 value) {\\n        return _tryParseHexUintUncheckedBounds(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an\\n     * invalid character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseHexUint(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, uint256 value) {\\n        if (end > bytes(input).length || begin > end) return (false, 0);\\n        return _tryParseHexUintUncheckedBounds(input, begin, end);\\n    }\\n\\n    /**\\n     * @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\\n     */\\n    function _tryParseHexUintUncheckedBounds(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) private pure returns (bool success, uint256 value) {\\n        bytes memory buffer = bytes(input);\\n\\n        // skip 0x prefix if present\\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(buffer, begin)) == bytes2(\\\"0x\\\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\\n        uint256 offset = hasPrefix.toUint() * 2;\\n\\n        uint256 result = 0;\\n        for (uint256 i = begin + offset; i < end; ++i) {\\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\\n            if (chr > 15) return (false, 0);\\n            result *= 16;\\n            unchecked {\\n                // Multiplying by 16 is equivalent to a shift of 4 bits (with additional overflow check).\\n                // This guarantees that adding a value < 16 will not cause an overflow, hence the unchecked.\\n                result += chr;\\n            }\\n        }\\n        return (true, result);\\n    }\\n\\n    /**\\n     * @dev Parse a hexadecimal string (with or without \\\"0x\\\" prefix), and returns the value as an `address`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]{40}`\\n     */\\n    function parseAddress(string memory input) internal pure returns (address) {\\n        return parseAddress(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}`\\n     */\\n    function parseAddress(string memory input, uint256 begin, uint256 end) internal pure returns (address) {\\n        (bool success, address value) = tryParseAddress(input, begin, end);\\n        if (!success) revert StringsInvalidAddressFormat();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly\\n     * formatted address. See {parseAddress-string} requirements.\\n     */\\n    function tryParseAddress(string memory input) internal pure returns (bool success, address value) {\\n        return tryParseAddress(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly\\n     * formatted address. See {parseAddress-string-uint256-uint256} requirements.\\n     */\\n    function tryParseAddress(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, address value) {\\n        if (end > bytes(input).length || begin > end) return (false, address(0));\\n\\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(bytes(input), begin)) == bytes2(\\\"0x\\\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\\n        uint256 expectedLength = 40 + hasPrefix.toUint() * 2;\\n\\n        // check that input is the correct length\\n        if (end - begin == expectedLength) {\\n            // length guarantees that this does not overflow, and value is at most type(uint160).max\\n            (bool s, uint256 v) = _tryParseHexUintUncheckedBounds(input, begin, end);\\n            return (s, address(uint160(v)));\\n        } else {\\n            return (false, address(0));\\n        }\\n    }\\n\\n    function _tryParseChr(bytes1 chr) private pure returns (uint8) {\\n        uint8 value = uint8(chr);\\n\\n        // Try to parse `chr`:\\n        // - Case 1: [0-9]\\n        // - Case 2: [a-f]\\n        // - Case 3: [A-F]\\n        // - otherwise not supported\\n        unchecked {\\n            if (value > 47 && value < 58) value -= 48;\\n            else if (value > 96 && value < 103) value -= 87;\\n            else if (value > 64 && value < 71) value -= 55;\\n            else return type(uint8).max;\\n        }\\n\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata.\\n     *\\n     * WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped.\\n     *\\n     * NOTE: This function escapes all unicode characters, and not just the ones in ranges defined in section 2.5 of\\n     * RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). ECMAScript's `JSON.parse` does recover escaped unicode\\n     * characters that are not in this range, but other tooling may provide different results.\\n     */\\n    function escapeJSON(string memory input) internal pure returns (string memory) {\\n        bytes memory buffer = bytes(input);\\n        bytes memory output = new bytes(2 * buffer.length); // worst case scenario\\n        uint256 outputLength = 0;\\n\\n        for (uint256 i; i < buffer.length; ++i) {\\n            bytes1 char = bytes1(_unsafeReadBytesOffset(buffer, i));\\n            if (((SPECIAL_CHARS_LOOKUP & (1 << uint8(char))) != 0)) {\\n                output[outputLength++] = \\\"\\\\\\\\\\\";\\n                if (char == 0x08) output[outputLength++] = \\\"b\\\";\\n                else if (char == 0x09) output[outputLength++] = \\\"t\\\";\\n                else if (char == 0x0a) output[outputLength++] = \\\"n\\\";\\n                else if (char == 0x0c) output[outputLength++] = \\\"f\\\";\\n                else if (char == 0x0d) output[outputLength++] = \\\"r\\\";\\n                else if (char == 0x5c) output[outputLength++] = \\\"\\\\\\\\\\\";\\n                else if (char == 0x22) {\\n                    // solhint-disable-next-line quotes\\n                    output[outputLength++] = '\\\"';\\n                }\\n            } else {\\n                output[outputLength++] = char;\\n            }\\n        }\\n        // write the actual length and deallocate unused memory\\n        assembly (\\\"memory-safe\\\") {\\n            mstore(output, outputLength)\\n            mstore(0x40, add(output, shl(5, shr(5, add(outputLength, 63)))))\\n        }\\n\\n        return string(output);\\n    }\\n\\n    /**\\n     * @dev Reads a bytes32 from a bytes array without bounds checking.\\n     *\\n     * NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\\n     * assembly block as such would prevent some optimizations.\\n     */\\n    function _unsafeReadBytesOffset(bytes memory buffer, uint256 offset) private pure returns (bytes32 value) {\\n        // This is not memory safe in the general case, but all calls to this private function are within bounds.\\n        assembly (\\\"memory-safe\\\") {\\n            value := mload(add(buffer, add(0x20, offset)))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x81c274a60a7ae232ae3dc9ff3a4011b4849a853c13b0832cd3351bb1bb2f0dae\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Panic} from \\\"../Panic.sol\\\";\\nimport {SafeCast} from \\\"./SafeCast.sol\\\";\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n    enum Rounding {\\n        Floor, // Toward negative infinity\\n        Ceil, // Toward positive infinity\\n        Trunc, // Toward zero\\n        Expand // Away from zero\\n    }\\n\\n    /**\\n     * @dev Return the 512-bit addition of two uint256.\\n     *\\n     * The result is stored in two 256 variables such that sum = high * 2\\u00b2\\u2075\\u2076 + low.\\n     */\\n    function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\\n        assembly (\\\"memory-safe\\\") {\\n            low := add(a, b)\\n            high := lt(low, a)\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the 512-bit multiplication of two uint256.\\n     *\\n     * The result is stored in two 256 variables such that product = high * 2\\u00b2\\u2075\\u2076 + low.\\n     */\\n    function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\\n        // 512-bit multiply [high low] = x * y. Compute the product mod 2\\u00b2\\u2075\\u2076 and mod 2\\u00b2\\u2075\\u2076 - 1, then use\\n        // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n        // variables such that product = high * 2\\u00b2\\u2075\\u2076 + low.\\n        assembly (\\\"memory-safe\\\") {\\n            let mm := mulmod(a, b, not(0))\\n            low := mul(a, b)\\n            high := sub(sub(mm, low), lt(mm, low))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a + b;\\n            success = c >= a;\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a - b;\\n            success = c <= a;\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a * b;\\n            assembly (\\\"memory-safe\\\") {\\n                // Only true when the multiplication doesn't overflow\\n                // (c / a == b) || (a == 0)\\n                success := or(eq(div(c, a), b), iszero(a))\\n            }\\n            // equivalent to: success ? c : 0\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\\n     */\\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            success = b > 0;\\n            assembly (\\\"memory-safe\\\") {\\n                // The `DIV` opcode returns zero when the denominator is 0.\\n                result := div(a, b)\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\\n     */\\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            success = b > 0;\\n            assembly (\\\"memory-safe\\\") {\\n                // The `MOD` opcode returns zero when the denominator is 0.\\n                result := mod(a, b)\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating addition, bounds to `2\\u00b2\\u2075\\u2076 - 1` instead of overflowing.\\n     */\\n    function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (bool success, uint256 result) = tryAdd(a, b);\\n        return ternary(success, result, type(uint256).max);\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing.\\n     */\\n    function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (, uint256 result) = trySub(a, b);\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating multiplication, bounds to `2\\u00b2\\u2075\\u2076 - 1` instead of overflowing.\\n     */\\n    function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (bool success, uint256 result) = tryMul(a, b);\\n        return ternary(success, result, type(uint256).max);\\n    }\\n\\n    /**\\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\\n     *\\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\\n     * one branch when needed, making this function more expensive.\\n     */\\n    function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\\n        unchecked {\\n            // branchless ternary works because:\\n            // b ^ (a ^ b) == a\\n            // b ^ 0 == b\\n            return b ^ ((a ^ b) * SafeCast.toUint(condition));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the largest of two numbers.\\n     */\\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return ternary(a > b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two numbers.\\n     */\\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return ternary(a < b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the average of two numbers. The result is rounded towards\\n     * zero.\\n     */\\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // (a + b) / 2 can overflow.\\n        return (a & b) + (a ^ b) / 2;\\n    }\\n\\n    /**\\n     * @dev Returns the ceiling of the division of two numbers.\\n     *\\n     * This differs from standard division with `/` in that it rounds towards infinity instead\\n     * of rounding towards zero.\\n     */\\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n        if (b == 0) {\\n            // Guarantee the same behavior as in a regular Solidity division.\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n\\n        // The following calculation ensures accurate ceiling division without overflow.\\n        // Since a is non-zero, (a - 1) / b will not overflow.\\n        // The largest possible result occurs when (a - 1) / b is type(uint256).max,\\n        // but the largest value we can obtain is type(uint256).max - 1, which happens\\n        // when a = type(uint256).max and b = 1.\\n        unchecked {\\n            return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\\n     * denominator == 0.\\n     *\\n     * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\\n     * Uniswap Labs also under MIT license.\\n     */\\n    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n        unchecked {\\n            (uint256 high, uint256 low) = mul512(x, y);\\n\\n            // Handle non-overflow cases, 256 by 256 division.\\n            if (high == 0) {\\n                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n                // The surrounding unchecked block does not change this fact.\\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n                return low / denominator;\\n            }\\n\\n            // Make sure the result is less than 2\\u00b2\\u2075\\u2076. Also prevents denominator == 0.\\n            if (denominator <= high) {\\n                Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\\n            }\\n\\n            ///////////////////////////////////////////////\\n            // 512 by 256 division.\\n            ///////////////////////////////////////////////\\n\\n            // Make division exact by subtracting the remainder from [high low].\\n            uint256 remainder;\\n            assembly (\\\"memory-safe\\\") {\\n                // Compute remainder using mulmod.\\n                remainder := mulmod(x, y, denominator)\\n\\n                // Subtract 256 bit number from 512 bit number.\\n                high := sub(high, gt(remainder, low))\\n                low := sub(low, remainder)\\n            }\\n\\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\\n            // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\\n\\n            uint256 twos = denominator & (0 - denominator);\\n            assembly (\\\"memory-safe\\\") {\\n                // Divide denominator by twos.\\n                denominator := div(denominator, twos)\\n\\n                // Divide [high low] by twos.\\n                low := div(low, twos)\\n\\n                // Flip twos such that it is 2\\u00b2\\u2075\\u2076 / twos. If twos is zero, then it becomes one.\\n                twos := add(div(sub(0, twos), twos), 1)\\n            }\\n\\n            // Shift in bits from high into low.\\n            low |= high * twos;\\n\\n            // Invert denominator mod 2\\u00b2\\u2075\\u2076. Now that denominator is an odd number, it has an inverse modulo 2\\u00b2\\u2075\\u2076 such\\n            // that denominator * inv \\u2261 1 mod 2\\u00b2\\u2075\\u2076. Compute the inverse by starting with a seed that is correct for\\n            // four bits. That is, denominator * inv \\u2261 1 mod 2\\u2074.\\n            uint256 inverse = (3 * denominator) ^ 2;\\n\\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\\n            // works in modular arithmetic, doubling the correct bits in each step.\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u2078\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b9\\u2076\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b3\\u00b2\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u2076\\u2074\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b9\\u00b2\\u2078\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b2\\u2075\\u2076\\n\\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n            // This will give us the correct result modulo 2\\u00b2\\u2075\\u2076. Since the preconditions guarantee that the outcome is\\n            // less than 2\\u00b2\\u2075\\u2076, this is the final result. We don't need to compute the high bits of the result and high\\n            // is no longer required.\\n            result = low * inverse;\\n            return result;\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates x * y / denominator with full precision, following the selected rounding direction.\\n     */\\n    function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n        return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\\n    }\\n\\n    /**\\n     * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256.\\n     */\\n    function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) {\\n        unchecked {\\n            (uint256 high, uint256 low) = mul512(x, y);\\n            if (high >= 1 << n) {\\n                Panic.panic(Panic.UNDER_OVERFLOW);\\n            }\\n            return (high << (256 - n)) | (low >> n);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates x * y >> n with full precision, following the selected rounding direction.\\n     */\\n    function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) {\\n        return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0);\\n    }\\n\\n    /**\\n     * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\\n     *\\n     * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\\n     * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\\n     *\\n     * If the input value is not inversible, 0 is returned.\\n     *\\n     * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\\n     * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\\n     */\\n    function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\\n        unchecked {\\n            if (n == 0) return 0;\\n\\n            // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\\n            // Used to compute integers x and y such that: ax + ny = gcd(a, n).\\n            // When the gcd is 1, then the inverse of a modulo n exists and it's x.\\n            // ax + ny = 1\\n            // ax = 1 + (-y)n\\n            // ax \\u2261 1 (mod n) # x is the inverse of a modulo n\\n\\n            // If the remainder is 0 the gcd is n right away.\\n            uint256 remainder = a % n;\\n            uint256 gcd = n;\\n\\n            // Therefore the initial coefficients are:\\n            // ax + ny = gcd(a, n) = n\\n            // 0a + 1n = n\\n            int256 x = 0;\\n            int256 y = 1;\\n\\n            while (remainder != 0) {\\n                uint256 quotient = gcd / remainder;\\n\\n                (gcd, remainder) = (\\n                    // The old remainder is the next gcd to try.\\n                    remainder,\\n                    // Compute the next remainder.\\n                    // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\\n                    // where gcd is at most n (capped to type(uint256).max)\\n                    gcd - remainder * quotient\\n                );\\n\\n                (x, y) = (\\n                    // Increment the coefficient of a.\\n                    y,\\n                    // Decrement the coefficient of n.\\n                    // Can overflow, but the result is casted to uint256 so that the\\n                    // next value of y is \\\"wrapped around\\\" to a value between 0 and n - 1.\\n                    x - y * int256(quotient)\\n                );\\n            }\\n\\n            if (gcd != 1) return 0; // No inverse exists.\\n            return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\\n        }\\n    }\\n\\n    /**\\n     * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\\n     *\\n     * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\\n     * prime, then `a**(p-1) \\u2261 1 mod p`. As a consequence, we have `a * a**(p-2) \\u2261 1 mod p`, which means that\\n     * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\\n     *\\n     * NOTE: this function does NOT check that `p` is a prime greater than `2`.\\n     */\\n    function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\\n        unchecked {\\n            return Math.modExp(a, p - 2, p);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\\n     *\\n     * Requirements:\\n     * - modulus can't be zero\\n     * - underlying staticcall to precompile must succeed\\n     *\\n     * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\\n     * sure the chain you're using it on supports the precompiled contract for modular exponentiation\\n     * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\\n     * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\\n     * interpreted as 0.\\n     */\\n    function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\\n        (bool success, uint256 result) = tryModExp(b, e, m);\\n        if (!success) {\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\\n     * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\\n     * to operate modulo 0 or if the underlying precompile reverted.\\n     *\\n     * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\\n     * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\\n     * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\\n     * of a revert, but the result may be incorrectly interpreted as 0.\\n     */\\n    function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\\n        if (m == 0) return (false, 0);\\n        assembly (\\\"memory-safe\\\") {\\n            let ptr := mload(0x40)\\n            // | Offset    | Content    | Content (Hex)                                                      |\\n            // |-----------|------------|--------------------------------------------------------------------|\\n            // | 0x00:0x1f | size of b  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x20:0x3f | size of e  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x40:0x5f | size of m  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x60:0x7f | value of b | 0x<.............................................................b> |\\n            // | 0x80:0x9f | value of e | 0x<.............................................................e> |\\n            // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\\n            mstore(ptr, 0x20)\\n            mstore(add(ptr, 0x20), 0x20)\\n            mstore(add(ptr, 0x40), 0x20)\\n            mstore(add(ptr, 0x60), b)\\n            mstore(add(ptr, 0x80), e)\\n            mstore(add(ptr, 0xa0), m)\\n\\n            // Given the result < m, it's guaranteed to fit in 32 bytes,\\n            // so we can use the memory scratch space located at offset 0.\\n            success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\\n            result := mload(0x00)\\n        }\\n    }\\n\\n    /**\\n     * @dev Variant of {modExp} that supports inputs of arbitrary length.\\n     */\\n    function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\\n        (bool success, bytes memory result) = tryModExp(b, e, m);\\n        if (!success) {\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\\n     */\\n    function tryModExp(\\n        bytes memory b,\\n        bytes memory e,\\n        bytes memory m\\n    ) internal view returns (bool success, bytes memory result) {\\n        if (_zeroBytes(m)) return (false, new bytes(0));\\n\\n        uint256 mLen = m.length;\\n\\n        // Encode call args in result and move the free memory pointer\\n        result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\\n\\n        assembly (\\\"memory-safe\\\") {\\n            let dataPtr := add(result, 0x20)\\n            // Write result on top of args to avoid allocating extra memory.\\n            success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\\n            // Overwrite the length.\\n            // result.length > returndatasize() is guaranteed because returndatasize() == m.length\\n            mstore(result, mLen)\\n            // Set the memory pointer after the returned data.\\n            mstore(0x40, add(dataPtr, mLen))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns whether the provided byte array is zero.\\n     */\\n    function _zeroBytes(bytes memory byteArray) private pure returns (bool) {\\n        for (uint256 i = 0; i < byteArray.length; ++i) {\\n            if (byteArray[i] != 0) {\\n                return false;\\n            }\\n        }\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\\n     * towards zero.\\n     *\\n     * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\\n     * using integer operations.\\n     */\\n    function sqrt(uint256 a) internal pure returns (uint256) {\\n        unchecked {\\n            // Take care of easy edge cases when a == 0 or a == 1\\n            if (a <= 1) {\\n                return a;\\n            }\\n\\n            // In this function, we use Newton's method to get a root of `f(x) := x\\u00b2 - a`. It involves building a\\n            // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\\n            // the current value as `\\u03b5_n = | x_n - sqrt(a) |`.\\n            //\\n            // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\\n            // of the target. (i.e. `2**(e-1) \\u2264 sqrt(a) < 2**e`). We know that `e \\u2264 128` because `(2\\u00b9\\u00b2\\u2078)\\u00b2 = 2\\u00b2\\u2075\\u2076` is\\n            // bigger than any uint256.\\n            //\\n            // By noticing that\\n            // `2**(e-1) \\u2264 sqrt(a) < 2**e \\u2192 (2**(e-1))\\u00b2 \\u2264 a < (2**e)\\u00b2 \\u2192 2**(2*e-2) \\u2264 a < 2**(2*e)`\\n            // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\\n            // to the msb function.\\n            uint256 aa = a;\\n            uint256 xn = 1;\\n\\n            if (aa >= (1 << 128)) {\\n                aa >>= 128;\\n                xn <<= 64;\\n            }\\n            if (aa >= (1 << 64)) {\\n                aa >>= 64;\\n                xn <<= 32;\\n            }\\n            if (aa >= (1 << 32)) {\\n                aa >>= 32;\\n                xn <<= 16;\\n            }\\n            if (aa >= (1 << 16)) {\\n                aa >>= 16;\\n                xn <<= 8;\\n            }\\n            if (aa >= (1 << 8)) {\\n                aa >>= 8;\\n                xn <<= 4;\\n            }\\n            if (aa >= (1 << 4)) {\\n                aa >>= 4;\\n                xn <<= 2;\\n            }\\n            if (aa >= (1 << 2)) {\\n                xn <<= 1;\\n            }\\n\\n            // We now have x_n such that `x_n = 2**(e-1) \\u2264 sqrt(a) < 2**e = 2 * x_n`. This implies \\u03b5_n \\u2264 2**(e-1).\\n            //\\n            // We can refine our estimation by noticing that the middle of that interval minimizes the error.\\n            // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to \\u03b5_n \\u2264 2**(e-2).\\n            // This is going to be our x_0 (and \\u03b5_0)\\n            xn = (3 * xn) >> 1; // \\u03b5_0 := | x_0 - sqrt(a) | \\u2264 2**(e-2)\\n\\n            // From here, Newton's method give us:\\n            // x_{n+1} = (x_n + a / x_n) / 2\\n            //\\n            // One should note that:\\n            // x_{n+1}\\u00b2 - a = ((x_n + a / x_n) / 2)\\u00b2 - a\\n            //              = ((x_n\\u00b2 + a) / (2 * x_n))\\u00b2 - a\\n            //              = (x_n\\u2074 + 2 * a * x_n\\u00b2 + a\\u00b2) / (4 * x_n\\u00b2) - a\\n            //              = (x_n\\u2074 + 2 * a * x_n\\u00b2 + a\\u00b2 - 4 * a * x_n\\u00b2) / (4 * x_n\\u00b2)\\n            //              = (x_n\\u2074 - 2 * a * x_n\\u00b2 + a\\u00b2) / (4 * x_n\\u00b2)\\n            //              = (x_n\\u00b2 - a)\\u00b2 / (2 * x_n)\\u00b2\\n            //              = ((x_n\\u00b2 - a) / (2 * x_n))\\u00b2\\n            //              \\u2265 0\\n            // Which proves that for all n \\u2265 1, sqrt(a) \\u2264 x_n\\n            //\\n            // This gives us the proof of quadratic convergence of the sequence:\\n            // \\u03b5_{n+1} = | x_{n+1} - sqrt(a) |\\n            //         = | (x_n + a / x_n) / 2 - sqrt(a) |\\n            //         = | (x_n\\u00b2 + a - 2*x_n*sqrt(a)) / (2 * x_n) |\\n            //         = | (x_n - sqrt(a))\\u00b2 / (2 * x_n) |\\n            //         = | \\u03b5_n\\u00b2 / (2 * x_n) |\\n            //         = \\u03b5_n\\u00b2 / | (2 * x_n) |\\n            //\\n            // For the first iteration, we have a special case where x_0 is known:\\n            // \\u03b5_1 = \\u03b5_0\\u00b2 / | (2 * x_0) |\\n            //     \\u2264 (2**(e-2))\\u00b2 / (2 * (2**(e-1) + 2**(e-2)))\\n            //     \\u2264 2**(2*e-4) / (3 * 2**(e-1))\\n            //     \\u2264 2**(e-3) / 3\\n            //     \\u2264 2**(e-3-log2(3))\\n            //     \\u2264 2**(e-4.5)\\n            //\\n            // For the following iterations, we use the fact that, 2**(e-1) \\u2264 sqrt(a) \\u2264 x_n:\\n            // \\u03b5_{n+1} = \\u03b5_n\\u00b2 / | (2 * x_n) |\\n            //         \\u2264 (2**(e-k))\\u00b2 / (2 * 2**(e-1))\\n            //         \\u2264 2**(2*e-2*k) / 2**e\\n            //         \\u2264 2**(e-2*k)\\n            xn = (xn + a / xn) >> 1; // \\u03b5_1 := | x_1 - sqrt(a) | \\u2264 2**(e-4.5)  -- special case, see above\\n            xn = (xn + a / xn) >> 1; // \\u03b5_2 := | x_2 - sqrt(a) | \\u2264 2**(e-9)    -- general case with k = 4.5\\n            xn = (xn + a / xn) >> 1; // \\u03b5_3 := | x_3 - sqrt(a) | \\u2264 2**(e-18)   -- general case with k = 9\\n            xn = (xn + a / xn) >> 1; // \\u03b5_4 := | x_4 - sqrt(a) | \\u2264 2**(e-36)   -- general case with k = 18\\n            xn = (xn + a / xn) >> 1; // \\u03b5_5 := | x_5 - sqrt(a) | \\u2264 2**(e-72)   -- general case with k = 36\\n            xn = (xn + a / xn) >> 1; // \\u03b5_6 := | x_6 - sqrt(a) | \\u2264 2**(e-144)  -- general case with k = 72\\n\\n            // Because e \\u2264 128 (as discussed during the first estimation phase), we know have reached a precision\\n            // \\u03b5_6 \\u2264 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\\n            // sqrt(a) or sqrt(a) + 1.\\n            return xn - SafeCast.toUint(xn > a / xn);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates sqrt(a), following the selected rounding direction.\\n     */\\n    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = sqrt(a);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 2 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     */\\n    function log2(uint256 x) internal pure returns (uint256 r) {\\n        // If value has upper 128 bits set, log2 result is at least 128\\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\\n        // If upper 64 bits of 128-bit half set, add 64 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\\n        // If upper 32 bits of 64-bit half set, add 32 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\\n        // If upper 16 bits of 32-bit half set, add 16 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\\n        // If upper 8 bits of 16-bit half set, add 8 to result\\n        r |= SafeCast.toUint((x >> r) > 0xff) << 3;\\n        // If upper 4 bits of 8-bit half set, add 4 to result\\n        r |= SafeCast.toUint((x >> r) > 0xf) << 2;\\n\\n        // Shifts value right by the current result and use it as an index into this lookup table:\\n        //\\n        // | x (4 bits) |  index  | table[index] = MSB position |\\n        // |------------|---------|-----------------------------|\\n        // |    0000    |    0    |        table[0] = 0         |\\n        // |    0001    |    1    |        table[1] = 0         |\\n        // |    0010    |    2    |        table[2] = 1         |\\n        // |    0011    |    3    |        table[3] = 1         |\\n        // |    0100    |    4    |        table[4] = 2         |\\n        // |    0101    |    5    |        table[5] = 2         |\\n        // |    0110    |    6    |        table[6] = 2         |\\n        // |    0111    |    7    |        table[7] = 2         |\\n        // |    1000    |    8    |        table[8] = 3         |\\n        // |    1001    |    9    |        table[9] = 3         |\\n        // |    1010    |   10    |        table[10] = 3        |\\n        // |    1011    |   11    |        table[11] = 3        |\\n        // |    1100    |   12    |        table[12] = 3        |\\n        // |    1101    |   13    |        table[13] = 3        |\\n        // |    1110    |   14    |        table[14] = 3        |\\n        // |    1111    |   15    |        table[15] = 3        |\\n        //\\n        // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes.\\n        assembly (\\\"memory-safe\\\") {\\n            r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000))\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log2(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 10 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     */\\n    function log10(uint256 value) internal pure returns (uint256) {\\n        uint256 result = 0;\\n        unchecked {\\n            if (value >= 10 ** 64) {\\n                value /= 10 ** 64;\\n                result += 64;\\n            }\\n            if (value >= 10 ** 32) {\\n                value /= 10 ** 32;\\n                result += 32;\\n            }\\n            if (value >= 10 ** 16) {\\n                value /= 10 ** 16;\\n                result += 16;\\n            }\\n            if (value >= 10 ** 8) {\\n                value /= 10 ** 8;\\n                result += 8;\\n            }\\n            if (value >= 10 ** 4) {\\n                value /= 10 ** 4;\\n                result += 4;\\n            }\\n            if (value >= 10 ** 2) {\\n                value /= 10 ** 2;\\n                result += 2;\\n            }\\n            if (value >= 10 ** 1) {\\n                result += 1;\\n            }\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log10(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 256 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     *\\n     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n     */\\n    function log256(uint256 x) internal pure returns (uint256 r) {\\n        // If value has upper 128 bits set, log2 result is at least 128\\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\\n        // If upper 64 bits of 128-bit half set, add 64 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\\n        // If upper 32 bits of 64-bit half set, add 32 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\\n        // If upper 16 bits of 32-bit half set, add 16 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\\n        // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8\\n        return (r >> 3) | SafeCast.toUint((x >> r) > 0xff);\\n    }\\n\\n    /**\\n     * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log256(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\\n     */\\n    function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\\n        return uint8(rounding) % 2 == 1;\\n    }\\n}\\n\",\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n */\\nlibrary SafeCast {\\n    /**\\n     * @dev Value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\\n\\n    /**\\n     * @dev An int value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedIntToUint(int256 value);\\n\\n    /**\\n     * @dev Value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\\n\\n    /**\\n     * @dev An uint value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedUintToInt(uint256 value);\\n\\n    /**\\n     * @dev Returns the downcasted uint248 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint248).\\n     *\\n     * Counterpart to Solidity's `uint248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toUint248(uint256 value) internal pure returns (uint248) {\\n        if (value > type(uint248).max) {\\n            revert SafeCastOverflowedUintDowncast(248, value);\\n        }\\n        return uint248(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint240 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint240).\\n     *\\n     * Counterpart to Solidity's `uint240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toUint240(uint256 value) internal pure returns (uint240) {\\n        if (value > type(uint240).max) {\\n            revert SafeCastOverflowedUintDowncast(240, value);\\n        }\\n        return uint240(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint232 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint232).\\n     *\\n     * Counterpart to Solidity's `uint232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toUint232(uint256 value) internal pure returns (uint232) {\\n        if (value > type(uint232).max) {\\n            revert SafeCastOverflowedUintDowncast(232, value);\\n        }\\n        return uint232(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint224 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint224).\\n     *\\n     * Counterpart to Solidity's `uint224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toUint224(uint256 value) internal pure returns (uint224) {\\n        if (value > type(uint224).max) {\\n            revert SafeCastOverflowedUintDowncast(224, value);\\n        }\\n        return uint224(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint216 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint216).\\n     *\\n     * Counterpart to Solidity's `uint216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toUint216(uint256 value) internal pure returns (uint216) {\\n        if (value > type(uint216).max) {\\n            revert SafeCastOverflowedUintDowncast(216, value);\\n        }\\n        return uint216(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint208 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint208).\\n     *\\n     * Counterpart to Solidity's `uint208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toUint208(uint256 value) internal pure returns (uint208) {\\n        if (value > type(uint208).max) {\\n            revert SafeCastOverflowedUintDowncast(208, value);\\n        }\\n        return uint208(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint200 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint200).\\n     *\\n     * Counterpart to Solidity's `uint200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toUint200(uint256 value) internal pure returns (uint200) {\\n        if (value > type(uint200).max) {\\n            revert SafeCastOverflowedUintDowncast(200, value);\\n        }\\n        return uint200(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint192 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint192).\\n     *\\n     * Counterpart to Solidity's `uint192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toUint192(uint256 value) internal pure returns (uint192) {\\n        if (value > type(uint192).max) {\\n            revert SafeCastOverflowedUintDowncast(192, value);\\n        }\\n        return uint192(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint184 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint184).\\n     *\\n     * Counterpart to Solidity's `uint184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toUint184(uint256 value) internal pure returns (uint184) {\\n        if (value > type(uint184).max) {\\n            revert SafeCastOverflowedUintDowncast(184, value);\\n        }\\n        return uint184(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint176 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint176).\\n     *\\n     * Counterpart to Solidity's `uint176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toUint176(uint256 value) internal pure returns (uint176) {\\n        if (value > type(uint176).max) {\\n            revert SafeCastOverflowedUintDowncast(176, value);\\n        }\\n        return uint176(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint168 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint168).\\n     *\\n     * Counterpart to Solidity's `uint168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toUint168(uint256 value) internal pure returns (uint168) {\\n        if (value > type(uint168).max) {\\n            revert SafeCastOverflowedUintDowncast(168, value);\\n        }\\n        return uint168(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint160 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint160).\\n     *\\n     * Counterpart to Solidity's `uint160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toUint160(uint256 value) internal pure returns (uint160) {\\n        if (value > type(uint160).max) {\\n            revert SafeCastOverflowedUintDowncast(160, value);\\n        }\\n        return uint160(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint152 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint152).\\n     *\\n     * Counterpart to Solidity's `uint152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toUint152(uint256 value) internal pure returns (uint152) {\\n        if (value > type(uint152).max) {\\n            revert SafeCastOverflowedUintDowncast(152, value);\\n        }\\n        return uint152(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint144 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint144).\\n     *\\n     * Counterpart to Solidity's `uint144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toUint144(uint256 value) internal pure returns (uint144) {\\n        if (value > type(uint144).max) {\\n            revert SafeCastOverflowedUintDowncast(144, value);\\n        }\\n        return uint144(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint136 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint136).\\n     *\\n     * Counterpart to Solidity's `uint136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toUint136(uint256 value) internal pure returns (uint136) {\\n        if (value > type(uint136).max) {\\n            revert SafeCastOverflowedUintDowncast(136, value);\\n        }\\n        return uint136(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint128 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint128).\\n     *\\n     * Counterpart to Solidity's `uint128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toUint128(uint256 value) internal pure returns (uint128) {\\n        if (value > type(uint128).max) {\\n            revert SafeCastOverflowedUintDowncast(128, value);\\n        }\\n        return uint128(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint120 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint120).\\n     *\\n     * Counterpart to Solidity's `uint120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toUint120(uint256 value) internal pure returns (uint120) {\\n        if (value > type(uint120).max) {\\n            revert SafeCastOverflowedUintDowncast(120, value);\\n        }\\n        return uint120(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint112 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint112).\\n     *\\n     * Counterpart to Solidity's `uint112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toUint112(uint256 value) internal pure returns (uint112) {\\n        if (value > type(uint112).max) {\\n            revert SafeCastOverflowedUintDowncast(112, value);\\n        }\\n        return uint112(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint104 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint104).\\n     *\\n     * Counterpart to Solidity's `uint104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toUint104(uint256 value) internal pure returns (uint104) {\\n        if (value > type(uint104).max) {\\n            revert SafeCastOverflowedUintDowncast(104, value);\\n        }\\n        return uint104(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint96 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint96).\\n     *\\n     * Counterpart to Solidity's `uint96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toUint96(uint256 value) internal pure returns (uint96) {\\n        if (value > type(uint96).max) {\\n            revert SafeCastOverflowedUintDowncast(96, value);\\n        }\\n        return uint96(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint88 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint88).\\n     *\\n     * Counterpart to Solidity's `uint88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toUint88(uint256 value) internal pure returns (uint88) {\\n        if (value > type(uint88).max) {\\n            revert SafeCastOverflowedUintDowncast(88, value);\\n        }\\n        return uint88(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint80 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint80).\\n     *\\n     * Counterpart to Solidity's `uint80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toUint80(uint256 value) internal pure returns (uint80) {\\n        if (value > type(uint80).max) {\\n            revert SafeCastOverflowedUintDowncast(80, value);\\n        }\\n        return uint80(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint72 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint72).\\n     *\\n     * Counterpart to Solidity's `uint72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toUint72(uint256 value) internal pure returns (uint72) {\\n        if (value > type(uint72).max) {\\n            revert SafeCastOverflowedUintDowncast(72, value);\\n        }\\n        return uint72(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint64 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint64).\\n     *\\n     * Counterpart to Solidity's `uint64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toUint64(uint256 value) internal pure returns (uint64) {\\n        if (value > type(uint64).max) {\\n            revert SafeCastOverflowedUintDowncast(64, value);\\n        }\\n        return uint64(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint56 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint56).\\n     *\\n     * Counterpart to Solidity's `uint56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toUint56(uint256 value) internal pure returns (uint56) {\\n        if (value > type(uint56).max) {\\n            revert SafeCastOverflowedUintDowncast(56, value);\\n        }\\n        return uint56(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint48 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint48).\\n     *\\n     * Counterpart to Solidity's `uint48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toUint48(uint256 value) internal pure returns (uint48) {\\n        if (value > type(uint48).max) {\\n            revert SafeCastOverflowedUintDowncast(48, value);\\n        }\\n        return uint48(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint40 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint40).\\n     *\\n     * Counterpart to Solidity's `uint40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toUint40(uint256 value) internal pure returns (uint40) {\\n        if (value > type(uint40).max) {\\n            revert SafeCastOverflowedUintDowncast(40, value);\\n        }\\n        return uint40(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint32 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint32).\\n     *\\n     * Counterpart to Solidity's `uint32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toUint32(uint256 value) internal pure returns (uint32) {\\n        if (value > type(uint32).max) {\\n            revert SafeCastOverflowedUintDowncast(32, value);\\n        }\\n        return uint32(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint24 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint24).\\n     *\\n     * Counterpart to Solidity's `uint24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toUint24(uint256 value) internal pure returns (uint24) {\\n        if (value > type(uint24).max) {\\n            revert SafeCastOverflowedUintDowncast(24, value);\\n        }\\n        return uint24(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint16 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint16).\\n     *\\n     * Counterpart to Solidity's `uint16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toUint16(uint256 value) internal pure returns (uint16) {\\n        if (value > type(uint16).max) {\\n            revert SafeCastOverflowedUintDowncast(16, value);\\n        }\\n        return uint16(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint8 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint8).\\n     *\\n     * Counterpart to Solidity's `uint8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toUint8(uint256 value) internal pure returns (uint8) {\\n        if (value > type(uint8).max) {\\n            revert SafeCastOverflowedUintDowncast(8, value);\\n        }\\n        return uint8(value);\\n    }\\n\\n    /**\\n     * @dev Converts a signed int256 into an unsigned uint256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be greater than or equal to 0.\\n     */\\n    function toUint256(int256 value) internal pure returns (uint256) {\\n        if (value < 0) {\\n            revert SafeCastOverflowedIntToUint(value);\\n        }\\n        return uint256(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int248 from int256, reverting on\\n     * overflow (when the input is less than smallest int248 or\\n     * greater than largest int248).\\n     *\\n     * Counterpart to Solidity's `int248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n        downcasted = int248(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(248, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int240 from int256, reverting on\\n     * overflow (when the input is less than smallest int240 or\\n     * greater than largest int240).\\n     *\\n     * Counterpart to Solidity's `int240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n        downcasted = int240(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(240, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int232 from int256, reverting on\\n     * overflow (when the input is less than smallest int232 or\\n     * greater than largest int232).\\n     *\\n     * Counterpart to Solidity's `int232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n        downcasted = int232(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(232, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int224 from int256, reverting on\\n     * overflow (when the input is less than smallest int224 or\\n     * greater than largest int224).\\n     *\\n     * Counterpart to Solidity's `int224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n        downcasted = int224(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(224, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int216 from int256, reverting on\\n     * overflow (when the input is less than smallest int216 or\\n     * greater than largest int216).\\n     *\\n     * Counterpart to Solidity's `int216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n        downcasted = int216(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(216, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int208 from int256, reverting on\\n     * overflow (when the input is less than smallest int208 or\\n     * greater than largest int208).\\n     *\\n     * Counterpart to Solidity's `int208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n        downcasted = int208(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(208, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int200 from int256, reverting on\\n     * overflow (when the input is less than smallest int200 or\\n     * greater than largest int200).\\n     *\\n     * Counterpart to Solidity's `int200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n        downcasted = int200(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(200, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int192 from int256, reverting on\\n     * overflow (when the input is less than smallest int192 or\\n     * greater than largest int192).\\n     *\\n     * Counterpart to Solidity's `int192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n        downcasted = int192(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(192, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int184 from int256, reverting on\\n     * overflow (when the input is less than smallest int184 or\\n     * greater than largest int184).\\n     *\\n     * Counterpart to Solidity's `int184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n        downcasted = int184(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(184, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int176 from int256, reverting on\\n     * overflow (when the input is less than smallest int176 or\\n     * greater than largest int176).\\n     *\\n     * Counterpart to Solidity's `int176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n        downcasted = int176(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(176, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int168 from int256, reverting on\\n     * overflow (when the input is less than smallest int168 or\\n     * greater than largest int168).\\n     *\\n     * Counterpart to Solidity's `int168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n        downcasted = int168(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(168, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int160 from int256, reverting on\\n     * overflow (when the input is less than smallest int160 or\\n     * greater than largest int160).\\n     *\\n     * Counterpart to Solidity's `int160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n        downcasted = int160(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(160, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int152 from int256, reverting on\\n     * overflow (when the input is less than smallest int152 or\\n     * greater than largest int152).\\n     *\\n     * Counterpart to Solidity's `int152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n        downcasted = int152(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(152, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int144 from int256, reverting on\\n     * overflow (when the input is less than smallest int144 or\\n     * greater than largest int144).\\n     *\\n     * Counterpart to Solidity's `int144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n        downcasted = int144(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(144, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int136 from int256, reverting on\\n     * overflow (when the input is less than smallest int136 or\\n     * greater than largest int136).\\n     *\\n     * Counterpart to Solidity's `int136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n        downcasted = int136(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(136, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int128 from int256, reverting on\\n     * overflow (when the input is less than smallest int128 or\\n     * greater than largest int128).\\n     *\\n     * Counterpart to Solidity's `int128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n        downcasted = int128(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(128, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int120 from int256, reverting on\\n     * overflow (when the input is less than smallest int120 or\\n     * greater than largest int120).\\n     *\\n     * Counterpart to Solidity's `int120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n        downcasted = int120(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(120, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int112 from int256, reverting on\\n     * overflow (when the input is less than smallest int112 or\\n     * greater than largest int112).\\n     *\\n     * Counterpart to Solidity's `int112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n        downcasted = int112(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(112, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int104 from int256, reverting on\\n     * overflow (when the input is less than smallest int104 or\\n     * greater than largest int104).\\n     *\\n     * Counterpart to Solidity's `int104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n        downcasted = int104(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(104, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int96 from int256, reverting on\\n     * overflow (when the input is less than smallest int96 or\\n     * greater than largest int96).\\n     *\\n     * Counterpart to Solidity's `int96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n        downcasted = int96(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(96, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int88 from int256, reverting on\\n     * overflow (when the input is less than smallest int88 or\\n     * greater than largest int88).\\n     *\\n     * Counterpart to Solidity's `int88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n        downcasted = int88(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(88, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int80 from int256, reverting on\\n     * overflow (when the input is less than smallest int80 or\\n     * greater than largest int80).\\n     *\\n     * Counterpart to Solidity's `int80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n        downcasted = int80(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(80, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int72 from int256, reverting on\\n     * overflow (when the input is less than smallest int72 or\\n     * greater than largest int72).\\n     *\\n     * Counterpart to Solidity's `int72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n        downcasted = int72(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(72, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int64 from int256, reverting on\\n     * overflow (when the input is less than smallest int64 or\\n     * greater than largest int64).\\n     *\\n     * Counterpart to Solidity's `int64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n        downcasted = int64(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(64, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int56 from int256, reverting on\\n     * overflow (when the input is less than smallest int56 or\\n     * greater than largest int56).\\n     *\\n     * Counterpart to Solidity's `int56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n        downcasted = int56(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(56, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int48 from int256, reverting on\\n     * overflow (when the input is less than smallest int48 or\\n     * greater than largest int48).\\n     *\\n     * Counterpart to Solidity's `int48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n        downcasted = int48(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(48, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int40 from int256, reverting on\\n     * overflow (when the input is less than smallest int40 or\\n     * greater than largest int40).\\n     *\\n     * Counterpart to Solidity's `int40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n        downcasted = int40(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(40, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int32 from int256, reverting on\\n     * overflow (when the input is less than smallest int32 or\\n     * greater than largest int32).\\n     *\\n     * Counterpart to Solidity's `int32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n        downcasted = int32(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(32, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int24 from int256, reverting on\\n     * overflow (when the input is less than smallest int24 or\\n     * greater than largest int24).\\n     *\\n     * Counterpart to Solidity's `int24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n        downcasted = int24(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(24, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int16 from int256, reverting on\\n     * overflow (when the input is less than smallest int16 or\\n     * greater than largest int16).\\n     *\\n     * Counterpart to Solidity's `int16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n        downcasted = int16(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(16, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int8 from int256, reverting on\\n     * overflow (when the input is less than smallest int8 or\\n     * greater than largest int8).\\n     *\\n     * Counterpart to Solidity's `int8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n        downcasted = int8(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(8, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts an unsigned uint256 into a signed int256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be less than or equal to maxInt256.\\n     */\\n    function toInt256(uint256 value) internal pure returns (int256) {\\n        // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n        if (value > uint256(type(int256).max)) {\\n            revert SafeCastOverflowedUintToInt(value);\\n        }\\n        return int256(value);\\n    }\\n\\n    /**\\n     * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\\n     */\\n    function toUint(bool b) internal pure returns (uint256 u) {\\n        assembly (\\\"memory-safe\\\") {\\n            u := iszero(iszero(b))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {SafeCast} from \\\"./SafeCast.sol\\\";\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n    /**\\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\\n     *\\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\\n     * one branch when needed, making this function more expensive.\\n     */\\n    function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {\\n        unchecked {\\n            // branchless ternary works because:\\n            // b ^ (a ^ b) == a\\n            // b ^ 0 == b\\n            return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the largest of two signed numbers.\\n     */\\n    function max(int256 a, int256 b) internal pure returns (int256) {\\n        return ternary(a > b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two signed numbers.\\n     */\\n    function min(int256 a, int256 b) internal pure returns (int256) {\\n        return ternary(a < b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the average of two signed numbers without overflow.\\n     * The result is rounded towards zero.\\n     */\\n    function average(int256 a, int256 b) internal pure returns (int256) {\\n        // Formula from the book \\\"Hacker's Delight\\\"\\n        int256 x = (a & b) + ((a ^ b) >> 1);\\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\\n    }\\n\\n    /**\\n     * @dev Returns the absolute unsigned value of a signed value.\\n     */\\n    function abs(int256 n) internal pure returns (uint256) {\\n        unchecked {\\n            // Formula from the \\\"Bit Twiddling Hacks\\\" by Sean Eron Anderson.\\n            // Since `n` is a signed integer, the generated bytecode will use the SAR opcode to perform the right shift,\\n            // taking advantage of the most significant (or \\\"sign\\\" bit) in two's complement representation.\\n            // This opcode adds new most significant bits set to the value of the previous most significant bit. As a result,\\n            // the mask will either be `bytes32(0)` (if n is positive) or `~bytes32(0)` (if n is negative).\\n            int256 mask = n >> 255;\\n\\n            // A `bytes32(0)` mask leaves the input unchanged, while a `~bytes32(0)` mask complements it.\\n            return uint256((n + mask) ^ mask);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":5365,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":5367,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":5371,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":5375,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":5379,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":5385,"contract":"@openzeppelin/contracts/token/ERC721/ERC721.sol:ERC721","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"IERC721":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Required interface of an ERC-721 compliant contract.","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or   {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC-721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or   {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\\n     *   {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"IERC721Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Interface for any contract that wants to support safeTransfers from ERC-721 asset contracts.","kind":"dev","methods":{"onERC721Received(address,address,uint256,bytes)":{"details":"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."}},"title":"ERC-721 token receiver interface","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC-721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC-721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title ERC-721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC-721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be\\n     * reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol":{"ERC721URIStorage":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"MetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"ERC-721 token with storage based token URI management.","errors":{"ERC721IncorrectOwner(address,uint256,address)":[{"details":"Indicates an error related to the ownership over a particular token. Used in transfers.","params":{"owner":"Address of the current owner of a token.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC721InsufficientApproval(address,uint256)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","tokenId":"Identifier number of a token."}}],"ERC721InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC721InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC721InvalidOwner(address)":[{"details":"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.","params":{"owner":"Address of the current owner of a token."}}],"ERC721InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC721InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC721NonexistentToken(uint256)":[{"details":"Indicates a `tokenId` whose `owner` is the zero address.","params":{"tokenId":"Identifier number of a token."}}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"BatchMetadataUpdate(uint256,uint256)":{"details":"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs."},"MetadataUpdate(uint256)":{"details":"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"name()":{"details":"See {IERC721Metadata-name}."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}"},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toTokenId\",\"type\":\"uint256\"}],\"name\":\"BatchMetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC-721 token with storage based token URI management.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"BatchMetadataUpdate(uint256,uint256)\":{\"details\":\"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs.\"},\"MetadataUpdate(uint256)\":{\"details\":\"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":\"ERC721URIStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC4906.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC4906.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\nimport {IERC721} from \\\"./IERC721.sol\\\";\\n\\n/// @title ERC-721 Metadata Update Extension\\ninterface IERC4906 is IERC165, IERC721 {\\n    /// @dev This event emits when the metadata of a token is changed.\\n    /// So that the third-party platforms such as NFT market could\\n    /// timely update the images and related attributes of the NFT.\\n    event MetadataUpdate(uint256 _tokenId);\\n\\n    /// @dev This event emits when the metadata of a range of tokens is changed.\\n    /// So that the third-party platforms such as NFT market could\\n    /// timely update the images and related attributes of the NFTs.\\n    event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);\\n}\\n\",\"keccak256\":\"0x1b8691e244f6e11d987459993671db0af33e6a29f7805eac6a9925cc6b601957\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721} from \\\"../token/ERC721/IERC721.sol\\\";\\n\",\"keccak256\":\"0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721} from \\\"./IERC721.sol\\\";\\nimport {IERC721Metadata} from \\\"./extensions/IERC721Metadata.sol\\\";\\nimport {ERC721Utils} from \\\"./utils/ERC721Utils.sol\\\";\\nimport {Context} from \\\"../../utils/Context.sol\\\";\\nimport {Strings} from \\\"../../utils/Strings.sol\\\";\\nimport {IERC165, ERC165} from \\\"../../utils/introspection/ERC165.sol\\\";\\nimport {IERC721Errors} from \\\"../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\nabstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Errors {\\n    using Strings for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    mapping(uint256 tokenId => address) private _owners;\\n\\n    mapping(address owner => uint256) private _balances;\\n\\n    mapping(uint256 tokenId => address) private _tokenApprovals;\\n\\n    mapping(address owner => mapping(address operator => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n        return\\n            interfaceId == type(IERC721).interfaceId ||\\n            interfaceId == type(IERC721Metadata).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual returns (uint256) {\\n        if (owner == address(0)) {\\n            revert ERC721InvalidOwner(address(0));\\n        }\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual returns (address) {\\n        return _requireOwned(tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual returns (string memory) {\\n        _requireOwned(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string.concat(baseURI, tokenId.toString()) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual {\\n        _approve(to, tokenId, _msgSender());\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual returns (address) {\\n        _requireOwned(tokenId);\\n\\n        return _getApproved(tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) public virtual {\\n        if (to == address(0)) {\\n            revert ERC721InvalidReceiver(address(0));\\n        }\\n        // Setting an \\\"auth\\\" arguments enables the `_isAuthorized` check which verifies that the token exists\\n        // (from != 0). Therefore, it is not needed to verify that the return value is not 0 here.\\n        address previousOwner = _update(to, tokenId, _msgSender());\\n        if (previousOwner != from) {\\n            revert ERC721IncorrectOwner(from, tokenId, previousOwner);\\n        }\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) public {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual {\\n        transferFrom(from, to, tokenId);\\n        ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n     *\\n     * IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\\n     * core ERC-721 logic MUST be matched with the use of {_increaseBalance} to keep balances\\n     * consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\\n     * `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`.\\n     */\\n    function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n        return _owners[tokenId];\\n    }\\n\\n    /**\\n     * @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted.\\n     */\\n    function _getApproved(uint256 tokenId) internal view virtual returns (address) {\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\\n     * particular (ignoring whether it is owned by `owner`).\\n     *\\n     * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\\n     * assumption.\\n     */\\n    function _isAuthorized(address owner, address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        return\\n            spender != address(0) &&\\n            (owner == spender || isApprovedForAll(owner, spender) || _getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\\n     * Reverts if:\\n     * - `spender` does not have approval from `owner` for `tokenId`.\\n     * - `spender` does not have approval to manage all of `owner`'s assets.\\n     *\\n     * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\\n     * assumption.\\n     */\\n    function _checkAuthorized(address owner, address spender, uint256 tokenId) internal view virtual {\\n        if (!_isAuthorized(owner, spender, tokenId)) {\\n            if (owner == address(0)) {\\n                revert ERC721NonexistentToken(tokenId);\\n            } else {\\n                revert ERC721InsufficientApproval(spender, tokenId);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n     *\\n     * NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\\n     * a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\\n     *\\n     * WARNING: Increasing an account's balance using this function tends to be paired with an override of the\\n     * {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\\n     * remain consistent with one another.\\n     */\\n    function _increaseBalance(address account, uint128 value) internal virtual {\\n        unchecked {\\n            _balances[account] += value;\\n        }\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\\n     * (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\\n     *\\n     * The `auth` argument is optional. If the value passed is non 0, then this function will check that\\n     * `auth` is either the owner of the token, or approved to operate on the token (by the owner).\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}.\\n     */\\n    function _update(address to, uint256 tokenId, address auth) internal virtual returns (address) {\\n        address from = _ownerOf(tokenId);\\n\\n        // Perform (optional) operator check\\n        if (auth != address(0)) {\\n            _checkAuthorized(from, auth, tokenId);\\n        }\\n\\n        // Execute the update\\n        if (from != address(0)) {\\n            // Clear approval. No need to re-authorize or emit the Approval event\\n            _approve(address(0), tokenId, address(0), false);\\n\\n            unchecked {\\n                _balances[from] -= 1;\\n            }\\n        }\\n\\n        if (to != address(0)) {\\n            unchecked {\\n                _balances[to] += 1;\\n            }\\n        }\\n\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        return from;\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal {\\n        if (to == address(0)) {\\n            revert ERC721InvalidReceiver(address(0));\\n        }\\n        address previousOwner = _update(to, tokenId, address(0));\\n        if (previousOwner != address(0)) {\\n            revert ERC721InvalidSender(address(0));\\n        }\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\\n        _mint(to, tokenId);\\n        ERC721Utils.checkOnERC721Received(_msgSender(), address(0), to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     * This is an internal function that does not check if the sender is authorized to operate on the token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal {\\n        address previousOwner = _update(address(0), tokenId, address(0));\\n        if (previousOwner == address(0)) {\\n            revert ERC721NonexistentToken(tokenId);\\n        }\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(address from, address to, uint256 tokenId) internal {\\n        if (to == address(0)) {\\n            revert ERC721InvalidReceiver(address(0));\\n        }\\n        address previousOwner = _update(to, tokenId, address(0));\\n        if (previousOwner == address(0)) {\\n            revert ERC721NonexistentToken(tokenId);\\n        } else if (previousOwner != from) {\\n            revert ERC721IncorrectOwner(from, tokenId, previousOwner);\\n        }\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\\n     * are aware of the ERC-721 standard to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is like {safeTransferFrom} in the sense that it invokes\\n     * {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - `to` cannot be the zero address.\\n     * - `from` cannot be the zero address.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(address from, address to, uint256 tokenId) internal {\\n        _safeTransfer(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\\n        _transfer(from, to, tokenId);\\n        ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\\n     * either the owner of the token, or approved to operate on all tokens held by this owner.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address to, uint256 tokenId, address auth) internal {\\n        _approve(to, tokenId, auth, true);\\n    }\\n\\n    /**\\n     * @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\\n     * emitted in the context of transfers.\\n     */\\n    function _approve(address to, uint256 tokenId, address auth, bool emitEvent) internal virtual {\\n        // Avoid reading the owner unless necessary\\n        if (emitEvent || auth != address(0)) {\\n            address owner = _requireOwned(tokenId);\\n\\n            // We do not use _isAuthorized because single-token approvals should not be able to call approve\\n            if (auth != address(0) && owner != auth && !isApprovedForAll(owner, auth)) {\\n                revert ERC721InvalidApprover(auth);\\n            }\\n\\n            if (emitEvent) {\\n                emit Approval(owner, to, tokenId);\\n            }\\n        }\\n\\n        _tokenApprovals[tokenId] = to;\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Requirements:\\n     * - operator can't be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\\n        if (operator == address(0)) {\\n            revert ERC721InvalidOperator(operator);\\n        }\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\\n     * Returns the owner.\\n     *\\n     * Overrides to ownership logic should be done to {_ownerOf}.\\n     */\\n    function _requireOwned(uint256 tokenId) internal view returns (address) {\\n        address owner = _ownerOf(tokenId);\\n        if (owner == address(0)) {\\n            revert ERC721NonexistentToken(tokenId);\\n        }\\n        return owner;\\n    }\\n}\\n\",\"keccak256\":\"0x39ed367e54765186281efcfe83e47cf0ad62cc879f10e191360712507125f29a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\\n     *   {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title ERC-721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC-721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be\\n     * reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC721/extensions/ERC721URIStorage.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ERC721} from \\\"../ERC721.sol\\\";\\nimport {Strings} from \\\"../../../utils/Strings.sol\\\";\\nimport {IERC4906} from \\\"../../../interfaces/IERC4906.sol\\\";\\nimport {IERC165} from \\\"../../../interfaces/IERC165.sol\\\";\\n\\n/**\\n * @dev ERC-721 token with storage based token URI management.\\n */\\nabstract contract ERC721URIStorage is IERC4906, ERC721 {\\n    using Strings for uint256;\\n\\n    // Interface ID as defined in ERC-4906. This does not correspond to a traditional interface ID as ERC-4906 only\\n    // defines events and does not include any external function.\\n    bytes4 private constant ERC4906_INTERFACE_ID = bytes4(0x49064906);\\n\\n    // Optional mapping for token URIs\\n    mapping(uint256 tokenId => string) private _tokenURIs;\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, IERC165) returns (bool) {\\n        return interfaceId == ERC4906_INTERFACE_ID || super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        _requireOwned(tokenId);\\n\\n        string memory _tokenURI = _tokenURIs[tokenId];\\n        string memory base = _baseURI();\\n\\n        // If there is no base URI, return the token URI.\\n        if (bytes(base).length == 0) {\\n            return _tokenURI;\\n        }\\n        // If both are set, concatenate the baseURI and tokenURI (via string.concat).\\n        if (bytes(_tokenURI).length > 0) {\\n            return string.concat(base, _tokenURI);\\n        }\\n\\n        return super.tokenURI(tokenId);\\n    }\\n\\n    /**\\n     * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\\n     *\\n     * Emits {IERC4906-MetadataUpdate}.\\n     */\\n    function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\\n        _tokenURIs[tokenId] = _tokenURI;\\n        emit MetadataUpdate(tokenId);\\n    }\\n}\\n\",\"keccak256\":\"0x2b27b58570ff2456c7e65022a356c7e4f205bfabf95d0e870855a86587bb1356\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721} from \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC721/utils/ERC721Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721Receiver} from \\\"../IERC721Receiver.sol\\\";\\nimport {IERC721Errors} from \\\"../../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Library that provide common ERC-721 utility functions.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-721[ERC-721].\\n *\\n * _Available since v5.1._\\n */\\nlibrary ERC721Utils {\\n    /**\\n     * @dev Performs an acceptance check for the provided `operator` by calling {IERC721Receiver-onERC721Received}\\n     * on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).\\n     *\\n     * The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).\\n     * Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept\\n     * the transfer.\\n     */\\n    function checkOnERC721Received(\\n        address operator,\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length > 0) {\\n            try IERC721Receiver(to).onERC721Received(operator, from, tokenId, data) returns (bytes4 retval) {\\n                if (retval != IERC721Receiver.onERC721Received.selector) {\\n                    // Token rejected\\n                    revert IERC721Errors.ERC721InvalidReceiver(to);\\n                }\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    // non-IERC721Receiver implementer\\n                    revert IERC721Errors.ERC721InvalidReceiver(to);\\n                } else {\\n                    assembly (\\\"memory-safe\\\") {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xddab643169f47a2c5291afafcbfdca045d9e6835553307d090bc048b6dabd0ac\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Panic.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Helper library for emitting standardized panic codes.\\n *\\n * ```solidity\\n * contract Example {\\n *      using Panic for uint256;\\n *\\n *      // Use any of the declared internal constants\\n *      function foo() { Panic.GENERIC.panic(); }\\n *\\n *      // Alternatively\\n *      function foo() { Panic.panic(Panic.GENERIC); }\\n * }\\n * ```\\n *\\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\\n *\\n * _Available since v5.1._\\n */\\n// slither-disable-next-line unused-state\\nlibrary Panic {\\n    /// @dev generic / unspecified error\\n    uint256 internal constant GENERIC = 0x00;\\n    /// @dev used by the assert() builtin\\n    uint256 internal constant ASSERT = 0x01;\\n    /// @dev arithmetic underflow or overflow\\n    uint256 internal constant UNDER_OVERFLOW = 0x11;\\n    /// @dev division or modulo by zero\\n    uint256 internal constant DIVISION_BY_ZERO = 0x12;\\n    /// @dev enum conversion error\\n    uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\\n    /// @dev invalid encoding in storage\\n    uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\\n    /// @dev empty array pop\\n    uint256 internal constant EMPTY_ARRAY_POP = 0x31;\\n    /// @dev array out of bounds access\\n    uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\\n    /// @dev resource error (too large allocation or too large array)\\n    uint256 internal constant RESOURCE_ERROR = 0x41;\\n    /// @dev calling invalid internal function\\n    uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\\n\\n    /// @dev Reverts with a panic code. Recommended to use with\\n    /// the internal constants with predefined codes.\\n    function panic(uint256 code) internal pure {\\n        assembly (\\\"memory-safe\\\") {\\n            mstore(0x00, 0x4e487b71)\\n            mstore(0x20, code)\\n            revert(0x1c, 0x24)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Math} from \\\"./math/Math.sol\\\";\\nimport {SafeCast} from \\\"./math/SafeCast.sol\\\";\\nimport {SignedMath} from \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    using SafeCast for *;\\n\\n    bytes16 private constant HEX_DIGITS = \\\"0123456789abcdef\\\";\\n    uint8 private constant ADDRESS_LENGTH = 20;\\n    uint256 private constant SPECIAL_CHARS_LOOKUP =\\n        (1 << 0x08) | // backspace\\n            (1 << 0x09) | // tab\\n            (1 << 0x0a) | // newline\\n            (1 << 0x0c) | // form feed\\n            (1 << 0x0d) | // carriage return\\n            (1 << 0x22) | // double quote\\n            (1 << 0x5c); // backslash\\n\\n    /**\\n     * @dev The `value` string doesn't fit in the specified `length`.\\n     */\\n    error StringsInsufficientHexLength(uint256 value, uint256 length);\\n\\n    /**\\n     * @dev The string being parsed contains characters that are not in scope of the given base.\\n     */\\n    error StringsInvalidChar();\\n\\n    /**\\n     * @dev The string being parsed is not a properly formatted address.\\n     */\\n    error StringsInvalidAddressFormat();\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            uint256 length = Math.log10(value) + 1;\\n            string memory buffer = new string(length);\\n            uint256 ptr;\\n            assembly (\\\"memory-safe\\\") {\\n                ptr := add(buffer, add(32, length))\\n            }\\n            while (true) {\\n                ptr--;\\n                assembly (\\\"memory-safe\\\") {\\n                    mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\\n                }\\n                value /= 10;\\n                if (value == 0) break;\\n            }\\n            return buffer;\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n     */\\n    function toStringSigned(int256 value) internal pure returns (string memory) {\\n        return string.concat(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value)));\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            return toHexString(value, Math.log256(value) + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        uint256 localValue = value;\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = HEX_DIGITS[localValue & 0xf];\\n            localValue >>= 4;\\n        }\\n        if (localValue != 0) {\\n            revert StringsInsufficientHexLength(value, length);\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\\n     * representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\\n     * representation, according to EIP-55.\\n     */\\n    function toChecksumHexString(address addr) internal pure returns (string memory) {\\n        bytes memory buffer = bytes(toHexString(addr));\\n\\n        // hash the hex part of buffer (skip length + 2 bytes, length 40)\\n        uint256 hashValue;\\n        assembly (\\\"memory-safe\\\") {\\n            hashValue := shr(96, keccak256(add(buffer, 0x22), 40))\\n        }\\n\\n        for (uint256 i = 41; i > 1; --i) {\\n            // possible values for buffer[i] are 48 (0) to 57 (9) and 97 (a) to 102 (f)\\n            if (hashValue & 0xf > 7 && uint8(buffer[i]) > 96) {\\n                // case shift by xoring with 0x20\\n                buffer[i] ^= 0x20;\\n            }\\n            hashValue >>= 4;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Returns true if the two strings are equal.\\n     */\\n    function equal(string memory a, string memory b) internal pure returns (bool) {\\n        return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\\n    }\\n\\n    /**\\n     * @dev Parse a decimal string and returns the value as a `uint256`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `[0-9]*`\\n     * - The result must fit into an `uint256` type\\n     */\\n    function parseUint(string memory input) internal pure returns (uint256) {\\n        return parseUint(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `[0-9]*`\\n     * - The result must fit into an `uint256` type\\n     */\\n    function parseUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\\n        (bool success, uint256 value) = tryParseUint(input, begin, end);\\n        if (!success) revert StringsInvalidChar();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseUint(string memory input) internal pure returns (bool success, uint256 value) {\\n        return _tryParseUintUncheckedBounds(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid\\n     * character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseUint(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, uint256 value) {\\n        if (end > bytes(input).length || begin > end) return (false, 0);\\n        return _tryParseUintUncheckedBounds(input, begin, end);\\n    }\\n\\n    /**\\n     * @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\\n     */\\n    function _tryParseUintUncheckedBounds(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) private pure returns (bool success, uint256 value) {\\n        bytes memory buffer = bytes(input);\\n\\n        uint256 result = 0;\\n        for (uint256 i = begin; i < end; ++i) {\\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\\n            if (chr > 9) return (false, 0);\\n            result *= 10;\\n            result += chr;\\n        }\\n        return (true, result);\\n    }\\n\\n    /**\\n     * @dev Parse a decimal string and returns the value as a `int256`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `[-+]?[0-9]*`\\n     * - The result must fit in an `int256` type.\\n     */\\n    function parseInt(string memory input) internal pure returns (int256) {\\n        return parseInt(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `[-+]?[0-9]*`\\n     * - The result must fit in an `int256` type.\\n     */\\n    function parseInt(string memory input, uint256 begin, uint256 end) internal pure returns (int256) {\\n        (bool success, int256 value) = tryParseInt(input, begin, end);\\n        if (!success) revert StringsInvalidChar();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if\\n     * the result does not fit in a `int256`.\\n     *\\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\\n     */\\n    function tryParseInt(string memory input) internal pure returns (bool success, int256 value) {\\n        return _tryParseIntUncheckedBounds(input, 0, bytes(input).length);\\n    }\\n\\n    uint256 private constant ABS_MIN_INT256 = 2 ** 255;\\n\\n    /**\\n     * @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid\\n     * character or if the result does not fit in a `int256`.\\n     *\\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\\n     */\\n    function tryParseInt(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, int256 value) {\\n        if (end > bytes(input).length || begin > end) return (false, 0);\\n        return _tryParseIntUncheckedBounds(input, begin, end);\\n    }\\n\\n    /**\\n     * @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that\\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\\n     */\\n    function _tryParseIntUncheckedBounds(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) private pure returns (bool success, int256 value) {\\n        bytes memory buffer = bytes(input);\\n\\n        // Check presence of a negative sign.\\n        bytes1 sign = begin == end ? bytes1(0) : bytes1(_unsafeReadBytesOffset(buffer, begin)); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\\n        bool positiveSign = sign == bytes1(\\\"+\\\");\\n        bool negativeSign = sign == bytes1(\\\"-\\\");\\n        uint256 offset = (positiveSign || negativeSign).toUint();\\n\\n        (bool absSuccess, uint256 absValue) = tryParseUint(input, begin + offset, end);\\n\\n        if (absSuccess && absValue < ABS_MIN_INT256) {\\n            return (true, negativeSign ? -int256(absValue) : int256(absValue));\\n        } else if (absSuccess && negativeSign && absValue == ABS_MIN_INT256) {\\n            return (true, type(int256).min);\\n        } else return (false, 0);\\n    }\\n\\n    /**\\n     * @dev Parse a hexadecimal string (with or without \\\"0x\\\" prefix), and returns the value as a `uint256`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]*`\\n     * - The result must fit in an `uint256` type.\\n     */\\n    function parseHexUint(string memory input) internal pure returns (uint256) {\\n        return parseHexUint(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]*`\\n     * - The result must fit in an `uint256` type.\\n     */\\n    function parseHexUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\\n        (bool success, uint256 value) = tryParseHexUint(input, begin, end);\\n        if (!success) revert StringsInvalidChar();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseHexUint(string memory input) internal pure returns (bool success, uint256 value) {\\n        return _tryParseHexUintUncheckedBounds(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an\\n     * invalid character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseHexUint(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, uint256 value) {\\n        if (end > bytes(input).length || begin > end) return (false, 0);\\n        return _tryParseHexUintUncheckedBounds(input, begin, end);\\n    }\\n\\n    /**\\n     * @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\\n     */\\n    function _tryParseHexUintUncheckedBounds(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) private pure returns (bool success, uint256 value) {\\n        bytes memory buffer = bytes(input);\\n\\n        // skip 0x prefix if present\\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(buffer, begin)) == bytes2(\\\"0x\\\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\\n        uint256 offset = hasPrefix.toUint() * 2;\\n\\n        uint256 result = 0;\\n        for (uint256 i = begin + offset; i < end; ++i) {\\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\\n            if (chr > 15) return (false, 0);\\n            result *= 16;\\n            unchecked {\\n                // Multiplying by 16 is equivalent to a shift of 4 bits (with additional overflow check).\\n                // This guarantees that adding a value < 16 will not cause an overflow, hence the unchecked.\\n                result += chr;\\n            }\\n        }\\n        return (true, result);\\n    }\\n\\n    /**\\n     * @dev Parse a hexadecimal string (with or without \\\"0x\\\" prefix), and returns the value as an `address`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]{40}`\\n     */\\n    function parseAddress(string memory input) internal pure returns (address) {\\n        return parseAddress(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}`\\n     */\\n    function parseAddress(string memory input, uint256 begin, uint256 end) internal pure returns (address) {\\n        (bool success, address value) = tryParseAddress(input, begin, end);\\n        if (!success) revert StringsInvalidAddressFormat();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly\\n     * formatted address. See {parseAddress-string} requirements.\\n     */\\n    function tryParseAddress(string memory input) internal pure returns (bool success, address value) {\\n        return tryParseAddress(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly\\n     * formatted address. See {parseAddress-string-uint256-uint256} requirements.\\n     */\\n    function tryParseAddress(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, address value) {\\n        if (end > bytes(input).length || begin > end) return (false, address(0));\\n\\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(bytes(input), begin)) == bytes2(\\\"0x\\\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\\n        uint256 expectedLength = 40 + hasPrefix.toUint() * 2;\\n\\n        // check that input is the correct length\\n        if (end - begin == expectedLength) {\\n            // length guarantees that this does not overflow, and value is at most type(uint160).max\\n            (bool s, uint256 v) = _tryParseHexUintUncheckedBounds(input, begin, end);\\n            return (s, address(uint160(v)));\\n        } else {\\n            return (false, address(0));\\n        }\\n    }\\n\\n    function _tryParseChr(bytes1 chr) private pure returns (uint8) {\\n        uint8 value = uint8(chr);\\n\\n        // Try to parse `chr`:\\n        // - Case 1: [0-9]\\n        // - Case 2: [a-f]\\n        // - Case 3: [A-F]\\n        // - otherwise not supported\\n        unchecked {\\n            if (value > 47 && value < 58) value -= 48;\\n            else if (value > 96 && value < 103) value -= 87;\\n            else if (value > 64 && value < 71) value -= 55;\\n            else return type(uint8).max;\\n        }\\n\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata.\\n     *\\n     * WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped.\\n     *\\n     * NOTE: This function escapes all unicode characters, and not just the ones in ranges defined in section 2.5 of\\n     * RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). ECMAScript's `JSON.parse` does recover escaped unicode\\n     * characters that are not in this range, but other tooling may provide different results.\\n     */\\n    function escapeJSON(string memory input) internal pure returns (string memory) {\\n        bytes memory buffer = bytes(input);\\n        bytes memory output = new bytes(2 * buffer.length); // worst case scenario\\n        uint256 outputLength = 0;\\n\\n        for (uint256 i; i < buffer.length; ++i) {\\n            bytes1 char = bytes1(_unsafeReadBytesOffset(buffer, i));\\n            if (((SPECIAL_CHARS_LOOKUP & (1 << uint8(char))) != 0)) {\\n                output[outputLength++] = \\\"\\\\\\\\\\\";\\n                if (char == 0x08) output[outputLength++] = \\\"b\\\";\\n                else if (char == 0x09) output[outputLength++] = \\\"t\\\";\\n                else if (char == 0x0a) output[outputLength++] = \\\"n\\\";\\n                else if (char == 0x0c) output[outputLength++] = \\\"f\\\";\\n                else if (char == 0x0d) output[outputLength++] = \\\"r\\\";\\n                else if (char == 0x5c) output[outputLength++] = \\\"\\\\\\\\\\\";\\n                else if (char == 0x22) {\\n                    // solhint-disable-next-line quotes\\n                    output[outputLength++] = '\\\"';\\n                }\\n            } else {\\n                output[outputLength++] = char;\\n            }\\n        }\\n        // write the actual length and deallocate unused memory\\n        assembly (\\\"memory-safe\\\") {\\n            mstore(output, outputLength)\\n            mstore(0x40, add(output, shl(5, shr(5, add(outputLength, 63)))))\\n        }\\n\\n        return string(output);\\n    }\\n\\n    /**\\n     * @dev Reads a bytes32 from a bytes array without bounds checking.\\n     *\\n     * NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\\n     * assembly block as such would prevent some optimizations.\\n     */\\n    function _unsafeReadBytesOffset(bytes memory buffer, uint256 offset) private pure returns (bytes32 value) {\\n        // This is not memory safe in the general case, but all calls to this private function are within bounds.\\n        assembly (\\\"memory-safe\\\") {\\n            value := mload(add(buffer, add(0x20, offset)))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x81c274a60a7ae232ae3dc9ff3a4011b4849a853c13b0832cd3351bb1bb2f0dae\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Panic} from \\\"../Panic.sol\\\";\\nimport {SafeCast} from \\\"./SafeCast.sol\\\";\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n    enum Rounding {\\n        Floor, // Toward negative infinity\\n        Ceil, // Toward positive infinity\\n        Trunc, // Toward zero\\n        Expand // Away from zero\\n    }\\n\\n    /**\\n     * @dev Return the 512-bit addition of two uint256.\\n     *\\n     * The result is stored in two 256 variables such that sum = high * 2\\u00b2\\u2075\\u2076 + low.\\n     */\\n    function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\\n        assembly (\\\"memory-safe\\\") {\\n            low := add(a, b)\\n            high := lt(low, a)\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the 512-bit multiplication of two uint256.\\n     *\\n     * The result is stored in two 256 variables such that product = high * 2\\u00b2\\u2075\\u2076 + low.\\n     */\\n    function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\\n        // 512-bit multiply [high low] = x * y. Compute the product mod 2\\u00b2\\u2075\\u2076 and mod 2\\u00b2\\u2075\\u2076 - 1, then use\\n        // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n        // variables such that product = high * 2\\u00b2\\u2075\\u2076 + low.\\n        assembly (\\\"memory-safe\\\") {\\n            let mm := mulmod(a, b, not(0))\\n            low := mul(a, b)\\n            high := sub(sub(mm, low), lt(mm, low))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a + b;\\n            success = c >= a;\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a - b;\\n            success = c <= a;\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a * b;\\n            assembly (\\\"memory-safe\\\") {\\n                // Only true when the multiplication doesn't overflow\\n                // (c / a == b) || (a == 0)\\n                success := or(eq(div(c, a), b), iszero(a))\\n            }\\n            // equivalent to: success ? c : 0\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\\n     */\\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            success = b > 0;\\n            assembly (\\\"memory-safe\\\") {\\n                // The `DIV` opcode returns zero when the denominator is 0.\\n                result := div(a, b)\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\\n     */\\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            success = b > 0;\\n            assembly (\\\"memory-safe\\\") {\\n                // The `MOD` opcode returns zero when the denominator is 0.\\n                result := mod(a, b)\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating addition, bounds to `2\\u00b2\\u2075\\u2076 - 1` instead of overflowing.\\n     */\\n    function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (bool success, uint256 result) = tryAdd(a, b);\\n        return ternary(success, result, type(uint256).max);\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing.\\n     */\\n    function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (, uint256 result) = trySub(a, b);\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating multiplication, bounds to `2\\u00b2\\u2075\\u2076 - 1` instead of overflowing.\\n     */\\n    function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (bool success, uint256 result) = tryMul(a, b);\\n        return ternary(success, result, type(uint256).max);\\n    }\\n\\n    /**\\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\\n     *\\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\\n     * one branch when needed, making this function more expensive.\\n     */\\n    function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\\n        unchecked {\\n            // branchless ternary works because:\\n            // b ^ (a ^ b) == a\\n            // b ^ 0 == b\\n            return b ^ ((a ^ b) * SafeCast.toUint(condition));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the largest of two numbers.\\n     */\\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return ternary(a > b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two numbers.\\n     */\\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return ternary(a < b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the average of two numbers. The result is rounded towards\\n     * zero.\\n     */\\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // (a + b) / 2 can overflow.\\n        return (a & b) + (a ^ b) / 2;\\n    }\\n\\n    /**\\n     * @dev Returns the ceiling of the division of two numbers.\\n     *\\n     * This differs from standard division with `/` in that it rounds towards infinity instead\\n     * of rounding towards zero.\\n     */\\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n        if (b == 0) {\\n            // Guarantee the same behavior as in a regular Solidity division.\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n\\n        // The following calculation ensures accurate ceiling division without overflow.\\n        // Since a is non-zero, (a - 1) / b will not overflow.\\n        // The largest possible result occurs when (a - 1) / b is type(uint256).max,\\n        // but the largest value we can obtain is type(uint256).max - 1, which happens\\n        // when a = type(uint256).max and b = 1.\\n        unchecked {\\n            return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\\n     * denominator == 0.\\n     *\\n     * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\\n     * Uniswap Labs also under MIT license.\\n     */\\n    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n        unchecked {\\n            (uint256 high, uint256 low) = mul512(x, y);\\n\\n            // Handle non-overflow cases, 256 by 256 division.\\n            if (high == 0) {\\n                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n                // The surrounding unchecked block does not change this fact.\\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n                return low / denominator;\\n            }\\n\\n            // Make sure the result is less than 2\\u00b2\\u2075\\u2076. Also prevents denominator == 0.\\n            if (denominator <= high) {\\n                Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\\n            }\\n\\n            ///////////////////////////////////////////////\\n            // 512 by 256 division.\\n            ///////////////////////////////////////////////\\n\\n            // Make division exact by subtracting the remainder from [high low].\\n            uint256 remainder;\\n            assembly (\\\"memory-safe\\\") {\\n                // Compute remainder using mulmod.\\n                remainder := mulmod(x, y, denominator)\\n\\n                // Subtract 256 bit number from 512 bit number.\\n                high := sub(high, gt(remainder, low))\\n                low := sub(low, remainder)\\n            }\\n\\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\\n            // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\\n\\n            uint256 twos = denominator & (0 - denominator);\\n            assembly (\\\"memory-safe\\\") {\\n                // Divide denominator by twos.\\n                denominator := div(denominator, twos)\\n\\n                // Divide [high low] by twos.\\n                low := div(low, twos)\\n\\n                // Flip twos such that it is 2\\u00b2\\u2075\\u2076 / twos. If twos is zero, then it becomes one.\\n                twos := add(div(sub(0, twos), twos), 1)\\n            }\\n\\n            // Shift in bits from high into low.\\n            low |= high * twos;\\n\\n            // Invert denominator mod 2\\u00b2\\u2075\\u2076. Now that denominator is an odd number, it has an inverse modulo 2\\u00b2\\u2075\\u2076 such\\n            // that denominator * inv \\u2261 1 mod 2\\u00b2\\u2075\\u2076. Compute the inverse by starting with a seed that is correct for\\n            // four bits. That is, denominator * inv \\u2261 1 mod 2\\u2074.\\n            uint256 inverse = (3 * denominator) ^ 2;\\n\\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\\n            // works in modular arithmetic, doubling the correct bits in each step.\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u2078\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b9\\u2076\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b3\\u00b2\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u2076\\u2074\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b9\\u00b2\\u2078\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b2\\u2075\\u2076\\n\\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n            // This will give us the correct result modulo 2\\u00b2\\u2075\\u2076. Since the preconditions guarantee that the outcome is\\n            // less than 2\\u00b2\\u2075\\u2076, this is the final result. We don't need to compute the high bits of the result and high\\n            // is no longer required.\\n            result = low * inverse;\\n            return result;\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates x * y / denominator with full precision, following the selected rounding direction.\\n     */\\n    function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n        return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\\n    }\\n\\n    /**\\n     * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256.\\n     */\\n    function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) {\\n        unchecked {\\n            (uint256 high, uint256 low) = mul512(x, y);\\n            if (high >= 1 << n) {\\n                Panic.panic(Panic.UNDER_OVERFLOW);\\n            }\\n            return (high << (256 - n)) | (low >> n);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates x * y >> n with full precision, following the selected rounding direction.\\n     */\\n    function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) {\\n        return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0);\\n    }\\n\\n    /**\\n     * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\\n     *\\n     * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\\n     * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\\n     *\\n     * If the input value is not inversible, 0 is returned.\\n     *\\n     * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\\n     * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\\n     */\\n    function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\\n        unchecked {\\n            if (n == 0) return 0;\\n\\n            // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\\n            // Used to compute integers x and y such that: ax + ny = gcd(a, n).\\n            // When the gcd is 1, then the inverse of a modulo n exists and it's x.\\n            // ax + ny = 1\\n            // ax = 1 + (-y)n\\n            // ax \\u2261 1 (mod n) # x is the inverse of a modulo n\\n\\n            // If the remainder is 0 the gcd is n right away.\\n            uint256 remainder = a % n;\\n            uint256 gcd = n;\\n\\n            // Therefore the initial coefficients are:\\n            // ax + ny = gcd(a, n) = n\\n            // 0a + 1n = n\\n            int256 x = 0;\\n            int256 y = 1;\\n\\n            while (remainder != 0) {\\n                uint256 quotient = gcd / remainder;\\n\\n                (gcd, remainder) = (\\n                    // The old remainder is the next gcd to try.\\n                    remainder,\\n                    // Compute the next remainder.\\n                    // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\\n                    // where gcd is at most n (capped to type(uint256).max)\\n                    gcd - remainder * quotient\\n                );\\n\\n                (x, y) = (\\n                    // Increment the coefficient of a.\\n                    y,\\n                    // Decrement the coefficient of n.\\n                    // Can overflow, but the result is casted to uint256 so that the\\n                    // next value of y is \\\"wrapped around\\\" to a value between 0 and n - 1.\\n                    x - y * int256(quotient)\\n                );\\n            }\\n\\n            if (gcd != 1) return 0; // No inverse exists.\\n            return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\\n        }\\n    }\\n\\n    /**\\n     * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\\n     *\\n     * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\\n     * prime, then `a**(p-1) \\u2261 1 mod p`. As a consequence, we have `a * a**(p-2) \\u2261 1 mod p`, which means that\\n     * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\\n     *\\n     * NOTE: this function does NOT check that `p` is a prime greater than `2`.\\n     */\\n    function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\\n        unchecked {\\n            return Math.modExp(a, p - 2, p);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\\n     *\\n     * Requirements:\\n     * - modulus can't be zero\\n     * - underlying staticcall to precompile must succeed\\n     *\\n     * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\\n     * sure the chain you're using it on supports the precompiled contract for modular exponentiation\\n     * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\\n     * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\\n     * interpreted as 0.\\n     */\\n    function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\\n        (bool success, uint256 result) = tryModExp(b, e, m);\\n        if (!success) {\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\\n     * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\\n     * to operate modulo 0 or if the underlying precompile reverted.\\n     *\\n     * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\\n     * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\\n     * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\\n     * of a revert, but the result may be incorrectly interpreted as 0.\\n     */\\n    function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\\n        if (m == 0) return (false, 0);\\n        assembly (\\\"memory-safe\\\") {\\n            let ptr := mload(0x40)\\n            // | Offset    | Content    | Content (Hex)                                                      |\\n            // |-----------|------------|--------------------------------------------------------------------|\\n            // | 0x00:0x1f | size of b  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x20:0x3f | size of e  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x40:0x5f | size of m  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x60:0x7f | value of b | 0x<.............................................................b> |\\n            // | 0x80:0x9f | value of e | 0x<.............................................................e> |\\n            // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\\n            mstore(ptr, 0x20)\\n            mstore(add(ptr, 0x20), 0x20)\\n            mstore(add(ptr, 0x40), 0x20)\\n            mstore(add(ptr, 0x60), b)\\n            mstore(add(ptr, 0x80), e)\\n            mstore(add(ptr, 0xa0), m)\\n\\n            // Given the result < m, it's guaranteed to fit in 32 bytes,\\n            // so we can use the memory scratch space located at offset 0.\\n            success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\\n            result := mload(0x00)\\n        }\\n    }\\n\\n    /**\\n     * @dev Variant of {modExp} that supports inputs of arbitrary length.\\n     */\\n    function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\\n        (bool success, bytes memory result) = tryModExp(b, e, m);\\n        if (!success) {\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\\n     */\\n    function tryModExp(\\n        bytes memory b,\\n        bytes memory e,\\n        bytes memory m\\n    ) internal view returns (bool success, bytes memory result) {\\n        if (_zeroBytes(m)) return (false, new bytes(0));\\n\\n        uint256 mLen = m.length;\\n\\n        // Encode call args in result and move the free memory pointer\\n        result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\\n\\n        assembly (\\\"memory-safe\\\") {\\n            let dataPtr := add(result, 0x20)\\n            // Write result on top of args to avoid allocating extra memory.\\n            success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\\n            // Overwrite the length.\\n            // result.length > returndatasize() is guaranteed because returndatasize() == m.length\\n            mstore(result, mLen)\\n            // Set the memory pointer after the returned data.\\n            mstore(0x40, add(dataPtr, mLen))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns whether the provided byte array is zero.\\n     */\\n    function _zeroBytes(bytes memory byteArray) private pure returns (bool) {\\n        for (uint256 i = 0; i < byteArray.length; ++i) {\\n            if (byteArray[i] != 0) {\\n                return false;\\n            }\\n        }\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\\n     * towards zero.\\n     *\\n     * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\\n     * using integer operations.\\n     */\\n    function sqrt(uint256 a) internal pure returns (uint256) {\\n        unchecked {\\n            // Take care of easy edge cases when a == 0 or a == 1\\n            if (a <= 1) {\\n                return a;\\n            }\\n\\n            // In this function, we use Newton's method to get a root of `f(x) := x\\u00b2 - a`. It involves building a\\n            // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\\n            // the current value as `\\u03b5_n = | x_n - sqrt(a) |`.\\n            //\\n            // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\\n            // of the target. (i.e. `2**(e-1) \\u2264 sqrt(a) < 2**e`). We know that `e \\u2264 128` because `(2\\u00b9\\u00b2\\u2078)\\u00b2 = 2\\u00b2\\u2075\\u2076` is\\n            // bigger than any uint256.\\n            //\\n            // By noticing that\\n            // `2**(e-1) \\u2264 sqrt(a) < 2**e \\u2192 (2**(e-1))\\u00b2 \\u2264 a < (2**e)\\u00b2 \\u2192 2**(2*e-2) \\u2264 a < 2**(2*e)`\\n            // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\\n            // to the msb function.\\n            uint256 aa = a;\\n            uint256 xn = 1;\\n\\n            if (aa >= (1 << 128)) {\\n                aa >>= 128;\\n                xn <<= 64;\\n            }\\n            if (aa >= (1 << 64)) {\\n                aa >>= 64;\\n                xn <<= 32;\\n            }\\n            if (aa >= (1 << 32)) {\\n                aa >>= 32;\\n                xn <<= 16;\\n            }\\n            if (aa >= (1 << 16)) {\\n                aa >>= 16;\\n                xn <<= 8;\\n            }\\n            if (aa >= (1 << 8)) {\\n                aa >>= 8;\\n                xn <<= 4;\\n            }\\n            if (aa >= (1 << 4)) {\\n                aa >>= 4;\\n                xn <<= 2;\\n            }\\n            if (aa >= (1 << 2)) {\\n                xn <<= 1;\\n            }\\n\\n            // We now have x_n such that `x_n = 2**(e-1) \\u2264 sqrt(a) < 2**e = 2 * x_n`. This implies \\u03b5_n \\u2264 2**(e-1).\\n            //\\n            // We can refine our estimation by noticing that the middle of that interval minimizes the error.\\n            // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to \\u03b5_n \\u2264 2**(e-2).\\n            // This is going to be our x_0 (and \\u03b5_0)\\n            xn = (3 * xn) >> 1; // \\u03b5_0 := | x_0 - sqrt(a) | \\u2264 2**(e-2)\\n\\n            // From here, Newton's method give us:\\n            // x_{n+1} = (x_n + a / x_n) / 2\\n            //\\n            // One should note that:\\n            // x_{n+1}\\u00b2 - a = ((x_n + a / x_n) / 2)\\u00b2 - a\\n            //              = ((x_n\\u00b2 + a) / (2 * x_n))\\u00b2 - a\\n            //              = (x_n\\u2074 + 2 * a * x_n\\u00b2 + a\\u00b2) / (4 * x_n\\u00b2) - a\\n            //              = (x_n\\u2074 + 2 * a * x_n\\u00b2 + a\\u00b2 - 4 * a * x_n\\u00b2) / (4 * x_n\\u00b2)\\n            //              = (x_n\\u2074 - 2 * a * x_n\\u00b2 + a\\u00b2) / (4 * x_n\\u00b2)\\n            //              = (x_n\\u00b2 - a)\\u00b2 / (2 * x_n)\\u00b2\\n            //              = ((x_n\\u00b2 - a) / (2 * x_n))\\u00b2\\n            //              \\u2265 0\\n            // Which proves that for all n \\u2265 1, sqrt(a) \\u2264 x_n\\n            //\\n            // This gives us the proof of quadratic convergence of the sequence:\\n            // \\u03b5_{n+1} = | x_{n+1} - sqrt(a) |\\n            //         = | (x_n + a / x_n) / 2 - sqrt(a) |\\n            //         = | (x_n\\u00b2 + a - 2*x_n*sqrt(a)) / (2 * x_n) |\\n            //         = | (x_n - sqrt(a))\\u00b2 / (2 * x_n) |\\n            //         = | \\u03b5_n\\u00b2 / (2 * x_n) |\\n            //         = \\u03b5_n\\u00b2 / | (2 * x_n) |\\n            //\\n            // For the first iteration, we have a special case where x_0 is known:\\n            // \\u03b5_1 = \\u03b5_0\\u00b2 / | (2 * x_0) |\\n            //     \\u2264 (2**(e-2))\\u00b2 / (2 * (2**(e-1) + 2**(e-2)))\\n            //     \\u2264 2**(2*e-4) / (3 * 2**(e-1))\\n            //     \\u2264 2**(e-3) / 3\\n            //     \\u2264 2**(e-3-log2(3))\\n            //     \\u2264 2**(e-4.5)\\n            //\\n            // For the following iterations, we use the fact that, 2**(e-1) \\u2264 sqrt(a) \\u2264 x_n:\\n            // \\u03b5_{n+1} = \\u03b5_n\\u00b2 / | (2 * x_n) |\\n            //         \\u2264 (2**(e-k))\\u00b2 / (2 * 2**(e-1))\\n            //         \\u2264 2**(2*e-2*k) / 2**e\\n            //         \\u2264 2**(e-2*k)\\n            xn = (xn + a / xn) >> 1; // \\u03b5_1 := | x_1 - sqrt(a) | \\u2264 2**(e-4.5)  -- special case, see above\\n            xn = (xn + a / xn) >> 1; // \\u03b5_2 := | x_2 - sqrt(a) | \\u2264 2**(e-9)    -- general case with k = 4.5\\n            xn = (xn + a / xn) >> 1; // \\u03b5_3 := | x_3 - sqrt(a) | \\u2264 2**(e-18)   -- general case with k = 9\\n            xn = (xn + a / xn) >> 1; // \\u03b5_4 := | x_4 - sqrt(a) | \\u2264 2**(e-36)   -- general case with k = 18\\n            xn = (xn + a / xn) >> 1; // \\u03b5_5 := | x_5 - sqrt(a) | \\u2264 2**(e-72)   -- general case with k = 36\\n            xn = (xn + a / xn) >> 1; // \\u03b5_6 := | x_6 - sqrt(a) | \\u2264 2**(e-144)  -- general case with k = 72\\n\\n            // Because e \\u2264 128 (as discussed during the first estimation phase), we know have reached a precision\\n            // \\u03b5_6 \\u2264 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\\n            // sqrt(a) or sqrt(a) + 1.\\n            return xn - SafeCast.toUint(xn > a / xn);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates sqrt(a), following the selected rounding direction.\\n     */\\n    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = sqrt(a);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 2 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     */\\n    function log2(uint256 x) internal pure returns (uint256 r) {\\n        // If value has upper 128 bits set, log2 result is at least 128\\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\\n        // If upper 64 bits of 128-bit half set, add 64 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\\n        // If upper 32 bits of 64-bit half set, add 32 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\\n        // If upper 16 bits of 32-bit half set, add 16 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\\n        // If upper 8 bits of 16-bit half set, add 8 to result\\n        r |= SafeCast.toUint((x >> r) > 0xff) << 3;\\n        // If upper 4 bits of 8-bit half set, add 4 to result\\n        r |= SafeCast.toUint((x >> r) > 0xf) << 2;\\n\\n        // Shifts value right by the current result and use it as an index into this lookup table:\\n        //\\n        // | x (4 bits) |  index  | table[index] = MSB position |\\n        // |------------|---------|-----------------------------|\\n        // |    0000    |    0    |        table[0] = 0         |\\n        // |    0001    |    1    |        table[1] = 0         |\\n        // |    0010    |    2    |        table[2] = 1         |\\n        // |    0011    |    3    |        table[3] = 1         |\\n        // |    0100    |    4    |        table[4] = 2         |\\n        // |    0101    |    5    |        table[5] = 2         |\\n        // |    0110    |    6    |        table[6] = 2         |\\n        // |    0111    |    7    |        table[7] = 2         |\\n        // |    1000    |    8    |        table[8] = 3         |\\n        // |    1001    |    9    |        table[9] = 3         |\\n        // |    1010    |   10    |        table[10] = 3        |\\n        // |    1011    |   11    |        table[11] = 3        |\\n        // |    1100    |   12    |        table[12] = 3        |\\n        // |    1101    |   13    |        table[13] = 3        |\\n        // |    1110    |   14    |        table[14] = 3        |\\n        // |    1111    |   15    |        table[15] = 3        |\\n        //\\n        // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes.\\n        assembly (\\\"memory-safe\\\") {\\n            r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000))\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log2(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 10 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     */\\n    function log10(uint256 value) internal pure returns (uint256) {\\n        uint256 result = 0;\\n        unchecked {\\n            if (value >= 10 ** 64) {\\n                value /= 10 ** 64;\\n                result += 64;\\n            }\\n            if (value >= 10 ** 32) {\\n                value /= 10 ** 32;\\n                result += 32;\\n            }\\n            if (value >= 10 ** 16) {\\n                value /= 10 ** 16;\\n                result += 16;\\n            }\\n            if (value >= 10 ** 8) {\\n                value /= 10 ** 8;\\n                result += 8;\\n            }\\n            if (value >= 10 ** 4) {\\n                value /= 10 ** 4;\\n                result += 4;\\n            }\\n            if (value >= 10 ** 2) {\\n                value /= 10 ** 2;\\n                result += 2;\\n            }\\n            if (value >= 10 ** 1) {\\n                result += 1;\\n            }\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log10(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 256 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     *\\n     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n     */\\n    function log256(uint256 x) internal pure returns (uint256 r) {\\n        // If value has upper 128 bits set, log2 result is at least 128\\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\\n        // If upper 64 bits of 128-bit half set, add 64 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\\n        // If upper 32 bits of 64-bit half set, add 32 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\\n        // If upper 16 bits of 32-bit half set, add 16 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\\n        // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8\\n        return (r >> 3) | SafeCast.toUint((x >> r) > 0xff);\\n    }\\n\\n    /**\\n     * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log256(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\\n     */\\n    function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\\n        return uint8(rounding) % 2 == 1;\\n    }\\n}\\n\",\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n */\\nlibrary SafeCast {\\n    /**\\n     * @dev Value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\\n\\n    /**\\n     * @dev An int value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedIntToUint(int256 value);\\n\\n    /**\\n     * @dev Value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\\n\\n    /**\\n     * @dev An uint value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedUintToInt(uint256 value);\\n\\n    /**\\n     * @dev Returns the downcasted uint248 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint248).\\n     *\\n     * Counterpart to Solidity's `uint248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toUint248(uint256 value) internal pure returns (uint248) {\\n        if (value > type(uint248).max) {\\n            revert SafeCastOverflowedUintDowncast(248, value);\\n        }\\n        return uint248(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint240 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint240).\\n     *\\n     * Counterpart to Solidity's `uint240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toUint240(uint256 value) internal pure returns (uint240) {\\n        if (value > type(uint240).max) {\\n            revert SafeCastOverflowedUintDowncast(240, value);\\n        }\\n        return uint240(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint232 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint232).\\n     *\\n     * Counterpart to Solidity's `uint232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toUint232(uint256 value) internal pure returns (uint232) {\\n        if (value > type(uint232).max) {\\n            revert SafeCastOverflowedUintDowncast(232, value);\\n        }\\n        return uint232(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint224 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint224).\\n     *\\n     * Counterpart to Solidity's `uint224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toUint224(uint256 value) internal pure returns (uint224) {\\n        if (value > type(uint224).max) {\\n            revert SafeCastOverflowedUintDowncast(224, value);\\n        }\\n        return uint224(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint216 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint216).\\n     *\\n     * Counterpart to Solidity's `uint216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toUint216(uint256 value) internal pure returns (uint216) {\\n        if (value > type(uint216).max) {\\n            revert SafeCastOverflowedUintDowncast(216, value);\\n        }\\n        return uint216(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint208 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint208).\\n     *\\n     * Counterpart to Solidity's `uint208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toUint208(uint256 value) internal pure returns (uint208) {\\n        if (value > type(uint208).max) {\\n            revert SafeCastOverflowedUintDowncast(208, value);\\n        }\\n        return uint208(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint200 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint200).\\n     *\\n     * Counterpart to Solidity's `uint200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toUint200(uint256 value) internal pure returns (uint200) {\\n        if (value > type(uint200).max) {\\n            revert SafeCastOverflowedUintDowncast(200, value);\\n        }\\n        return uint200(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint192 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint192).\\n     *\\n     * Counterpart to Solidity's `uint192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toUint192(uint256 value) internal pure returns (uint192) {\\n        if (value > type(uint192).max) {\\n            revert SafeCastOverflowedUintDowncast(192, value);\\n        }\\n        return uint192(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint184 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint184).\\n     *\\n     * Counterpart to Solidity's `uint184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toUint184(uint256 value) internal pure returns (uint184) {\\n        if (value > type(uint184).max) {\\n            revert SafeCastOverflowedUintDowncast(184, value);\\n        }\\n        return uint184(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint176 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint176).\\n     *\\n     * Counterpart to Solidity's `uint176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toUint176(uint256 value) internal pure returns (uint176) {\\n        if (value > type(uint176).max) {\\n            revert SafeCastOverflowedUintDowncast(176, value);\\n        }\\n        return uint176(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint168 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint168).\\n     *\\n     * Counterpart to Solidity's `uint168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toUint168(uint256 value) internal pure returns (uint168) {\\n        if (value > type(uint168).max) {\\n            revert SafeCastOverflowedUintDowncast(168, value);\\n        }\\n        return uint168(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint160 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint160).\\n     *\\n     * Counterpart to Solidity's `uint160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toUint160(uint256 value) internal pure returns (uint160) {\\n        if (value > type(uint160).max) {\\n            revert SafeCastOverflowedUintDowncast(160, value);\\n        }\\n        return uint160(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint152 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint152).\\n     *\\n     * Counterpart to Solidity's `uint152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toUint152(uint256 value) internal pure returns (uint152) {\\n        if (value > type(uint152).max) {\\n            revert SafeCastOverflowedUintDowncast(152, value);\\n        }\\n        return uint152(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint144 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint144).\\n     *\\n     * Counterpart to Solidity's `uint144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toUint144(uint256 value) internal pure returns (uint144) {\\n        if (value > type(uint144).max) {\\n            revert SafeCastOverflowedUintDowncast(144, value);\\n        }\\n        return uint144(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint136 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint136).\\n     *\\n     * Counterpart to Solidity's `uint136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toUint136(uint256 value) internal pure returns (uint136) {\\n        if (value > type(uint136).max) {\\n            revert SafeCastOverflowedUintDowncast(136, value);\\n        }\\n        return uint136(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint128 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint128).\\n     *\\n     * Counterpart to Solidity's `uint128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toUint128(uint256 value) internal pure returns (uint128) {\\n        if (value > type(uint128).max) {\\n            revert SafeCastOverflowedUintDowncast(128, value);\\n        }\\n        return uint128(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint120 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint120).\\n     *\\n     * Counterpart to Solidity's `uint120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toUint120(uint256 value) internal pure returns (uint120) {\\n        if (value > type(uint120).max) {\\n            revert SafeCastOverflowedUintDowncast(120, value);\\n        }\\n        return uint120(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint112 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint112).\\n     *\\n     * Counterpart to Solidity's `uint112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toUint112(uint256 value) internal pure returns (uint112) {\\n        if (value > type(uint112).max) {\\n            revert SafeCastOverflowedUintDowncast(112, value);\\n        }\\n        return uint112(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint104 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint104).\\n     *\\n     * Counterpart to Solidity's `uint104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toUint104(uint256 value) internal pure returns (uint104) {\\n        if (value > type(uint104).max) {\\n            revert SafeCastOverflowedUintDowncast(104, value);\\n        }\\n        return uint104(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint96 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint96).\\n     *\\n     * Counterpart to Solidity's `uint96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toUint96(uint256 value) internal pure returns (uint96) {\\n        if (value > type(uint96).max) {\\n            revert SafeCastOverflowedUintDowncast(96, value);\\n        }\\n        return uint96(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint88 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint88).\\n     *\\n     * Counterpart to Solidity's `uint88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toUint88(uint256 value) internal pure returns (uint88) {\\n        if (value > type(uint88).max) {\\n            revert SafeCastOverflowedUintDowncast(88, value);\\n        }\\n        return uint88(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint80 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint80).\\n     *\\n     * Counterpart to Solidity's `uint80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toUint80(uint256 value) internal pure returns (uint80) {\\n        if (value > type(uint80).max) {\\n            revert SafeCastOverflowedUintDowncast(80, value);\\n        }\\n        return uint80(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint72 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint72).\\n     *\\n     * Counterpart to Solidity's `uint72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toUint72(uint256 value) internal pure returns (uint72) {\\n        if (value > type(uint72).max) {\\n            revert SafeCastOverflowedUintDowncast(72, value);\\n        }\\n        return uint72(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint64 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint64).\\n     *\\n     * Counterpart to Solidity's `uint64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toUint64(uint256 value) internal pure returns (uint64) {\\n        if (value > type(uint64).max) {\\n            revert SafeCastOverflowedUintDowncast(64, value);\\n        }\\n        return uint64(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint56 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint56).\\n     *\\n     * Counterpart to Solidity's `uint56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toUint56(uint256 value) internal pure returns (uint56) {\\n        if (value > type(uint56).max) {\\n            revert SafeCastOverflowedUintDowncast(56, value);\\n        }\\n        return uint56(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint48 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint48).\\n     *\\n     * Counterpart to Solidity's `uint48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toUint48(uint256 value) internal pure returns (uint48) {\\n        if (value > type(uint48).max) {\\n            revert SafeCastOverflowedUintDowncast(48, value);\\n        }\\n        return uint48(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint40 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint40).\\n     *\\n     * Counterpart to Solidity's `uint40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toUint40(uint256 value) internal pure returns (uint40) {\\n        if (value > type(uint40).max) {\\n            revert SafeCastOverflowedUintDowncast(40, value);\\n        }\\n        return uint40(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint32 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint32).\\n     *\\n     * Counterpart to Solidity's `uint32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toUint32(uint256 value) internal pure returns (uint32) {\\n        if (value > type(uint32).max) {\\n            revert SafeCastOverflowedUintDowncast(32, value);\\n        }\\n        return uint32(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint24 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint24).\\n     *\\n     * Counterpart to Solidity's `uint24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toUint24(uint256 value) internal pure returns (uint24) {\\n        if (value > type(uint24).max) {\\n            revert SafeCastOverflowedUintDowncast(24, value);\\n        }\\n        return uint24(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint16 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint16).\\n     *\\n     * Counterpart to Solidity's `uint16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toUint16(uint256 value) internal pure returns (uint16) {\\n        if (value > type(uint16).max) {\\n            revert SafeCastOverflowedUintDowncast(16, value);\\n        }\\n        return uint16(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint8 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint8).\\n     *\\n     * Counterpart to Solidity's `uint8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toUint8(uint256 value) internal pure returns (uint8) {\\n        if (value > type(uint8).max) {\\n            revert SafeCastOverflowedUintDowncast(8, value);\\n        }\\n        return uint8(value);\\n    }\\n\\n    /**\\n     * @dev Converts a signed int256 into an unsigned uint256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be greater than or equal to 0.\\n     */\\n    function toUint256(int256 value) internal pure returns (uint256) {\\n        if (value < 0) {\\n            revert SafeCastOverflowedIntToUint(value);\\n        }\\n        return uint256(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int248 from int256, reverting on\\n     * overflow (when the input is less than smallest int248 or\\n     * greater than largest int248).\\n     *\\n     * Counterpart to Solidity's `int248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n        downcasted = int248(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(248, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int240 from int256, reverting on\\n     * overflow (when the input is less than smallest int240 or\\n     * greater than largest int240).\\n     *\\n     * Counterpart to Solidity's `int240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n        downcasted = int240(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(240, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int232 from int256, reverting on\\n     * overflow (when the input is less than smallest int232 or\\n     * greater than largest int232).\\n     *\\n     * Counterpart to Solidity's `int232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n        downcasted = int232(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(232, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int224 from int256, reverting on\\n     * overflow (when the input is less than smallest int224 or\\n     * greater than largest int224).\\n     *\\n     * Counterpart to Solidity's `int224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n        downcasted = int224(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(224, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int216 from int256, reverting on\\n     * overflow (when the input is less than smallest int216 or\\n     * greater than largest int216).\\n     *\\n     * Counterpart to Solidity's `int216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n        downcasted = int216(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(216, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int208 from int256, reverting on\\n     * overflow (when the input is less than smallest int208 or\\n     * greater than largest int208).\\n     *\\n     * Counterpart to Solidity's `int208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n        downcasted = int208(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(208, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int200 from int256, reverting on\\n     * overflow (when the input is less than smallest int200 or\\n     * greater than largest int200).\\n     *\\n     * Counterpart to Solidity's `int200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n        downcasted = int200(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(200, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int192 from int256, reverting on\\n     * overflow (when the input is less than smallest int192 or\\n     * greater than largest int192).\\n     *\\n     * Counterpart to Solidity's `int192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n        downcasted = int192(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(192, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int184 from int256, reverting on\\n     * overflow (when the input is less than smallest int184 or\\n     * greater than largest int184).\\n     *\\n     * Counterpart to Solidity's `int184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n        downcasted = int184(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(184, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int176 from int256, reverting on\\n     * overflow (when the input is less than smallest int176 or\\n     * greater than largest int176).\\n     *\\n     * Counterpart to Solidity's `int176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n        downcasted = int176(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(176, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int168 from int256, reverting on\\n     * overflow (when the input is less than smallest int168 or\\n     * greater than largest int168).\\n     *\\n     * Counterpart to Solidity's `int168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n        downcasted = int168(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(168, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int160 from int256, reverting on\\n     * overflow (when the input is less than smallest int160 or\\n     * greater than largest int160).\\n     *\\n     * Counterpart to Solidity's `int160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n        downcasted = int160(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(160, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int152 from int256, reverting on\\n     * overflow (when the input is less than smallest int152 or\\n     * greater than largest int152).\\n     *\\n     * Counterpart to Solidity's `int152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n        downcasted = int152(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(152, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int144 from int256, reverting on\\n     * overflow (when the input is less than smallest int144 or\\n     * greater than largest int144).\\n     *\\n     * Counterpart to Solidity's `int144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n        downcasted = int144(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(144, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int136 from int256, reverting on\\n     * overflow (when the input is less than smallest int136 or\\n     * greater than largest int136).\\n     *\\n     * Counterpart to Solidity's `int136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n        downcasted = int136(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(136, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int128 from int256, reverting on\\n     * overflow (when the input is less than smallest int128 or\\n     * greater than largest int128).\\n     *\\n     * Counterpart to Solidity's `int128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n        downcasted = int128(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(128, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int120 from int256, reverting on\\n     * overflow (when the input is less than smallest int120 or\\n     * greater than largest int120).\\n     *\\n     * Counterpart to Solidity's `int120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n        downcasted = int120(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(120, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int112 from int256, reverting on\\n     * overflow (when the input is less than smallest int112 or\\n     * greater than largest int112).\\n     *\\n     * Counterpart to Solidity's `int112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n        downcasted = int112(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(112, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int104 from int256, reverting on\\n     * overflow (when the input is less than smallest int104 or\\n     * greater than largest int104).\\n     *\\n     * Counterpart to Solidity's `int104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n        downcasted = int104(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(104, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int96 from int256, reverting on\\n     * overflow (when the input is less than smallest int96 or\\n     * greater than largest int96).\\n     *\\n     * Counterpart to Solidity's `int96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n        downcasted = int96(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(96, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int88 from int256, reverting on\\n     * overflow (when the input is less than smallest int88 or\\n     * greater than largest int88).\\n     *\\n     * Counterpart to Solidity's `int88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n        downcasted = int88(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(88, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int80 from int256, reverting on\\n     * overflow (when the input is less than smallest int80 or\\n     * greater than largest int80).\\n     *\\n     * Counterpart to Solidity's `int80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n        downcasted = int80(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(80, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int72 from int256, reverting on\\n     * overflow (when the input is less than smallest int72 or\\n     * greater than largest int72).\\n     *\\n     * Counterpart to Solidity's `int72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n        downcasted = int72(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(72, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int64 from int256, reverting on\\n     * overflow (when the input is less than smallest int64 or\\n     * greater than largest int64).\\n     *\\n     * Counterpart to Solidity's `int64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n        downcasted = int64(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(64, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int56 from int256, reverting on\\n     * overflow (when the input is less than smallest int56 or\\n     * greater than largest int56).\\n     *\\n     * Counterpart to Solidity's `int56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n        downcasted = int56(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(56, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int48 from int256, reverting on\\n     * overflow (when the input is less than smallest int48 or\\n     * greater than largest int48).\\n     *\\n     * Counterpart to Solidity's `int48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n        downcasted = int48(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(48, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int40 from int256, reverting on\\n     * overflow (when the input is less than smallest int40 or\\n     * greater than largest int40).\\n     *\\n     * Counterpart to Solidity's `int40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n        downcasted = int40(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(40, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int32 from int256, reverting on\\n     * overflow (when the input is less than smallest int32 or\\n     * greater than largest int32).\\n     *\\n     * Counterpart to Solidity's `int32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n        downcasted = int32(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(32, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int24 from int256, reverting on\\n     * overflow (when the input is less than smallest int24 or\\n     * greater than largest int24).\\n     *\\n     * Counterpart to Solidity's `int24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n        downcasted = int24(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(24, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int16 from int256, reverting on\\n     * overflow (when the input is less than smallest int16 or\\n     * greater than largest int16).\\n     *\\n     * Counterpart to Solidity's `int16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n        downcasted = int16(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(16, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int8 from int256, reverting on\\n     * overflow (when the input is less than smallest int8 or\\n     * greater than largest int8).\\n     *\\n     * Counterpart to Solidity's `int8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n        downcasted = int8(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(8, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts an unsigned uint256 into a signed int256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be less than or equal to maxInt256.\\n     */\\n    function toInt256(uint256 value) internal pure returns (int256) {\\n        // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n        if (value > uint256(type(int256).max)) {\\n            revert SafeCastOverflowedUintToInt(value);\\n        }\\n        return int256(value);\\n    }\\n\\n    /**\\n     * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\\n     */\\n    function toUint(bool b) internal pure returns (uint256 u) {\\n        assembly (\\\"memory-safe\\\") {\\n            u := iszero(iszero(b))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {SafeCast} from \\\"./SafeCast.sol\\\";\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n    /**\\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\\n     *\\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\\n     * one branch when needed, making this function more expensive.\\n     */\\n    function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {\\n        unchecked {\\n            // branchless ternary works because:\\n            // b ^ (a ^ b) == a\\n            // b ^ 0 == b\\n            return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the largest of two signed numbers.\\n     */\\n    function max(int256 a, int256 b) internal pure returns (int256) {\\n        return ternary(a > b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two signed numbers.\\n     */\\n    function min(int256 a, int256 b) internal pure returns (int256) {\\n        return ternary(a < b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the average of two signed numbers without overflow.\\n     * The result is rounded towards zero.\\n     */\\n    function average(int256 a, int256 b) internal pure returns (int256) {\\n        // Formula from the book \\\"Hacker's Delight\\\"\\n        int256 x = (a & b) + ((a ^ b) >> 1);\\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\\n    }\\n\\n    /**\\n     * @dev Returns the absolute unsigned value of a signed value.\\n     */\\n    function abs(int256 n) internal pure returns (uint256) {\\n        unchecked {\\n            // Formula from the \\\"Bit Twiddling Hacks\\\" by Sean Eron Anderson.\\n            // Since `n` is a signed integer, the generated bytecode will use the SAR opcode to perform the right shift,\\n            // taking advantage of the most significant (or \\\"sign\\\" bit) in two's complement representation.\\n            // This opcode adds new most significant bits set to the value of the previous most significant bit. As a result,\\n            // the mask will either be `bytes32(0)` (if n is positive) or `~bytes32(0)` (if n is negative).\\n            int256 mask = n >> 255;\\n\\n            // A `bytes32(0)` mask leaves the input unchanged, while a `~bytes32(0)` mask complements it.\\n            return uint256((n + mask) ^ mask);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":5365,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol:ERC721URIStorage","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":5367,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol:ERC721URIStorage","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":5371,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol:ERC721URIStorage","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":5375,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol:ERC721URIStorage","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":5379,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol:ERC721URIStorage","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":5385,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol:ERC721URIStorage","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":6452,"contract":"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol:ERC721URIStorage","label":"_tokenURIs","offset":0,"slot":"6","type":"t_mapping(t_uint256,t_string_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_string_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => string)","numberOfBytes":"32","value":"t_string_storage"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"IERC721Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"See https://eips.ethereum.org/EIPS/eip-721","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"name()":{"details":"Returns the token collection name."},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or   {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."}},"title":"ERC-721 Non-Fungible Token Standard, optional metadata extension","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or   {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\\n     *   {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721} from \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol":{"ERC721Utils":{"abi":[],"devdoc":{"details":"Library that provide common ERC-721 utility functions. See https://eips.ethereum.org/EIPS/eip-721[ERC-721]. _Available since v5.1._","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122032c22823c0e2370631decdda3401912d910a6d4d6cb41dcee6efb3cd3462831964736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN 0xC2 0x28 0x23 0xC0 0xE2 CALLDATACOPY MOD BALANCE 0xDE 0xCD 0xDA CALLVALUE ADD SWAP2 0x2D SWAP2 EXP PUSH14 0x4D6CB41DCEE6EFB3CD3462831964 PUSH20 0x6F6C634300081C00330000000000000000000000 ","sourceMap":"431:1488:45:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;431:1488:45;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122032c22823c0e2370631decdda3401912d910a6d4d6cb41dcee6efb3cd3462831964736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN 0xC2 0x28 0x23 0xC0 0xE2 CALLDATACOPY MOD BALANCE 0xDE 0xCD 0xDA CALLVALUE ADD SWAP2 0x2D SWAP2 EXP PUSH14 0x4D6CB41DCEE6EFB3CD3462831964 PUSH20 0x6F6C634300081C00330000000000000000000000 ","sourceMap":"431:1488:45:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"checkOnERC721Received(address,address,address,uint256,bytes memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library that provide common ERC-721 utility functions. See https://eips.ethereum.org/EIPS/eip-721[ERC-721]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":\"ERC721Utils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title ERC-721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC-721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be\\n     * reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC721/utils/ERC721Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721Receiver} from \\\"../IERC721Receiver.sol\\\";\\nimport {IERC721Errors} from \\\"../../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Library that provide common ERC-721 utility functions.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-721[ERC-721].\\n *\\n * _Available since v5.1._\\n */\\nlibrary ERC721Utils {\\n    /**\\n     * @dev Performs an acceptance check for the provided `operator` by calling {IERC721Receiver-onERC721Received}\\n     * on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).\\n     *\\n     * The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).\\n     * Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept\\n     * the transfer.\\n     */\\n    function checkOnERC721Received(\\n        address operator,\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length > 0) {\\n            try IERC721Receiver(to).onERC721Received(operator, from, tokenId, data) returns (bytes4 retval) {\\n                if (retval != IERC721Receiver.onERC721Received.selector) {\\n                    // Token rejected\\n                    revert IERC721Errors.ERC721InvalidReceiver(to);\\n                }\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    // non-IERC721Receiver implementer\\n                    revert IERC721Errors.ERC721InvalidReceiver(to);\\n                } else {\\n                    assembly (\\\"memory-safe\\\") {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xddab643169f47a2c5291afafcbfdca045d9e6835553307d090bc048b6dabd0ac\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"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.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"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.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Panic.sol":{"Panic":{"abi":[],"devdoc":{"details":"Helper library for emitting standardized panic codes. ```solidity contract Example {      using Panic for uint256;      // Use any of the declared internal constants      function foo() { Panic.GENERIC.panic(); }      // Alternatively      function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._","kind":"dev","methods":{},"stateVariables":{"ARRAY_OUT_OF_BOUNDS":{"details":"array out of bounds access"},"ASSERT":{"details":"used by the assert() builtin"},"DIVISION_BY_ZERO":{"details":"division or modulo by zero"},"EMPTY_ARRAY_POP":{"details":"empty array pop"},"ENUM_CONVERSION_ERROR":{"details":"enum conversion error"},"GENERIC":{"details":"generic / unspecified error"},"INVALID_INTERNAL_FUNCTION":{"details":"calling invalid internal function"},"RESOURCE_ERROR":{"details":"resource error (too large allocation or too large array)"},"STORAGE_ENCODING_ERROR":{"details":"invalid encoding in storage"},"UNDER_OVERFLOW":{"details":"arithmetic underflow or overflow"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122072366e5bf91f5918234cb22767972057fdb06de86bfc4df537d32d6c71a27cd064736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH19 0x366E5BF91F5918234CB22767972057FDB06DE8 PUSH12 0xFC4DF537D32D6C71A27CD064 PUSH20 0x6F6C634300081C00330000000000000000000000 ","sourceMap":"657:1315:47:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;657:1315:47;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122072366e5bf91f5918234cb22767972057fdb06de86bfc4df537d32d6c71a27cd064736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH19 0x366E5BF91F5918234CB22767972057FDB06DE8 PUSH12 0xFC4DF537D32D6C71A27CD064 PUSH20 0x6F6C634300081C00330000000000000000000000 ","sourceMap":"657:1315:47:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"panic(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Helper library for emitting standardized panic codes. ```solidity contract Example {      using Panic for uint256;      // Use any of the declared internal constants      function foo() { Panic.GENERIC.panic(); }      // Alternatively      function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ARRAY_OUT_OF_BOUNDS\":{\"details\":\"array out of bounds access\"},\"ASSERT\":{\"details\":\"used by the assert() builtin\"},\"DIVISION_BY_ZERO\":{\"details\":\"division or modulo by zero\"},\"EMPTY_ARRAY_POP\":{\"details\":\"empty array pop\"},\"ENUM_CONVERSION_ERROR\":{\"details\":\"enum conversion error\"},\"GENERIC\":{\"details\":\"generic / unspecified error\"},\"INVALID_INTERNAL_FUNCTION\":{\"details\":\"calling invalid internal function\"},\"RESOURCE_ERROR\":{\"details\":\"resource error (too large allocation or too large array)\"},\"STORAGE_ENCODING_ERROR\":{\"details\":\"invalid encoding in storage\"},\"UNDER_OVERFLOW\":{\"details\":\"arithmetic underflow or overflow\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Panic.sol\":\"Panic\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Helper library for emitting standardized panic codes.\\n *\\n * ```solidity\\n * contract Example {\\n *      using Panic for uint256;\\n *\\n *      // Use any of the declared internal constants\\n *      function foo() { Panic.GENERIC.panic(); }\\n *\\n *      // Alternatively\\n *      function foo() { Panic.panic(Panic.GENERIC); }\\n * }\\n * ```\\n *\\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\\n *\\n * _Available since v5.1._\\n */\\n// slither-disable-next-line unused-state\\nlibrary Panic {\\n    /// @dev generic / unspecified error\\n    uint256 internal constant GENERIC = 0x00;\\n    /// @dev used by the assert() builtin\\n    uint256 internal constant ASSERT = 0x01;\\n    /// @dev arithmetic underflow or overflow\\n    uint256 internal constant UNDER_OVERFLOW = 0x11;\\n    /// @dev division or modulo by zero\\n    uint256 internal constant DIVISION_BY_ZERO = 0x12;\\n    /// @dev enum conversion error\\n    uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\\n    /// @dev invalid encoding in storage\\n    uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\\n    /// @dev empty array pop\\n    uint256 internal constant EMPTY_ARRAY_POP = 0x31;\\n    /// @dev array out of bounds access\\n    uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\\n    /// @dev resource error (too large allocation or too large array)\\n    uint256 internal constant RESOURCE_ERROR = 0x41;\\n    /// @dev calling invalid internal function\\n    uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\\n\\n    /// @dev Reverts with a panic code. Recommended to use with\\n    /// the internal constants with predefined codes.\\n    function panic(uint256 code) internal pure {\\n        assembly (\\\"memory-safe\\\") {\\n            mstore(0x00, 0x4e487b71)\\n            mstore(0x20, code)\\n            revert(0x1c, 0x24)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"StringsInsufficientHexLength","type":"error"},{"inputs":[],"name":"StringsInvalidAddressFormat","type":"error"},{"inputs":[],"name":"StringsInvalidChar","type":"error"}],"devdoc":{"details":"String operations.","errors":{"StringsInsufficientHexLength(uint256,uint256)":[{"details":"The `value` string doesn't fit in the specified `length`."}],"StringsInvalidAddressFormat()":[{"details":"The string being parsed is not a properly formatted address."}],"StringsInvalidChar()":[{"details":"The string being parsed contains characters that are not in scope of the given base."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b4c8efab386f589bd5d5a0ccb59f7b9a6c2c6fd4085977a41fdac231fe87388864736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0xC8 0xEF 0xAB CODESIZE PUSH16 0x589BD5D5A0CCB59F7B9A6C2C6FD40859 PUSH24 0xA41FDAC231FE87388864736F6C634300081C003300000000 ","sourceMap":"297:18980:48:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;297:18980:48;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b4c8efab386f589bd5d5a0ccb59f7b9a6c2c6fd4085977a41fdac231fe87388864736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0xC8 0xEF 0xAB CODESIZE PUSH16 0x589BD5D5A0CCB59F7B9A6C2C6FD40859 PUSH24 0xA41FDAC231FE87388864736F6C634300081C003300000000 ","sourceMap":"297:18980:48:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"_tryParseChr(bytes1)":"infinite","_tryParseHexUintUncheckedBounds(string memory,uint256,uint256)":"infinite","_tryParseIntUncheckedBounds(string memory,uint256,uint256)":"infinite","_tryParseUintUncheckedBounds(string memory,uint256,uint256)":"infinite","_unsafeReadBytesOffset(bytes memory,uint256)":"infinite","equal(string memory,string memory)":"infinite","escapeJSON(string memory)":"infinite","parseAddress(string memory)":"infinite","parseAddress(string memory,uint256,uint256)":"infinite","parseHexUint(string memory)":"infinite","parseHexUint(string memory,uint256,uint256)":"infinite","parseInt(string memory)":"infinite","parseInt(string memory,uint256,uint256)":"infinite","parseUint(string memory)":"infinite","parseUint(string memory,uint256,uint256)":"infinite","toChecksumHexString(address)":"infinite","toHexString(address)":"infinite","toHexString(uint256)":"infinite","toHexString(uint256,uint256)":"infinite","toString(uint256)":"infinite","toStringSigned(int256)":"infinite","tryParseAddress(string memory)":"infinite","tryParseAddress(string memory,uint256,uint256)":"infinite","tryParseHexUint(string memory)":"infinite","tryParseHexUint(string memory,uint256,uint256)":"infinite","tryParseInt(string memory)":"infinite","tryParseInt(string memory,uint256,uint256)":"infinite","tryParseUint(string memory)":"infinite","tryParseUint(string memory,uint256,uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StringsInvalidAddressFormat\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StringsInvalidChar\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}],\"StringsInvalidAddressFormat()\":[{\"details\":\"The string being parsed is not a properly formatted address.\"}],\"StringsInvalidChar()\":[{\"details\":\"The string being parsed contains characters that are not in scope of the given base.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Helper library for emitting standardized panic codes.\\n *\\n * ```solidity\\n * contract Example {\\n *      using Panic for uint256;\\n *\\n *      // Use any of the declared internal constants\\n *      function foo() { Panic.GENERIC.panic(); }\\n *\\n *      // Alternatively\\n *      function foo() { Panic.panic(Panic.GENERIC); }\\n * }\\n * ```\\n *\\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\\n *\\n * _Available since v5.1._\\n */\\n// slither-disable-next-line unused-state\\nlibrary Panic {\\n    /// @dev generic / unspecified error\\n    uint256 internal constant GENERIC = 0x00;\\n    /// @dev used by the assert() builtin\\n    uint256 internal constant ASSERT = 0x01;\\n    /// @dev arithmetic underflow or overflow\\n    uint256 internal constant UNDER_OVERFLOW = 0x11;\\n    /// @dev division or modulo by zero\\n    uint256 internal constant DIVISION_BY_ZERO = 0x12;\\n    /// @dev enum conversion error\\n    uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\\n    /// @dev invalid encoding in storage\\n    uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\\n    /// @dev empty array pop\\n    uint256 internal constant EMPTY_ARRAY_POP = 0x31;\\n    /// @dev array out of bounds access\\n    uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\\n    /// @dev resource error (too large allocation or too large array)\\n    uint256 internal constant RESOURCE_ERROR = 0x41;\\n    /// @dev calling invalid internal function\\n    uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\\n\\n    /// @dev Reverts with a panic code. Recommended to use with\\n    /// the internal constants with predefined codes.\\n    function panic(uint256 code) internal pure {\\n        assembly (\\\"memory-safe\\\") {\\n            mstore(0x00, 0x4e487b71)\\n            mstore(0x20, code)\\n            revert(0x1c, 0x24)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Math} from \\\"./math/Math.sol\\\";\\nimport {SafeCast} from \\\"./math/SafeCast.sol\\\";\\nimport {SignedMath} from \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    using SafeCast for *;\\n\\n    bytes16 private constant HEX_DIGITS = \\\"0123456789abcdef\\\";\\n    uint8 private constant ADDRESS_LENGTH = 20;\\n    uint256 private constant SPECIAL_CHARS_LOOKUP =\\n        (1 << 0x08) | // backspace\\n            (1 << 0x09) | // tab\\n            (1 << 0x0a) | // newline\\n            (1 << 0x0c) | // form feed\\n            (1 << 0x0d) | // carriage return\\n            (1 << 0x22) | // double quote\\n            (1 << 0x5c); // backslash\\n\\n    /**\\n     * @dev The `value` string doesn't fit in the specified `length`.\\n     */\\n    error StringsInsufficientHexLength(uint256 value, uint256 length);\\n\\n    /**\\n     * @dev The string being parsed contains characters that are not in scope of the given base.\\n     */\\n    error StringsInvalidChar();\\n\\n    /**\\n     * @dev The string being parsed is not a properly formatted address.\\n     */\\n    error StringsInvalidAddressFormat();\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            uint256 length = Math.log10(value) + 1;\\n            string memory buffer = new string(length);\\n            uint256 ptr;\\n            assembly (\\\"memory-safe\\\") {\\n                ptr := add(buffer, add(32, length))\\n            }\\n            while (true) {\\n                ptr--;\\n                assembly (\\\"memory-safe\\\") {\\n                    mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\\n                }\\n                value /= 10;\\n                if (value == 0) break;\\n            }\\n            return buffer;\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n     */\\n    function toStringSigned(int256 value) internal pure returns (string memory) {\\n        return string.concat(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value)));\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            return toHexString(value, Math.log256(value) + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        uint256 localValue = value;\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = HEX_DIGITS[localValue & 0xf];\\n            localValue >>= 4;\\n        }\\n        if (localValue != 0) {\\n            revert StringsInsufficientHexLength(value, length);\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\\n     * representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\\n     * representation, according to EIP-55.\\n     */\\n    function toChecksumHexString(address addr) internal pure returns (string memory) {\\n        bytes memory buffer = bytes(toHexString(addr));\\n\\n        // hash the hex part of buffer (skip length + 2 bytes, length 40)\\n        uint256 hashValue;\\n        assembly (\\\"memory-safe\\\") {\\n            hashValue := shr(96, keccak256(add(buffer, 0x22), 40))\\n        }\\n\\n        for (uint256 i = 41; i > 1; --i) {\\n            // possible values for buffer[i] are 48 (0) to 57 (9) and 97 (a) to 102 (f)\\n            if (hashValue & 0xf > 7 && uint8(buffer[i]) > 96) {\\n                // case shift by xoring with 0x20\\n                buffer[i] ^= 0x20;\\n            }\\n            hashValue >>= 4;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Returns true if the two strings are equal.\\n     */\\n    function equal(string memory a, string memory b) internal pure returns (bool) {\\n        return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\\n    }\\n\\n    /**\\n     * @dev Parse a decimal string and returns the value as a `uint256`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `[0-9]*`\\n     * - The result must fit into an `uint256` type\\n     */\\n    function parseUint(string memory input) internal pure returns (uint256) {\\n        return parseUint(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `[0-9]*`\\n     * - The result must fit into an `uint256` type\\n     */\\n    function parseUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\\n        (bool success, uint256 value) = tryParseUint(input, begin, end);\\n        if (!success) revert StringsInvalidChar();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseUint(string memory input) internal pure returns (bool success, uint256 value) {\\n        return _tryParseUintUncheckedBounds(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid\\n     * character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseUint(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, uint256 value) {\\n        if (end > bytes(input).length || begin > end) return (false, 0);\\n        return _tryParseUintUncheckedBounds(input, begin, end);\\n    }\\n\\n    /**\\n     * @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\\n     */\\n    function _tryParseUintUncheckedBounds(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) private pure returns (bool success, uint256 value) {\\n        bytes memory buffer = bytes(input);\\n\\n        uint256 result = 0;\\n        for (uint256 i = begin; i < end; ++i) {\\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\\n            if (chr > 9) return (false, 0);\\n            result *= 10;\\n            result += chr;\\n        }\\n        return (true, result);\\n    }\\n\\n    /**\\n     * @dev Parse a decimal string and returns the value as a `int256`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `[-+]?[0-9]*`\\n     * - The result must fit in an `int256` type.\\n     */\\n    function parseInt(string memory input) internal pure returns (int256) {\\n        return parseInt(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `[-+]?[0-9]*`\\n     * - The result must fit in an `int256` type.\\n     */\\n    function parseInt(string memory input, uint256 begin, uint256 end) internal pure returns (int256) {\\n        (bool success, int256 value) = tryParseInt(input, begin, end);\\n        if (!success) revert StringsInvalidChar();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if\\n     * the result does not fit in a `int256`.\\n     *\\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\\n     */\\n    function tryParseInt(string memory input) internal pure returns (bool success, int256 value) {\\n        return _tryParseIntUncheckedBounds(input, 0, bytes(input).length);\\n    }\\n\\n    uint256 private constant ABS_MIN_INT256 = 2 ** 255;\\n\\n    /**\\n     * @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid\\n     * character or if the result does not fit in a `int256`.\\n     *\\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\\n     */\\n    function tryParseInt(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, int256 value) {\\n        if (end > bytes(input).length || begin > end) return (false, 0);\\n        return _tryParseIntUncheckedBounds(input, begin, end);\\n    }\\n\\n    /**\\n     * @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that\\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\\n     */\\n    function _tryParseIntUncheckedBounds(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) private pure returns (bool success, int256 value) {\\n        bytes memory buffer = bytes(input);\\n\\n        // Check presence of a negative sign.\\n        bytes1 sign = begin == end ? bytes1(0) : bytes1(_unsafeReadBytesOffset(buffer, begin)); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\\n        bool positiveSign = sign == bytes1(\\\"+\\\");\\n        bool negativeSign = sign == bytes1(\\\"-\\\");\\n        uint256 offset = (positiveSign || negativeSign).toUint();\\n\\n        (bool absSuccess, uint256 absValue) = tryParseUint(input, begin + offset, end);\\n\\n        if (absSuccess && absValue < ABS_MIN_INT256) {\\n            return (true, negativeSign ? -int256(absValue) : int256(absValue));\\n        } else if (absSuccess && negativeSign && absValue == ABS_MIN_INT256) {\\n            return (true, type(int256).min);\\n        } else return (false, 0);\\n    }\\n\\n    /**\\n     * @dev Parse a hexadecimal string (with or without \\\"0x\\\" prefix), and returns the value as a `uint256`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]*`\\n     * - The result must fit in an `uint256` type.\\n     */\\n    function parseHexUint(string memory input) internal pure returns (uint256) {\\n        return parseHexUint(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]*`\\n     * - The result must fit in an `uint256` type.\\n     */\\n    function parseHexUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\\n        (bool success, uint256 value) = tryParseHexUint(input, begin, end);\\n        if (!success) revert StringsInvalidChar();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseHexUint(string memory input) internal pure returns (bool success, uint256 value) {\\n        return _tryParseHexUintUncheckedBounds(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an\\n     * invalid character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseHexUint(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, uint256 value) {\\n        if (end > bytes(input).length || begin > end) return (false, 0);\\n        return _tryParseHexUintUncheckedBounds(input, begin, end);\\n    }\\n\\n    /**\\n     * @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\\n     */\\n    function _tryParseHexUintUncheckedBounds(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) private pure returns (bool success, uint256 value) {\\n        bytes memory buffer = bytes(input);\\n\\n        // skip 0x prefix if present\\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(buffer, begin)) == bytes2(\\\"0x\\\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\\n        uint256 offset = hasPrefix.toUint() * 2;\\n\\n        uint256 result = 0;\\n        for (uint256 i = begin + offset; i < end; ++i) {\\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\\n            if (chr > 15) return (false, 0);\\n            result *= 16;\\n            unchecked {\\n                // Multiplying by 16 is equivalent to a shift of 4 bits (with additional overflow check).\\n                // This guarantees that adding a value < 16 will not cause an overflow, hence the unchecked.\\n                result += chr;\\n            }\\n        }\\n        return (true, result);\\n    }\\n\\n    /**\\n     * @dev Parse a hexadecimal string (with or without \\\"0x\\\" prefix), and returns the value as an `address`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]{40}`\\n     */\\n    function parseAddress(string memory input) internal pure returns (address) {\\n        return parseAddress(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}`\\n     */\\n    function parseAddress(string memory input, uint256 begin, uint256 end) internal pure returns (address) {\\n        (bool success, address value) = tryParseAddress(input, begin, end);\\n        if (!success) revert StringsInvalidAddressFormat();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly\\n     * formatted address. See {parseAddress-string} requirements.\\n     */\\n    function tryParseAddress(string memory input) internal pure returns (bool success, address value) {\\n        return tryParseAddress(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly\\n     * formatted address. See {parseAddress-string-uint256-uint256} requirements.\\n     */\\n    function tryParseAddress(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, address value) {\\n        if (end > bytes(input).length || begin > end) return (false, address(0));\\n\\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(bytes(input), begin)) == bytes2(\\\"0x\\\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\\n        uint256 expectedLength = 40 + hasPrefix.toUint() * 2;\\n\\n        // check that input is the correct length\\n        if (end - begin == expectedLength) {\\n            // length guarantees that this does not overflow, and value is at most type(uint160).max\\n            (bool s, uint256 v) = _tryParseHexUintUncheckedBounds(input, begin, end);\\n            return (s, address(uint160(v)));\\n        } else {\\n            return (false, address(0));\\n        }\\n    }\\n\\n    function _tryParseChr(bytes1 chr) private pure returns (uint8) {\\n        uint8 value = uint8(chr);\\n\\n        // Try to parse `chr`:\\n        // - Case 1: [0-9]\\n        // - Case 2: [a-f]\\n        // - Case 3: [A-F]\\n        // - otherwise not supported\\n        unchecked {\\n            if (value > 47 && value < 58) value -= 48;\\n            else if (value > 96 && value < 103) value -= 87;\\n            else if (value > 64 && value < 71) value -= 55;\\n            else return type(uint8).max;\\n        }\\n\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata.\\n     *\\n     * WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped.\\n     *\\n     * NOTE: This function escapes all unicode characters, and not just the ones in ranges defined in section 2.5 of\\n     * RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). ECMAScript's `JSON.parse` does recover escaped unicode\\n     * characters that are not in this range, but other tooling may provide different results.\\n     */\\n    function escapeJSON(string memory input) internal pure returns (string memory) {\\n        bytes memory buffer = bytes(input);\\n        bytes memory output = new bytes(2 * buffer.length); // worst case scenario\\n        uint256 outputLength = 0;\\n\\n        for (uint256 i; i < buffer.length; ++i) {\\n            bytes1 char = bytes1(_unsafeReadBytesOffset(buffer, i));\\n            if (((SPECIAL_CHARS_LOOKUP & (1 << uint8(char))) != 0)) {\\n                output[outputLength++] = \\\"\\\\\\\\\\\";\\n                if (char == 0x08) output[outputLength++] = \\\"b\\\";\\n                else if (char == 0x09) output[outputLength++] = \\\"t\\\";\\n                else if (char == 0x0a) output[outputLength++] = \\\"n\\\";\\n                else if (char == 0x0c) output[outputLength++] = \\\"f\\\";\\n                else if (char == 0x0d) output[outputLength++] = \\\"r\\\";\\n                else if (char == 0x5c) output[outputLength++] = \\\"\\\\\\\\\\\";\\n                else if (char == 0x22) {\\n                    // solhint-disable-next-line quotes\\n                    output[outputLength++] = '\\\"';\\n                }\\n            } else {\\n                output[outputLength++] = char;\\n            }\\n        }\\n        // write the actual length and deallocate unused memory\\n        assembly (\\\"memory-safe\\\") {\\n            mstore(output, outputLength)\\n            mstore(0x40, add(output, shl(5, shr(5, add(outputLength, 63)))))\\n        }\\n\\n        return string(output);\\n    }\\n\\n    /**\\n     * @dev Reads a bytes32 from a bytes array without bounds checking.\\n     *\\n     * NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\\n     * assembly block as such would prevent some optimizations.\\n     */\\n    function _unsafeReadBytesOffset(bytes memory buffer, uint256 offset) private pure returns (bytes32 value) {\\n        // This is not memory safe in the general case, but all calls to this private function are within bounds.\\n        assembly (\\\"memory-safe\\\") {\\n            value := mload(add(buffer, add(0x20, offset)))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x81c274a60a7ae232ae3dc9ff3a4011b4849a853c13b0832cd3351bb1bb2f0dae\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Panic} from \\\"../Panic.sol\\\";\\nimport {SafeCast} from \\\"./SafeCast.sol\\\";\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n    enum Rounding {\\n        Floor, // Toward negative infinity\\n        Ceil, // Toward positive infinity\\n        Trunc, // Toward zero\\n        Expand // Away from zero\\n    }\\n\\n    /**\\n     * @dev Return the 512-bit addition of two uint256.\\n     *\\n     * The result is stored in two 256 variables such that sum = high * 2\\u00b2\\u2075\\u2076 + low.\\n     */\\n    function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\\n        assembly (\\\"memory-safe\\\") {\\n            low := add(a, b)\\n            high := lt(low, a)\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the 512-bit multiplication of two uint256.\\n     *\\n     * The result is stored in two 256 variables such that product = high * 2\\u00b2\\u2075\\u2076 + low.\\n     */\\n    function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\\n        // 512-bit multiply [high low] = x * y. Compute the product mod 2\\u00b2\\u2075\\u2076 and mod 2\\u00b2\\u2075\\u2076 - 1, then use\\n        // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n        // variables such that product = high * 2\\u00b2\\u2075\\u2076 + low.\\n        assembly (\\\"memory-safe\\\") {\\n            let mm := mulmod(a, b, not(0))\\n            low := mul(a, b)\\n            high := sub(sub(mm, low), lt(mm, low))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a + b;\\n            success = c >= a;\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a - b;\\n            success = c <= a;\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a * b;\\n            assembly (\\\"memory-safe\\\") {\\n                // Only true when the multiplication doesn't overflow\\n                // (c / a == b) || (a == 0)\\n                success := or(eq(div(c, a), b), iszero(a))\\n            }\\n            // equivalent to: success ? c : 0\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\\n     */\\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            success = b > 0;\\n            assembly (\\\"memory-safe\\\") {\\n                // The `DIV` opcode returns zero when the denominator is 0.\\n                result := div(a, b)\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\\n     */\\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            success = b > 0;\\n            assembly (\\\"memory-safe\\\") {\\n                // The `MOD` opcode returns zero when the denominator is 0.\\n                result := mod(a, b)\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating addition, bounds to `2\\u00b2\\u2075\\u2076 - 1` instead of overflowing.\\n     */\\n    function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (bool success, uint256 result) = tryAdd(a, b);\\n        return ternary(success, result, type(uint256).max);\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing.\\n     */\\n    function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (, uint256 result) = trySub(a, b);\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating multiplication, bounds to `2\\u00b2\\u2075\\u2076 - 1` instead of overflowing.\\n     */\\n    function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (bool success, uint256 result) = tryMul(a, b);\\n        return ternary(success, result, type(uint256).max);\\n    }\\n\\n    /**\\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\\n     *\\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\\n     * one branch when needed, making this function more expensive.\\n     */\\n    function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\\n        unchecked {\\n            // branchless ternary works because:\\n            // b ^ (a ^ b) == a\\n            // b ^ 0 == b\\n            return b ^ ((a ^ b) * SafeCast.toUint(condition));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the largest of two numbers.\\n     */\\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return ternary(a > b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two numbers.\\n     */\\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return ternary(a < b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the average of two numbers. The result is rounded towards\\n     * zero.\\n     */\\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // (a + b) / 2 can overflow.\\n        return (a & b) + (a ^ b) / 2;\\n    }\\n\\n    /**\\n     * @dev Returns the ceiling of the division of two numbers.\\n     *\\n     * This differs from standard division with `/` in that it rounds towards infinity instead\\n     * of rounding towards zero.\\n     */\\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n        if (b == 0) {\\n            // Guarantee the same behavior as in a regular Solidity division.\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n\\n        // The following calculation ensures accurate ceiling division without overflow.\\n        // Since a is non-zero, (a - 1) / b will not overflow.\\n        // The largest possible result occurs when (a - 1) / b is type(uint256).max,\\n        // but the largest value we can obtain is type(uint256).max - 1, which happens\\n        // when a = type(uint256).max and b = 1.\\n        unchecked {\\n            return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\\n     * denominator == 0.\\n     *\\n     * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\\n     * Uniswap Labs also under MIT license.\\n     */\\n    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n        unchecked {\\n            (uint256 high, uint256 low) = mul512(x, y);\\n\\n            // Handle non-overflow cases, 256 by 256 division.\\n            if (high == 0) {\\n                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n                // The surrounding unchecked block does not change this fact.\\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n                return low / denominator;\\n            }\\n\\n            // Make sure the result is less than 2\\u00b2\\u2075\\u2076. Also prevents denominator == 0.\\n            if (denominator <= high) {\\n                Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\\n            }\\n\\n            ///////////////////////////////////////////////\\n            // 512 by 256 division.\\n            ///////////////////////////////////////////////\\n\\n            // Make division exact by subtracting the remainder from [high low].\\n            uint256 remainder;\\n            assembly (\\\"memory-safe\\\") {\\n                // Compute remainder using mulmod.\\n                remainder := mulmod(x, y, denominator)\\n\\n                // Subtract 256 bit number from 512 bit number.\\n                high := sub(high, gt(remainder, low))\\n                low := sub(low, remainder)\\n            }\\n\\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\\n            // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\\n\\n            uint256 twos = denominator & (0 - denominator);\\n            assembly (\\\"memory-safe\\\") {\\n                // Divide denominator by twos.\\n                denominator := div(denominator, twos)\\n\\n                // Divide [high low] by twos.\\n                low := div(low, twos)\\n\\n                // Flip twos such that it is 2\\u00b2\\u2075\\u2076 / twos. If twos is zero, then it becomes one.\\n                twos := add(div(sub(0, twos), twos), 1)\\n            }\\n\\n            // Shift in bits from high into low.\\n            low |= high * twos;\\n\\n            // Invert denominator mod 2\\u00b2\\u2075\\u2076. Now that denominator is an odd number, it has an inverse modulo 2\\u00b2\\u2075\\u2076 such\\n            // that denominator * inv \\u2261 1 mod 2\\u00b2\\u2075\\u2076. Compute the inverse by starting with a seed that is correct for\\n            // four bits. That is, denominator * inv \\u2261 1 mod 2\\u2074.\\n            uint256 inverse = (3 * denominator) ^ 2;\\n\\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\\n            // works in modular arithmetic, doubling the correct bits in each step.\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u2078\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b9\\u2076\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b3\\u00b2\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u2076\\u2074\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b9\\u00b2\\u2078\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b2\\u2075\\u2076\\n\\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n            // This will give us the correct result modulo 2\\u00b2\\u2075\\u2076. Since the preconditions guarantee that the outcome is\\n            // less than 2\\u00b2\\u2075\\u2076, this is the final result. We don't need to compute the high bits of the result and high\\n            // is no longer required.\\n            result = low * inverse;\\n            return result;\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates x * y / denominator with full precision, following the selected rounding direction.\\n     */\\n    function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n        return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\\n    }\\n\\n    /**\\n     * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256.\\n     */\\n    function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) {\\n        unchecked {\\n            (uint256 high, uint256 low) = mul512(x, y);\\n            if (high >= 1 << n) {\\n                Panic.panic(Panic.UNDER_OVERFLOW);\\n            }\\n            return (high << (256 - n)) | (low >> n);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates x * y >> n with full precision, following the selected rounding direction.\\n     */\\n    function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) {\\n        return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0);\\n    }\\n\\n    /**\\n     * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\\n     *\\n     * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\\n     * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\\n     *\\n     * If the input value is not inversible, 0 is returned.\\n     *\\n     * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\\n     * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\\n     */\\n    function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\\n        unchecked {\\n            if (n == 0) return 0;\\n\\n            // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\\n            // Used to compute integers x and y such that: ax + ny = gcd(a, n).\\n            // When the gcd is 1, then the inverse of a modulo n exists and it's x.\\n            // ax + ny = 1\\n            // ax = 1 + (-y)n\\n            // ax \\u2261 1 (mod n) # x is the inverse of a modulo n\\n\\n            // If the remainder is 0 the gcd is n right away.\\n            uint256 remainder = a % n;\\n            uint256 gcd = n;\\n\\n            // Therefore the initial coefficients are:\\n            // ax + ny = gcd(a, n) = n\\n            // 0a + 1n = n\\n            int256 x = 0;\\n            int256 y = 1;\\n\\n            while (remainder != 0) {\\n                uint256 quotient = gcd / remainder;\\n\\n                (gcd, remainder) = (\\n                    // The old remainder is the next gcd to try.\\n                    remainder,\\n                    // Compute the next remainder.\\n                    // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\\n                    // where gcd is at most n (capped to type(uint256).max)\\n                    gcd - remainder * quotient\\n                );\\n\\n                (x, y) = (\\n                    // Increment the coefficient of a.\\n                    y,\\n                    // Decrement the coefficient of n.\\n                    // Can overflow, but the result is casted to uint256 so that the\\n                    // next value of y is \\\"wrapped around\\\" to a value between 0 and n - 1.\\n                    x - y * int256(quotient)\\n                );\\n            }\\n\\n            if (gcd != 1) return 0; // No inverse exists.\\n            return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\\n        }\\n    }\\n\\n    /**\\n     * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\\n     *\\n     * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\\n     * prime, then `a**(p-1) \\u2261 1 mod p`. As a consequence, we have `a * a**(p-2) \\u2261 1 mod p`, which means that\\n     * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\\n     *\\n     * NOTE: this function does NOT check that `p` is a prime greater than `2`.\\n     */\\n    function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\\n        unchecked {\\n            return Math.modExp(a, p - 2, p);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\\n     *\\n     * Requirements:\\n     * - modulus can't be zero\\n     * - underlying staticcall to precompile must succeed\\n     *\\n     * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\\n     * sure the chain you're using it on supports the precompiled contract for modular exponentiation\\n     * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\\n     * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\\n     * interpreted as 0.\\n     */\\n    function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\\n        (bool success, uint256 result) = tryModExp(b, e, m);\\n        if (!success) {\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\\n     * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\\n     * to operate modulo 0 or if the underlying precompile reverted.\\n     *\\n     * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\\n     * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\\n     * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\\n     * of a revert, but the result may be incorrectly interpreted as 0.\\n     */\\n    function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\\n        if (m == 0) return (false, 0);\\n        assembly (\\\"memory-safe\\\") {\\n            let ptr := mload(0x40)\\n            // | Offset    | Content    | Content (Hex)                                                      |\\n            // |-----------|------------|--------------------------------------------------------------------|\\n            // | 0x00:0x1f | size of b  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x20:0x3f | size of e  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x40:0x5f | size of m  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x60:0x7f | value of b | 0x<.............................................................b> |\\n            // | 0x80:0x9f | value of e | 0x<.............................................................e> |\\n            // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\\n            mstore(ptr, 0x20)\\n            mstore(add(ptr, 0x20), 0x20)\\n            mstore(add(ptr, 0x40), 0x20)\\n            mstore(add(ptr, 0x60), b)\\n            mstore(add(ptr, 0x80), e)\\n            mstore(add(ptr, 0xa0), m)\\n\\n            // Given the result < m, it's guaranteed to fit in 32 bytes,\\n            // so we can use the memory scratch space located at offset 0.\\n            success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\\n            result := mload(0x00)\\n        }\\n    }\\n\\n    /**\\n     * @dev Variant of {modExp} that supports inputs of arbitrary length.\\n     */\\n    function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\\n        (bool success, bytes memory result) = tryModExp(b, e, m);\\n        if (!success) {\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\\n     */\\n    function tryModExp(\\n        bytes memory b,\\n        bytes memory e,\\n        bytes memory m\\n    ) internal view returns (bool success, bytes memory result) {\\n        if (_zeroBytes(m)) return (false, new bytes(0));\\n\\n        uint256 mLen = m.length;\\n\\n        // Encode call args in result and move the free memory pointer\\n        result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\\n\\n        assembly (\\\"memory-safe\\\") {\\n            let dataPtr := add(result, 0x20)\\n            // Write result on top of args to avoid allocating extra memory.\\n            success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\\n            // Overwrite the length.\\n            // result.length > returndatasize() is guaranteed because returndatasize() == m.length\\n            mstore(result, mLen)\\n            // Set the memory pointer after the returned data.\\n            mstore(0x40, add(dataPtr, mLen))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns whether the provided byte array is zero.\\n     */\\n    function _zeroBytes(bytes memory byteArray) private pure returns (bool) {\\n        for (uint256 i = 0; i < byteArray.length; ++i) {\\n            if (byteArray[i] != 0) {\\n                return false;\\n            }\\n        }\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\\n     * towards zero.\\n     *\\n     * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\\n     * using integer operations.\\n     */\\n    function sqrt(uint256 a) internal pure returns (uint256) {\\n        unchecked {\\n            // Take care of easy edge cases when a == 0 or a == 1\\n            if (a <= 1) {\\n                return a;\\n            }\\n\\n            // In this function, we use Newton's method to get a root of `f(x) := x\\u00b2 - a`. It involves building a\\n            // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\\n            // the current value as `\\u03b5_n = | x_n - sqrt(a) |`.\\n            //\\n            // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\\n            // of the target. (i.e. `2**(e-1) \\u2264 sqrt(a) < 2**e`). We know that `e \\u2264 128` because `(2\\u00b9\\u00b2\\u2078)\\u00b2 = 2\\u00b2\\u2075\\u2076` is\\n            // bigger than any uint256.\\n            //\\n            // By noticing that\\n            // `2**(e-1) \\u2264 sqrt(a) < 2**e \\u2192 (2**(e-1))\\u00b2 \\u2264 a < (2**e)\\u00b2 \\u2192 2**(2*e-2) \\u2264 a < 2**(2*e)`\\n            // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\\n            // to the msb function.\\n            uint256 aa = a;\\n            uint256 xn = 1;\\n\\n            if (aa >= (1 << 128)) {\\n                aa >>= 128;\\n                xn <<= 64;\\n            }\\n            if (aa >= (1 << 64)) {\\n                aa >>= 64;\\n                xn <<= 32;\\n            }\\n            if (aa >= (1 << 32)) {\\n                aa >>= 32;\\n                xn <<= 16;\\n            }\\n            if (aa >= (1 << 16)) {\\n                aa >>= 16;\\n                xn <<= 8;\\n            }\\n            if (aa >= (1 << 8)) {\\n                aa >>= 8;\\n                xn <<= 4;\\n            }\\n            if (aa >= (1 << 4)) {\\n                aa >>= 4;\\n                xn <<= 2;\\n            }\\n            if (aa >= (1 << 2)) {\\n                xn <<= 1;\\n            }\\n\\n            // We now have x_n such that `x_n = 2**(e-1) \\u2264 sqrt(a) < 2**e = 2 * x_n`. This implies \\u03b5_n \\u2264 2**(e-1).\\n            //\\n            // We can refine our estimation by noticing that the middle of that interval minimizes the error.\\n            // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to \\u03b5_n \\u2264 2**(e-2).\\n            // This is going to be our x_0 (and \\u03b5_0)\\n            xn = (3 * xn) >> 1; // \\u03b5_0 := | x_0 - sqrt(a) | \\u2264 2**(e-2)\\n\\n            // From here, Newton's method give us:\\n            // x_{n+1} = (x_n + a / x_n) / 2\\n            //\\n            // One should note that:\\n            // x_{n+1}\\u00b2 - a = ((x_n + a / x_n) / 2)\\u00b2 - a\\n            //              = ((x_n\\u00b2 + a) / (2 * x_n))\\u00b2 - a\\n            //              = (x_n\\u2074 + 2 * a * x_n\\u00b2 + a\\u00b2) / (4 * x_n\\u00b2) - a\\n            //              = (x_n\\u2074 + 2 * a * x_n\\u00b2 + a\\u00b2 - 4 * a * x_n\\u00b2) / (4 * x_n\\u00b2)\\n            //              = (x_n\\u2074 - 2 * a * x_n\\u00b2 + a\\u00b2) / (4 * x_n\\u00b2)\\n            //              = (x_n\\u00b2 - a)\\u00b2 / (2 * x_n)\\u00b2\\n            //              = ((x_n\\u00b2 - a) / (2 * x_n))\\u00b2\\n            //              \\u2265 0\\n            // Which proves that for all n \\u2265 1, sqrt(a) \\u2264 x_n\\n            //\\n            // This gives us the proof of quadratic convergence of the sequence:\\n            // \\u03b5_{n+1} = | x_{n+1} - sqrt(a) |\\n            //         = | (x_n + a / x_n) / 2 - sqrt(a) |\\n            //         = | (x_n\\u00b2 + a - 2*x_n*sqrt(a)) / (2 * x_n) |\\n            //         = | (x_n - sqrt(a))\\u00b2 / (2 * x_n) |\\n            //         = | \\u03b5_n\\u00b2 / (2 * x_n) |\\n            //         = \\u03b5_n\\u00b2 / | (2 * x_n) |\\n            //\\n            // For the first iteration, we have a special case where x_0 is known:\\n            // \\u03b5_1 = \\u03b5_0\\u00b2 / | (2 * x_0) |\\n            //     \\u2264 (2**(e-2))\\u00b2 / (2 * (2**(e-1) + 2**(e-2)))\\n            //     \\u2264 2**(2*e-4) / (3 * 2**(e-1))\\n            //     \\u2264 2**(e-3) / 3\\n            //     \\u2264 2**(e-3-log2(3))\\n            //     \\u2264 2**(e-4.5)\\n            //\\n            // For the following iterations, we use the fact that, 2**(e-1) \\u2264 sqrt(a) \\u2264 x_n:\\n            // \\u03b5_{n+1} = \\u03b5_n\\u00b2 / | (2 * x_n) |\\n            //         \\u2264 (2**(e-k))\\u00b2 / (2 * 2**(e-1))\\n            //         \\u2264 2**(2*e-2*k) / 2**e\\n            //         \\u2264 2**(e-2*k)\\n            xn = (xn + a / xn) >> 1; // \\u03b5_1 := | x_1 - sqrt(a) | \\u2264 2**(e-4.5)  -- special case, see above\\n            xn = (xn + a / xn) >> 1; // \\u03b5_2 := | x_2 - sqrt(a) | \\u2264 2**(e-9)    -- general case with k = 4.5\\n            xn = (xn + a / xn) >> 1; // \\u03b5_3 := | x_3 - sqrt(a) | \\u2264 2**(e-18)   -- general case with k = 9\\n            xn = (xn + a / xn) >> 1; // \\u03b5_4 := | x_4 - sqrt(a) | \\u2264 2**(e-36)   -- general case with k = 18\\n            xn = (xn + a / xn) >> 1; // \\u03b5_5 := | x_5 - sqrt(a) | \\u2264 2**(e-72)   -- general case with k = 36\\n            xn = (xn + a / xn) >> 1; // \\u03b5_6 := | x_6 - sqrt(a) | \\u2264 2**(e-144)  -- general case with k = 72\\n\\n            // Because e \\u2264 128 (as discussed during the first estimation phase), we know have reached a precision\\n            // \\u03b5_6 \\u2264 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\\n            // sqrt(a) or sqrt(a) + 1.\\n            return xn - SafeCast.toUint(xn > a / xn);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates sqrt(a), following the selected rounding direction.\\n     */\\n    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = sqrt(a);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 2 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     */\\n    function log2(uint256 x) internal pure returns (uint256 r) {\\n        // If value has upper 128 bits set, log2 result is at least 128\\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\\n        // If upper 64 bits of 128-bit half set, add 64 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\\n        // If upper 32 bits of 64-bit half set, add 32 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\\n        // If upper 16 bits of 32-bit half set, add 16 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\\n        // If upper 8 bits of 16-bit half set, add 8 to result\\n        r |= SafeCast.toUint((x >> r) > 0xff) << 3;\\n        // If upper 4 bits of 8-bit half set, add 4 to result\\n        r |= SafeCast.toUint((x >> r) > 0xf) << 2;\\n\\n        // Shifts value right by the current result and use it as an index into this lookup table:\\n        //\\n        // | x (4 bits) |  index  | table[index] = MSB position |\\n        // |------------|---------|-----------------------------|\\n        // |    0000    |    0    |        table[0] = 0         |\\n        // |    0001    |    1    |        table[1] = 0         |\\n        // |    0010    |    2    |        table[2] = 1         |\\n        // |    0011    |    3    |        table[3] = 1         |\\n        // |    0100    |    4    |        table[4] = 2         |\\n        // |    0101    |    5    |        table[5] = 2         |\\n        // |    0110    |    6    |        table[6] = 2         |\\n        // |    0111    |    7    |        table[7] = 2         |\\n        // |    1000    |    8    |        table[8] = 3         |\\n        // |    1001    |    9    |        table[9] = 3         |\\n        // |    1010    |   10    |        table[10] = 3        |\\n        // |    1011    |   11    |        table[11] = 3        |\\n        // |    1100    |   12    |        table[12] = 3        |\\n        // |    1101    |   13    |        table[13] = 3        |\\n        // |    1110    |   14    |        table[14] = 3        |\\n        // |    1111    |   15    |        table[15] = 3        |\\n        //\\n        // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes.\\n        assembly (\\\"memory-safe\\\") {\\n            r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000))\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log2(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 10 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     */\\n    function log10(uint256 value) internal pure returns (uint256) {\\n        uint256 result = 0;\\n        unchecked {\\n            if (value >= 10 ** 64) {\\n                value /= 10 ** 64;\\n                result += 64;\\n            }\\n            if (value >= 10 ** 32) {\\n                value /= 10 ** 32;\\n                result += 32;\\n            }\\n            if (value >= 10 ** 16) {\\n                value /= 10 ** 16;\\n                result += 16;\\n            }\\n            if (value >= 10 ** 8) {\\n                value /= 10 ** 8;\\n                result += 8;\\n            }\\n            if (value >= 10 ** 4) {\\n                value /= 10 ** 4;\\n                result += 4;\\n            }\\n            if (value >= 10 ** 2) {\\n                value /= 10 ** 2;\\n                result += 2;\\n            }\\n            if (value >= 10 ** 1) {\\n                result += 1;\\n            }\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log10(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 256 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     *\\n     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n     */\\n    function log256(uint256 x) internal pure returns (uint256 r) {\\n        // If value has upper 128 bits set, log2 result is at least 128\\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\\n        // If upper 64 bits of 128-bit half set, add 64 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\\n        // If upper 32 bits of 64-bit half set, add 32 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\\n        // If upper 16 bits of 32-bit half set, add 16 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\\n        // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8\\n        return (r >> 3) | SafeCast.toUint((x >> r) > 0xff);\\n    }\\n\\n    /**\\n     * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log256(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\\n     */\\n    function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\\n        return uint8(rounding) % 2 == 1;\\n    }\\n}\\n\",\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n */\\nlibrary SafeCast {\\n    /**\\n     * @dev Value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\\n\\n    /**\\n     * @dev An int value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedIntToUint(int256 value);\\n\\n    /**\\n     * @dev Value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\\n\\n    /**\\n     * @dev An uint value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedUintToInt(uint256 value);\\n\\n    /**\\n     * @dev Returns the downcasted uint248 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint248).\\n     *\\n     * Counterpart to Solidity's `uint248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toUint248(uint256 value) internal pure returns (uint248) {\\n        if (value > type(uint248).max) {\\n            revert SafeCastOverflowedUintDowncast(248, value);\\n        }\\n        return uint248(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint240 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint240).\\n     *\\n     * Counterpart to Solidity's `uint240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toUint240(uint256 value) internal pure returns (uint240) {\\n        if (value > type(uint240).max) {\\n            revert SafeCastOverflowedUintDowncast(240, value);\\n        }\\n        return uint240(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint232 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint232).\\n     *\\n     * Counterpart to Solidity's `uint232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toUint232(uint256 value) internal pure returns (uint232) {\\n        if (value > type(uint232).max) {\\n            revert SafeCastOverflowedUintDowncast(232, value);\\n        }\\n        return uint232(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint224 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint224).\\n     *\\n     * Counterpart to Solidity's `uint224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toUint224(uint256 value) internal pure returns (uint224) {\\n        if (value > type(uint224).max) {\\n            revert SafeCastOverflowedUintDowncast(224, value);\\n        }\\n        return uint224(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint216 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint216).\\n     *\\n     * Counterpart to Solidity's `uint216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toUint216(uint256 value) internal pure returns (uint216) {\\n        if (value > type(uint216).max) {\\n            revert SafeCastOverflowedUintDowncast(216, value);\\n        }\\n        return uint216(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint208 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint208).\\n     *\\n     * Counterpart to Solidity's `uint208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toUint208(uint256 value) internal pure returns (uint208) {\\n        if (value > type(uint208).max) {\\n            revert SafeCastOverflowedUintDowncast(208, value);\\n        }\\n        return uint208(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint200 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint200).\\n     *\\n     * Counterpart to Solidity's `uint200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toUint200(uint256 value) internal pure returns (uint200) {\\n        if (value > type(uint200).max) {\\n            revert SafeCastOverflowedUintDowncast(200, value);\\n        }\\n        return uint200(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint192 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint192).\\n     *\\n     * Counterpart to Solidity's `uint192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toUint192(uint256 value) internal pure returns (uint192) {\\n        if (value > type(uint192).max) {\\n            revert SafeCastOverflowedUintDowncast(192, value);\\n        }\\n        return uint192(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint184 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint184).\\n     *\\n     * Counterpart to Solidity's `uint184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toUint184(uint256 value) internal pure returns (uint184) {\\n        if (value > type(uint184).max) {\\n            revert SafeCastOverflowedUintDowncast(184, value);\\n        }\\n        return uint184(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint176 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint176).\\n     *\\n     * Counterpart to Solidity's `uint176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toUint176(uint256 value) internal pure returns (uint176) {\\n        if (value > type(uint176).max) {\\n            revert SafeCastOverflowedUintDowncast(176, value);\\n        }\\n        return uint176(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint168 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint168).\\n     *\\n     * Counterpart to Solidity's `uint168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toUint168(uint256 value) internal pure returns (uint168) {\\n        if (value > type(uint168).max) {\\n            revert SafeCastOverflowedUintDowncast(168, value);\\n        }\\n        return uint168(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint160 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint160).\\n     *\\n     * Counterpart to Solidity's `uint160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toUint160(uint256 value) internal pure returns (uint160) {\\n        if (value > type(uint160).max) {\\n            revert SafeCastOverflowedUintDowncast(160, value);\\n        }\\n        return uint160(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint152 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint152).\\n     *\\n     * Counterpart to Solidity's `uint152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toUint152(uint256 value) internal pure returns (uint152) {\\n        if (value > type(uint152).max) {\\n            revert SafeCastOverflowedUintDowncast(152, value);\\n        }\\n        return uint152(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint144 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint144).\\n     *\\n     * Counterpart to Solidity's `uint144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toUint144(uint256 value) internal pure returns (uint144) {\\n        if (value > type(uint144).max) {\\n            revert SafeCastOverflowedUintDowncast(144, value);\\n        }\\n        return uint144(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint136 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint136).\\n     *\\n     * Counterpart to Solidity's `uint136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toUint136(uint256 value) internal pure returns (uint136) {\\n        if (value > type(uint136).max) {\\n            revert SafeCastOverflowedUintDowncast(136, value);\\n        }\\n        return uint136(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint128 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint128).\\n     *\\n     * Counterpart to Solidity's `uint128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toUint128(uint256 value) internal pure returns (uint128) {\\n        if (value > type(uint128).max) {\\n            revert SafeCastOverflowedUintDowncast(128, value);\\n        }\\n        return uint128(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint120 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint120).\\n     *\\n     * Counterpart to Solidity's `uint120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toUint120(uint256 value) internal pure returns (uint120) {\\n        if (value > type(uint120).max) {\\n            revert SafeCastOverflowedUintDowncast(120, value);\\n        }\\n        return uint120(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint112 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint112).\\n     *\\n     * Counterpart to Solidity's `uint112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toUint112(uint256 value) internal pure returns (uint112) {\\n        if (value > type(uint112).max) {\\n            revert SafeCastOverflowedUintDowncast(112, value);\\n        }\\n        return uint112(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint104 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint104).\\n     *\\n     * Counterpart to Solidity's `uint104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toUint104(uint256 value) internal pure returns (uint104) {\\n        if (value > type(uint104).max) {\\n            revert SafeCastOverflowedUintDowncast(104, value);\\n        }\\n        return uint104(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint96 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint96).\\n     *\\n     * Counterpart to Solidity's `uint96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toUint96(uint256 value) internal pure returns (uint96) {\\n        if (value > type(uint96).max) {\\n            revert SafeCastOverflowedUintDowncast(96, value);\\n        }\\n        return uint96(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint88 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint88).\\n     *\\n     * Counterpart to Solidity's `uint88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toUint88(uint256 value) internal pure returns (uint88) {\\n        if (value > type(uint88).max) {\\n            revert SafeCastOverflowedUintDowncast(88, value);\\n        }\\n        return uint88(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint80 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint80).\\n     *\\n     * Counterpart to Solidity's `uint80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toUint80(uint256 value) internal pure returns (uint80) {\\n        if (value > type(uint80).max) {\\n            revert SafeCastOverflowedUintDowncast(80, value);\\n        }\\n        return uint80(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint72 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint72).\\n     *\\n     * Counterpart to Solidity's `uint72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toUint72(uint256 value) internal pure returns (uint72) {\\n        if (value > type(uint72).max) {\\n            revert SafeCastOverflowedUintDowncast(72, value);\\n        }\\n        return uint72(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint64 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint64).\\n     *\\n     * Counterpart to Solidity's `uint64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toUint64(uint256 value) internal pure returns (uint64) {\\n        if (value > type(uint64).max) {\\n            revert SafeCastOverflowedUintDowncast(64, value);\\n        }\\n        return uint64(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint56 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint56).\\n     *\\n     * Counterpart to Solidity's `uint56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toUint56(uint256 value) internal pure returns (uint56) {\\n        if (value > type(uint56).max) {\\n            revert SafeCastOverflowedUintDowncast(56, value);\\n        }\\n        return uint56(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint48 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint48).\\n     *\\n     * Counterpart to Solidity's `uint48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toUint48(uint256 value) internal pure returns (uint48) {\\n        if (value > type(uint48).max) {\\n            revert SafeCastOverflowedUintDowncast(48, value);\\n        }\\n        return uint48(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint40 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint40).\\n     *\\n     * Counterpart to Solidity's `uint40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toUint40(uint256 value) internal pure returns (uint40) {\\n        if (value > type(uint40).max) {\\n            revert SafeCastOverflowedUintDowncast(40, value);\\n        }\\n        return uint40(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint32 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint32).\\n     *\\n     * Counterpart to Solidity's `uint32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toUint32(uint256 value) internal pure returns (uint32) {\\n        if (value > type(uint32).max) {\\n            revert SafeCastOverflowedUintDowncast(32, value);\\n        }\\n        return uint32(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint24 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint24).\\n     *\\n     * Counterpart to Solidity's `uint24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toUint24(uint256 value) internal pure returns (uint24) {\\n        if (value > type(uint24).max) {\\n            revert SafeCastOverflowedUintDowncast(24, value);\\n        }\\n        return uint24(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint16 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint16).\\n     *\\n     * Counterpart to Solidity's `uint16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toUint16(uint256 value) internal pure returns (uint16) {\\n        if (value > type(uint16).max) {\\n            revert SafeCastOverflowedUintDowncast(16, value);\\n        }\\n        return uint16(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint8 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint8).\\n     *\\n     * Counterpart to Solidity's `uint8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toUint8(uint256 value) internal pure returns (uint8) {\\n        if (value > type(uint8).max) {\\n            revert SafeCastOverflowedUintDowncast(8, value);\\n        }\\n        return uint8(value);\\n    }\\n\\n    /**\\n     * @dev Converts a signed int256 into an unsigned uint256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be greater than or equal to 0.\\n     */\\n    function toUint256(int256 value) internal pure returns (uint256) {\\n        if (value < 0) {\\n            revert SafeCastOverflowedIntToUint(value);\\n        }\\n        return uint256(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int248 from int256, reverting on\\n     * overflow (when the input is less than smallest int248 or\\n     * greater than largest int248).\\n     *\\n     * Counterpart to Solidity's `int248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n        downcasted = int248(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(248, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int240 from int256, reverting on\\n     * overflow (when the input is less than smallest int240 or\\n     * greater than largest int240).\\n     *\\n     * Counterpart to Solidity's `int240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n        downcasted = int240(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(240, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int232 from int256, reverting on\\n     * overflow (when the input is less than smallest int232 or\\n     * greater than largest int232).\\n     *\\n     * Counterpart to Solidity's `int232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n        downcasted = int232(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(232, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int224 from int256, reverting on\\n     * overflow (when the input is less than smallest int224 or\\n     * greater than largest int224).\\n     *\\n     * Counterpart to Solidity's `int224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n        downcasted = int224(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(224, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int216 from int256, reverting on\\n     * overflow (when the input is less than smallest int216 or\\n     * greater than largest int216).\\n     *\\n     * Counterpart to Solidity's `int216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n        downcasted = int216(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(216, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int208 from int256, reverting on\\n     * overflow (when the input is less than smallest int208 or\\n     * greater than largest int208).\\n     *\\n     * Counterpart to Solidity's `int208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n        downcasted = int208(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(208, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int200 from int256, reverting on\\n     * overflow (when the input is less than smallest int200 or\\n     * greater than largest int200).\\n     *\\n     * Counterpart to Solidity's `int200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n        downcasted = int200(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(200, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int192 from int256, reverting on\\n     * overflow (when the input is less than smallest int192 or\\n     * greater than largest int192).\\n     *\\n     * Counterpart to Solidity's `int192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n        downcasted = int192(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(192, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int184 from int256, reverting on\\n     * overflow (when the input is less than smallest int184 or\\n     * greater than largest int184).\\n     *\\n     * Counterpart to Solidity's `int184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n        downcasted = int184(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(184, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int176 from int256, reverting on\\n     * overflow (when the input is less than smallest int176 or\\n     * greater than largest int176).\\n     *\\n     * Counterpart to Solidity's `int176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n        downcasted = int176(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(176, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int168 from int256, reverting on\\n     * overflow (when the input is less than smallest int168 or\\n     * greater than largest int168).\\n     *\\n     * Counterpart to Solidity's `int168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n        downcasted = int168(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(168, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int160 from int256, reverting on\\n     * overflow (when the input is less than smallest int160 or\\n     * greater than largest int160).\\n     *\\n     * Counterpart to Solidity's `int160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n        downcasted = int160(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(160, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int152 from int256, reverting on\\n     * overflow (when the input is less than smallest int152 or\\n     * greater than largest int152).\\n     *\\n     * Counterpart to Solidity's `int152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n        downcasted = int152(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(152, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int144 from int256, reverting on\\n     * overflow (when the input is less than smallest int144 or\\n     * greater than largest int144).\\n     *\\n     * Counterpart to Solidity's `int144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n        downcasted = int144(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(144, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int136 from int256, reverting on\\n     * overflow (when the input is less than smallest int136 or\\n     * greater than largest int136).\\n     *\\n     * Counterpart to Solidity's `int136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n        downcasted = int136(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(136, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int128 from int256, reverting on\\n     * overflow (when the input is less than smallest int128 or\\n     * greater than largest int128).\\n     *\\n     * Counterpart to Solidity's `int128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n        downcasted = int128(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(128, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int120 from int256, reverting on\\n     * overflow (when the input is less than smallest int120 or\\n     * greater than largest int120).\\n     *\\n     * Counterpart to Solidity's `int120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n        downcasted = int120(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(120, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int112 from int256, reverting on\\n     * overflow (when the input is less than smallest int112 or\\n     * greater than largest int112).\\n     *\\n     * Counterpart to Solidity's `int112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n        downcasted = int112(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(112, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int104 from int256, reverting on\\n     * overflow (when the input is less than smallest int104 or\\n     * greater than largest int104).\\n     *\\n     * Counterpart to Solidity's `int104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n        downcasted = int104(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(104, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int96 from int256, reverting on\\n     * overflow (when the input is less than smallest int96 or\\n     * greater than largest int96).\\n     *\\n     * Counterpart to Solidity's `int96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n        downcasted = int96(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(96, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int88 from int256, reverting on\\n     * overflow (when the input is less than smallest int88 or\\n     * greater than largest int88).\\n     *\\n     * Counterpart to Solidity's `int88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n        downcasted = int88(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(88, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int80 from int256, reverting on\\n     * overflow (when the input is less than smallest int80 or\\n     * greater than largest int80).\\n     *\\n     * Counterpart to Solidity's `int80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n        downcasted = int80(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(80, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int72 from int256, reverting on\\n     * overflow (when the input is less than smallest int72 or\\n     * greater than largest int72).\\n     *\\n     * Counterpart to Solidity's `int72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n        downcasted = int72(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(72, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int64 from int256, reverting on\\n     * overflow (when the input is less than smallest int64 or\\n     * greater than largest int64).\\n     *\\n     * Counterpart to Solidity's `int64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n        downcasted = int64(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(64, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int56 from int256, reverting on\\n     * overflow (when the input is less than smallest int56 or\\n     * greater than largest int56).\\n     *\\n     * Counterpart to Solidity's `int56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n        downcasted = int56(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(56, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int48 from int256, reverting on\\n     * overflow (when the input is less than smallest int48 or\\n     * greater than largest int48).\\n     *\\n     * Counterpart to Solidity's `int48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n        downcasted = int48(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(48, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int40 from int256, reverting on\\n     * overflow (when the input is less than smallest int40 or\\n     * greater than largest int40).\\n     *\\n     * Counterpart to Solidity's `int40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n        downcasted = int40(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(40, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int32 from int256, reverting on\\n     * overflow (when the input is less than smallest int32 or\\n     * greater than largest int32).\\n     *\\n     * Counterpart to Solidity's `int32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n        downcasted = int32(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(32, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int24 from int256, reverting on\\n     * overflow (when the input is less than smallest int24 or\\n     * greater than largest int24).\\n     *\\n     * Counterpart to Solidity's `int24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n        downcasted = int24(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(24, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int16 from int256, reverting on\\n     * overflow (when the input is less than smallest int16 or\\n     * greater than largest int16).\\n     *\\n     * Counterpart to Solidity's `int16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n        downcasted = int16(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(16, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int8 from int256, reverting on\\n     * overflow (when the input is less than smallest int8 or\\n     * greater than largest int8).\\n     *\\n     * Counterpart to Solidity's `int8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n        downcasted = int8(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(8, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts an unsigned uint256 into a signed int256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be less than or equal to maxInt256.\\n     */\\n    function toInt256(uint256 value) internal pure returns (int256) {\\n        // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n        if (value > uint256(type(int256).max)) {\\n            revert SafeCastOverflowedUintToInt(value);\\n        }\\n        return int256(value);\\n    }\\n\\n    /**\\n     * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\\n     */\\n    function toUint(bool b) internal pure returns (uint256 u) {\\n        assembly (\\\"memory-safe\\\") {\\n            u := iszero(iszero(b))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {SafeCast} from \\\"./SafeCast.sol\\\";\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n    /**\\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\\n     *\\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\\n     * one branch when needed, making this function more expensive.\\n     */\\n    function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {\\n        unchecked {\\n            // branchless ternary works because:\\n            // b ^ (a ^ b) == a\\n            // b ^ 0 == b\\n            return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the largest of two signed numbers.\\n     */\\n    function max(int256 a, int256 b) internal pure returns (int256) {\\n        return ternary(a > b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two signed numbers.\\n     */\\n    function min(int256 a, int256 b) internal pure returns (int256) {\\n        return ternary(a < b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the average of two signed numbers without overflow.\\n     * The result is rounded towards zero.\\n     */\\n    function average(int256 a, int256 b) internal pure returns (int256) {\\n        // Formula from the book \\\"Hacker's Delight\\\"\\n        int256 x = (a & b) + ((a ^ b) >> 1);\\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\\n    }\\n\\n    /**\\n     * @dev Returns the absolute unsigned value of a signed value.\\n     */\\n    function abs(int256 n) internal pure returns (uint256) {\\n        unchecked {\\n            // Formula from the \\\"Bit Twiddling Hacks\\\" by Sean Eron Anderson.\\n            // Since `n` is a signed integer, the generated bytecode will use the SAR opcode to perform the right shift,\\n            // taking advantage of the most significant (or \\\"sign\\\" bit) in two's complement representation.\\n            // This opcode adds new most significant bits set to the value of the previous most significant bit. As a result,\\n            // the mask will either be `bytes32(0)` (if n is positive) or `~bytes32(0)` (if n is negative).\\n            int256 mask = n >> 255;\\n\\n            // A `bytes32(0)` mask leaves the input unchanged, while a `~bytes32(0)` mask complements it.\\n            return uint256((n + mask) ^ mask);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"ECDSA":{"abi":[{"inputs":[],"name":"ECDSAInvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"ECDSAInvalidSignatureLength","type":"error"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"ECDSAInvalidSignatureS","type":"error"}],"devdoc":{"details":"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.","errors":{"ECDSAInvalidSignature()":[{"details":"The signature derives the `address(0)`."}],"ECDSAInvalidSignatureLength(uint256)":[{"details":"The signature has an invalid length."}],"ECDSAInvalidSignatureS(bytes32)":[{"details":"The signature has an S value that is in the upper half order."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122039bc2487fd3cc8ea322ee1adcf4ae1e0015b22c0865365a58624c63c3478eb2764736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY 0xBC 0x24 DUP8 REVERT EXTCODECOPY 0xC8 0xEA ORIGIN 0x2E 0xE1 0xAD 0xCF BLOBBASEFEE 0xE1 0xE0 ADD JUMPDEST 0x22 0xC0 DUP7 MSTORE8 PUSH6 0xA58624C63C34 PUSH25 0xEB2764736F6C634300081C0033000000000000000000000000 ","sourceMap":"344:7470:49:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;344:7470:49;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122039bc2487fd3cc8ea322ee1adcf4ae1e0015b22c0865365a58624c63c3478eb2764736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY 0xBC 0x24 DUP8 REVERT EXTCODECOPY 0xC8 0xEA ORIGIN 0x2E 0xE1 0xAD 0xCF BLOBBASEFEE 0xE1 0xE0 ADD JUMPDEST 0x22 0xC0 DUP7 MSTORE8 PUSH6 0xA58624C63C34 PUSH25 0xEB2764736F6C634300081C0033000000000000000000000000 ","sourceMap":"344:7470:49:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"_throwError(enum ECDSA.RecoverError,bytes32)":"infinite","recover(bytes32,bytes memory)":"infinite","recover(bytes32,bytes32,bytes32)":"infinite","recover(bytes32,uint8,bytes32,bytes32)":"infinite","tryRecover(bytes32,bytes memory)":"infinite","tryRecover(bytes32,bytes32,bytes32)":"infinite","tryRecover(bytes32,uint8,bytes32,bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS\\n    }\\n\\n    /**\\n     * @dev The signature derives the `address(0)`.\\n     */\\n    error ECDSAInvalidSignature();\\n\\n    /**\\n     * @dev The signature has an invalid length.\\n     */\\n    error ECDSAInvalidSignatureLength(uint256 length);\\n\\n    /**\\n     * @dev The signature has an S value that is in the upper half order.\\n     */\\n    error ECDSAInvalidSignatureS(bytes32 s);\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\\n     * return address(0) without also returning an error description. Errors are documented using an enum (error type)\\n     * and a bytes32 providing additional information about the error.\\n     *\\n     * If no error is returned, then the address can be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes memory signature\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            assembly (\\\"memory-safe\\\") {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        unchecked {\\n            bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n            // We do not check for an overflow here since the shift operation results in 0 or 1.\\n            uint8 v = uint8((uint256(vs) >> 255) + 27);\\n            return tryRecover(hash, v, r, s);\\n        }\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     */\\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS, s);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature, bytes32(0));\\n        }\\n\\n        return (signer, RecoverError.NoError, bytes32(0));\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\\n     */\\n    function _throwError(RecoverError error, bytes32 errorArg) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert ECDSAInvalidSignature();\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert ECDSAInvalidSignatureLength(uint256(errorArg));\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert ECDSAInvalidSignatureS(errorArg);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol":{"SignatureChecker":{"abi":[],"devdoc":{"details":"Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support both ECDSA signatures from externally owned accounts (EOAs) as well as ERC-1271 signatures from smart contract wallets like Argent and Safe Wallet (previously Gnosis Safe).","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205171501d7d3886cbf713fcc29e01aa165b4a344033880059626bd4b5f659b4ab64736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD PUSH18 0x501D7D3886CBF713FCC29E01AA165B4A3440 CALLER DUP9 STOP MSIZE PUSH3 0x6BD4B5 0xF6 MSIZE 0xB4 0xAB PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"532:1805:50:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;532:1805:50;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205171501d7d3886cbf713fcc29e01aa165b4a344033880059626bd4b5f659b4ab64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MLOAD PUSH18 0x501D7D3886CBF713FCC29E01AA165B4A3440 CALLER DUP9 STOP MSIZE PUSH3 0x6BD4B5 0xF6 MSIZE 0xB4 0xAB PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"532:1805:50:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"isValidERC1271SignatureNow(address,bytes32,bytes memory)":"infinite","isValidSignatureNow(address,bytes32,bytes memory)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support both ECDSA signatures from externally owned accounts (EOAs) as well as ERC-1271 signatures from smart contract wallets like Argent and Safe Wallet (previously Gnosis Safe).\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\":\"SignatureChecker\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (interfaces/IERC1271.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-1271 standard signature validation method for\\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\\n */\\ninterface IERC1271 {\\n    /**\\n     * @dev Should return whether the signature provided is valid for the provided data\\n     * @param hash      Hash of the data to be signed\\n     * @param signature Signature byte array associated with `hash`\\n     */\\n    function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0x3d4cd07258d675b6dfa3d9dfd623a77b38fb9935f4a5381ff4bc969948720976\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS\\n    }\\n\\n    /**\\n     * @dev The signature derives the `address(0)`.\\n     */\\n    error ECDSAInvalidSignature();\\n\\n    /**\\n     * @dev The signature has an invalid length.\\n     */\\n    error ECDSAInvalidSignatureLength(uint256 length);\\n\\n    /**\\n     * @dev The signature has an S value that is in the upper half order.\\n     */\\n    error ECDSAInvalidSignatureS(bytes32 s);\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\\n     * return address(0) without also returning an error description. Errors are documented using an enum (error type)\\n     * and a bytes32 providing additional information about the error.\\n     *\\n     * If no error is returned, then the address can be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes memory signature\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            assembly (\\\"memory-safe\\\") {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        unchecked {\\n            bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n            // We do not check for an overflow here since the shift operation results in 0 or 1.\\n            uint8 v = uint8((uint256(vs) >> 255) + 27);\\n            return tryRecover(hash, v, r, s);\\n        }\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     */\\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS, s);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature, bytes32(0));\\n        }\\n\\n        return (signer, RecoverError.NoError, bytes32(0));\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\\n     */\\n    function _throwError(RecoverError error, bytes32 errorArg) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert ECDSAInvalidSignature();\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert ECDSAInvalidSignatureLength(uint256(errorArg));\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert ECDSAInvalidSignatureS(errorArg);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/SignatureChecker.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ECDSA} from \\\"./ECDSA.sol\\\";\\nimport {IERC1271} from \\\"../../interfaces/IERC1271.sol\\\";\\n\\n/**\\n * @dev Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support both ECDSA\\n * signatures from externally owned accounts (EOAs) as well as ERC-1271 signatures from smart contract wallets like\\n * Argent and Safe Wallet (previously Gnosis Safe).\\n */\\nlibrary SignatureChecker {\\n    /**\\n     * @dev Checks if a signature is valid for a given signer and data hash. If the signer is a smart contract, the\\n     * signature is validated against that smart contract using ERC-1271, otherwise it's validated using `ECDSA.recover`.\\n     *\\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\\n     */\\n    function isValidSignatureNow(address signer, bytes32 hash, bytes memory signature) internal view returns (bool) {\\n        if (signer.code.length == 0) {\\n            (address recovered, ECDSA.RecoverError err, ) = ECDSA.tryRecover(hash, signature);\\n            return err == ECDSA.RecoverError.NoError && recovered == signer;\\n        } else {\\n            return isValidERC1271SignatureNow(signer, hash, signature);\\n        }\\n    }\\n\\n    /**\\n     * @dev Checks if a signature is valid for a given signer and data hash. The signature is validated\\n     * against the signer smart contract using ERC-1271.\\n     *\\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\\n     */\\n    function isValidERC1271SignatureNow(\\n        address signer,\\n        bytes32 hash,\\n        bytes memory signature\\n    ) internal view returns (bool) {\\n        (bool success, bytes memory result) = signer.staticcall(\\n            abi.encodeCall(IERC1271.isValidSignature, (hash, signature))\\n        );\\n        return (success &&\\n            result.length >= 32 &&\\n            abi.decode(result, (bytes32)) == bytes32(IERC1271.isValidSignature.selector));\\n    }\\n}\\n\",\"keccak256\":\"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"devdoc":{"details":"Standard math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208d87bdf6c18dbe6bc13965b2185deff770f3e952aee3010342cfd014e8bcb07f64736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP14 DUP8 0xBD 0xF6 0xC1 DUP14 0xBE PUSH12 0xC13965B2185DEFF770F3E952 0xAE 0xE3 ADD SUB TIMESTAMP 0xCF 0xD0 EQ 0xE8 0xBC 0xB0 PUSH32 0x64736F6C634300081C0033000000000000000000000000000000000000000000 ","sourceMap":"281:31863:53:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;281:31863:53;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208d87bdf6c18dbe6bc13965b2185deff770f3e952aee3010342cfd014e8bcb07f64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP14 DUP8 0xBD 0xF6 0xC1 DUP14 0xBE PUSH12 0xC13965B2185DEFF770F3E952 0xAE 0xE3 ADD SUB TIMESTAMP 0xCF 0xD0 EQ 0xE8 0xBC 0xB0 PUSH32 0x64736F6C634300081C0033000000000000000000000000000000000000000000 ","sourceMap":"281:31863:53:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"_zeroBytes(bytes memory)":"infinite","add512(uint256,uint256)":"infinite","average(uint256,uint256)":"infinite","ceilDiv(uint256,uint256)":"infinite","invMod(uint256,uint256)":"infinite","invModPrime(uint256,uint256)":"infinite","log10(uint256)":"infinite","log10(uint256,enum Math.Rounding)":"infinite","log2(uint256)":"infinite","log2(uint256,enum Math.Rounding)":"infinite","log256(uint256)":"infinite","log256(uint256,enum Math.Rounding)":"infinite","max(uint256,uint256)":"infinite","min(uint256,uint256)":"infinite","modExp(bytes memory,bytes memory,bytes memory)":"infinite","modExp(uint256,uint256,uint256)":"infinite","mul512(uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256)":"infinite","mulDiv(uint256,uint256,uint256,enum Math.Rounding)":"infinite","mulShr(uint256,uint256,uint8)":"infinite","mulShr(uint256,uint256,uint8,enum Math.Rounding)":"infinite","saturatingAdd(uint256,uint256)":"infinite","saturatingMul(uint256,uint256)":"infinite","saturatingSub(uint256,uint256)":"infinite","sqrt(uint256)":"infinite","sqrt(uint256,enum Math.Rounding)":"infinite","ternary(bool,uint256,uint256)":"infinite","tryAdd(uint256,uint256)":"infinite","tryDiv(uint256,uint256)":"infinite","tryMod(uint256,uint256)":"infinite","tryModExp(bytes memory,bytes memory,bytes memory)":"infinite","tryModExp(uint256,uint256,uint256)":"infinite","tryMul(uint256,uint256)":"infinite","trySub(uint256,uint256)":"infinite","unsignedRoundsUp(enum Math.Rounding)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Helper library for emitting standardized panic codes.\\n *\\n * ```solidity\\n * contract Example {\\n *      using Panic for uint256;\\n *\\n *      // Use any of the declared internal constants\\n *      function foo() { Panic.GENERIC.panic(); }\\n *\\n *      // Alternatively\\n *      function foo() { Panic.panic(Panic.GENERIC); }\\n * }\\n * ```\\n *\\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\\n *\\n * _Available since v5.1._\\n */\\n// slither-disable-next-line unused-state\\nlibrary Panic {\\n    /// @dev generic / unspecified error\\n    uint256 internal constant GENERIC = 0x00;\\n    /// @dev used by the assert() builtin\\n    uint256 internal constant ASSERT = 0x01;\\n    /// @dev arithmetic underflow or overflow\\n    uint256 internal constant UNDER_OVERFLOW = 0x11;\\n    /// @dev division or modulo by zero\\n    uint256 internal constant DIVISION_BY_ZERO = 0x12;\\n    /// @dev enum conversion error\\n    uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\\n    /// @dev invalid encoding in storage\\n    uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\\n    /// @dev empty array pop\\n    uint256 internal constant EMPTY_ARRAY_POP = 0x31;\\n    /// @dev array out of bounds access\\n    uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\\n    /// @dev resource error (too large allocation or too large array)\\n    uint256 internal constant RESOURCE_ERROR = 0x41;\\n    /// @dev calling invalid internal function\\n    uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\\n\\n    /// @dev Reverts with a panic code. Recommended to use with\\n    /// the internal constants with predefined codes.\\n    function panic(uint256 code) internal pure {\\n        assembly (\\\"memory-safe\\\") {\\n            mstore(0x00, 0x4e487b71)\\n            mstore(0x20, code)\\n            revert(0x1c, 0x24)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Panic} from \\\"../Panic.sol\\\";\\nimport {SafeCast} from \\\"./SafeCast.sol\\\";\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n    enum Rounding {\\n        Floor, // Toward negative infinity\\n        Ceil, // Toward positive infinity\\n        Trunc, // Toward zero\\n        Expand // Away from zero\\n    }\\n\\n    /**\\n     * @dev Return the 512-bit addition of two uint256.\\n     *\\n     * The result is stored in two 256 variables such that sum = high * 2\\u00b2\\u2075\\u2076 + low.\\n     */\\n    function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\\n        assembly (\\\"memory-safe\\\") {\\n            low := add(a, b)\\n            high := lt(low, a)\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the 512-bit multiplication of two uint256.\\n     *\\n     * The result is stored in two 256 variables such that product = high * 2\\u00b2\\u2075\\u2076 + low.\\n     */\\n    function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\\n        // 512-bit multiply [high low] = x * y. Compute the product mod 2\\u00b2\\u2075\\u2076 and mod 2\\u00b2\\u2075\\u2076 - 1, then use\\n        // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n        // variables such that product = high * 2\\u00b2\\u2075\\u2076 + low.\\n        assembly (\\\"memory-safe\\\") {\\n            let mm := mulmod(a, b, not(0))\\n            low := mul(a, b)\\n            high := sub(sub(mm, low), lt(mm, low))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a + b;\\n            success = c >= a;\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a - b;\\n            success = c <= a;\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a * b;\\n            assembly (\\\"memory-safe\\\") {\\n                // Only true when the multiplication doesn't overflow\\n                // (c / a == b) || (a == 0)\\n                success := or(eq(div(c, a), b), iszero(a))\\n            }\\n            // equivalent to: success ? c : 0\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\\n     */\\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            success = b > 0;\\n            assembly (\\\"memory-safe\\\") {\\n                // The `DIV` opcode returns zero when the denominator is 0.\\n                result := div(a, b)\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\\n     */\\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            success = b > 0;\\n            assembly (\\\"memory-safe\\\") {\\n                // The `MOD` opcode returns zero when the denominator is 0.\\n                result := mod(a, b)\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating addition, bounds to `2\\u00b2\\u2075\\u2076 - 1` instead of overflowing.\\n     */\\n    function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (bool success, uint256 result) = tryAdd(a, b);\\n        return ternary(success, result, type(uint256).max);\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing.\\n     */\\n    function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (, uint256 result) = trySub(a, b);\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating multiplication, bounds to `2\\u00b2\\u2075\\u2076 - 1` instead of overflowing.\\n     */\\n    function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (bool success, uint256 result) = tryMul(a, b);\\n        return ternary(success, result, type(uint256).max);\\n    }\\n\\n    /**\\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\\n     *\\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\\n     * one branch when needed, making this function more expensive.\\n     */\\n    function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\\n        unchecked {\\n            // branchless ternary works because:\\n            // b ^ (a ^ b) == a\\n            // b ^ 0 == b\\n            return b ^ ((a ^ b) * SafeCast.toUint(condition));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the largest of two numbers.\\n     */\\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return ternary(a > b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two numbers.\\n     */\\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return ternary(a < b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the average of two numbers. The result is rounded towards\\n     * zero.\\n     */\\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // (a + b) / 2 can overflow.\\n        return (a & b) + (a ^ b) / 2;\\n    }\\n\\n    /**\\n     * @dev Returns the ceiling of the division of two numbers.\\n     *\\n     * This differs from standard division with `/` in that it rounds towards infinity instead\\n     * of rounding towards zero.\\n     */\\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n        if (b == 0) {\\n            // Guarantee the same behavior as in a regular Solidity division.\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n\\n        // The following calculation ensures accurate ceiling division without overflow.\\n        // Since a is non-zero, (a - 1) / b will not overflow.\\n        // The largest possible result occurs when (a - 1) / b is type(uint256).max,\\n        // but the largest value we can obtain is type(uint256).max - 1, which happens\\n        // when a = type(uint256).max and b = 1.\\n        unchecked {\\n            return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\\n     * denominator == 0.\\n     *\\n     * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\\n     * Uniswap Labs also under MIT license.\\n     */\\n    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n        unchecked {\\n            (uint256 high, uint256 low) = mul512(x, y);\\n\\n            // Handle non-overflow cases, 256 by 256 division.\\n            if (high == 0) {\\n                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n                // The surrounding unchecked block does not change this fact.\\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n                return low / denominator;\\n            }\\n\\n            // Make sure the result is less than 2\\u00b2\\u2075\\u2076. Also prevents denominator == 0.\\n            if (denominator <= high) {\\n                Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\\n            }\\n\\n            ///////////////////////////////////////////////\\n            // 512 by 256 division.\\n            ///////////////////////////////////////////////\\n\\n            // Make division exact by subtracting the remainder from [high low].\\n            uint256 remainder;\\n            assembly (\\\"memory-safe\\\") {\\n                // Compute remainder using mulmod.\\n                remainder := mulmod(x, y, denominator)\\n\\n                // Subtract 256 bit number from 512 bit number.\\n                high := sub(high, gt(remainder, low))\\n                low := sub(low, remainder)\\n            }\\n\\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\\n            // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\\n\\n            uint256 twos = denominator & (0 - denominator);\\n            assembly (\\\"memory-safe\\\") {\\n                // Divide denominator by twos.\\n                denominator := div(denominator, twos)\\n\\n                // Divide [high low] by twos.\\n                low := div(low, twos)\\n\\n                // Flip twos such that it is 2\\u00b2\\u2075\\u2076 / twos. If twos is zero, then it becomes one.\\n                twos := add(div(sub(0, twos), twos), 1)\\n            }\\n\\n            // Shift in bits from high into low.\\n            low |= high * twos;\\n\\n            // Invert denominator mod 2\\u00b2\\u2075\\u2076. Now that denominator is an odd number, it has an inverse modulo 2\\u00b2\\u2075\\u2076 such\\n            // that denominator * inv \\u2261 1 mod 2\\u00b2\\u2075\\u2076. Compute the inverse by starting with a seed that is correct for\\n            // four bits. That is, denominator * inv \\u2261 1 mod 2\\u2074.\\n            uint256 inverse = (3 * denominator) ^ 2;\\n\\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\\n            // works in modular arithmetic, doubling the correct bits in each step.\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u2078\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b9\\u2076\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b3\\u00b2\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u2076\\u2074\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b9\\u00b2\\u2078\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b2\\u2075\\u2076\\n\\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n            // This will give us the correct result modulo 2\\u00b2\\u2075\\u2076. Since the preconditions guarantee that the outcome is\\n            // less than 2\\u00b2\\u2075\\u2076, this is the final result. We don't need to compute the high bits of the result and high\\n            // is no longer required.\\n            result = low * inverse;\\n            return result;\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates x * y / denominator with full precision, following the selected rounding direction.\\n     */\\n    function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n        return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\\n    }\\n\\n    /**\\n     * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256.\\n     */\\n    function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) {\\n        unchecked {\\n            (uint256 high, uint256 low) = mul512(x, y);\\n            if (high >= 1 << n) {\\n                Panic.panic(Panic.UNDER_OVERFLOW);\\n            }\\n            return (high << (256 - n)) | (low >> n);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates x * y >> n with full precision, following the selected rounding direction.\\n     */\\n    function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) {\\n        return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0);\\n    }\\n\\n    /**\\n     * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\\n     *\\n     * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\\n     * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\\n     *\\n     * If the input value is not inversible, 0 is returned.\\n     *\\n     * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\\n     * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\\n     */\\n    function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\\n        unchecked {\\n            if (n == 0) return 0;\\n\\n            // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\\n            // Used to compute integers x and y such that: ax + ny = gcd(a, n).\\n            // When the gcd is 1, then the inverse of a modulo n exists and it's x.\\n            // ax + ny = 1\\n            // ax = 1 + (-y)n\\n            // ax \\u2261 1 (mod n) # x is the inverse of a modulo n\\n\\n            // If the remainder is 0 the gcd is n right away.\\n            uint256 remainder = a % n;\\n            uint256 gcd = n;\\n\\n            // Therefore the initial coefficients are:\\n            // ax + ny = gcd(a, n) = n\\n            // 0a + 1n = n\\n            int256 x = 0;\\n            int256 y = 1;\\n\\n            while (remainder != 0) {\\n                uint256 quotient = gcd / remainder;\\n\\n                (gcd, remainder) = (\\n                    // The old remainder is the next gcd to try.\\n                    remainder,\\n                    // Compute the next remainder.\\n                    // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\\n                    // where gcd is at most n (capped to type(uint256).max)\\n                    gcd - remainder * quotient\\n                );\\n\\n                (x, y) = (\\n                    // Increment the coefficient of a.\\n                    y,\\n                    // Decrement the coefficient of n.\\n                    // Can overflow, but the result is casted to uint256 so that the\\n                    // next value of y is \\\"wrapped around\\\" to a value between 0 and n - 1.\\n                    x - y * int256(quotient)\\n                );\\n            }\\n\\n            if (gcd != 1) return 0; // No inverse exists.\\n            return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\\n        }\\n    }\\n\\n    /**\\n     * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\\n     *\\n     * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\\n     * prime, then `a**(p-1) \\u2261 1 mod p`. As a consequence, we have `a * a**(p-2) \\u2261 1 mod p`, which means that\\n     * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\\n     *\\n     * NOTE: this function does NOT check that `p` is a prime greater than `2`.\\n     */\\n    function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\\n        unchecked {\\n            return Math.modExp(a, p - 2, p);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\\n     *\\n     * Requirements:\\n     * - modulus can't be zero\\n     * - underlying staticcall to precompile must succeed\\n     *\\n     * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\\n     * sure the chain you're using it on supports the precompiled contract for modular exponentiation\\n     * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\\n     * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\\n     * interpreted as 0.\\n     */\\n    function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\\n        (bool success, uint256 result) = tryModExp(b, e, m);\\n        if (!success) {\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\\n     * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\\n     * to operate modulo 0 or if the underlying precompile reverted.\\n     *\\n     * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\\n     * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\\n     * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\\n     * of a revert, but the result may be incorrectly interpreted as 0.\\n     */\\n    function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\\n        if (m == 0) return (false, 0);\\n        assembly (\\\"memory-safe\\\") {\\n            let ptr := mload(0x40)\\n            // | Offset    | Content    | Content (Hex)                                                      |\\n            // |-----------|------------|--------------------------------------------------------------------|\\n            // | 0x00:0x1f | size of b  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x20:0x3f | size of e  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x40:0x5f | size of m  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x60:0x7f | value of b | 0x<.............................................................b> |\\n            // | 0x80:0x9f | value of e | 0x<.............................................................e> |\\n            // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\\n            mstore(ptr, 0x20)\\n            mstore(add(ptr, 0x20), 0x20)\\n            mstore(add(ptr, 0x40), 0x20)\\n            mstore(add(ptr, 0x60), b)\\n            mstore(add(ptr, 0x80), e)\\n            mstore(add(ptr, 0xa0), m)\\n\\n            // Given the result < m, it's guaranteed to fit in 32 bytes,\\n            // so we can use the memory scratch space located at offset 0.\\n            success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\\n            result := mload(0x00)\\n        }\\n    }\\n\\n    /**\\n     * @dev Variant of {modExp} that supports inputs of arbitrary length.\\n     */\\n    function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\\n        (bool success, bytes memory result) = tryModExp(b, e, m);\\n        if (!success) {\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\\n     */\\n    function tryModExp(\\n        bytes memory b,\\n        bytes memory e,\\n        bytes memory m\\n    ) internal view returns (bool success, bytes memory result) {\\n        if (_zeroBytes(m)) return (false, new bytes(0));\\n\\n        uint256 mLen = m.length;\\n\\n        // Encode call args in result and move the free memory pointer\\n        result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\\n\\n        assembly (\\\"memory-safe\\\") {\\n            let dataPtr := add(result, 0x20)\\n            // Write result on top of args to avoid allocating extra memory.\\n            success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\\n            // Overwrite the length.\\n            // result.length > returndatasize() is guaranteed because returndatasize() == m.length\\n            mstore(result, mLen)\\n            // Set the memory pointer after the returned data.\\n            mstore(0x40, add(dataPtr, mLen))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns whether the provided byte array is zero.\\n     */\\n    function _zeroBytes(bytes memory byteArray) private pure returns (bool) {\\n        for (uint256 i = 0; i < byteArray.length; ++i) {\\n            if (byteArray[i] != 0) {\\n                return false;\\n            }\\n        }\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\\n     * towards zero.\\n     *\\n     * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\\n     * using integer operations.\\n     */\\n    function sqrt(uint256 a) internal pure returns (uint256) {\\n        unchecked {\\n            // Take care of easy edge cases when a == 0 or a == 1\\n            if (a <= 1) {\\n                return a;\\n            }\\n\\n            // In this function, we use Newton's method to get a root of `f(x) := x\\u00b2 - a`. It involves building a\\n            // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\\n            // the current value as `\\u03b5_n = | x_n - sqrt(a) |`.\\n            //\\n            // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\\n            // of the target. (i.e. `2**(e-1) \\u2264 sqrt(a) < 2**e`). We know that `e \\u2264 128` because `(2\\u00b9\\u00b2\\u2078)\\u00b2 = 2\\u00b2\\u2075\\u2076` is\\n            // bigger than any uint256.\\n            //\\n            // By noticing that\\n            // `2**(e-1) \\u2264 sqrt(a) < 2**e \\u2192 (2**(e-1))\\u00b2 \\u2264 a < (2**e)\\u00b2 \\u2192 2**(2*e-2) \\u2264 a < 2**(2*e)`\\n            // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\\n            // to the msb function.\\n            uint256 aa = a;\\n            uint256 xn = 1;\\n\\n            if (aa >= (1 << 128)) {\\n                aa >>= 128;\\n                xn <<= 64;\\n            }\\n            if (aa >= (1 << 64)) {\\n                aa >>= 64;\\n                xn <<= 32;\\n            }\\n            if (aa >= (1 << 32)) {\\n                aa >>= 32;\\n                xn <<= 16;\\n            }\\n            if (aa >= (1 << 16)) {\\n                aa >>= 16;\\n                xn <<= 8;\\n            }\\n            if (aa >= (1 << 8)) {\\n                aa >>= 8;\\n                xn <<= 4;\\n            }\\n            if (aa >= (1 << 4)) {\\n                aa >>= 4;\\n                xn <<= 2;\\n            }\\n            if (aa >= (1 << 2)) {\\n                xn <<= 1;\\n            }\\n\\n            // We now have x_n such that `x_n = 2**(e-1) \\u2264 sqrt(a) < 2**e = 2 * x_n`. This implies \\u03b5_n \\u2264 2**(e-1).\\n            //\\n            // We can refine our estimation by noticing that the middle of that interval minimizes the error.\\n            // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to \\u03b5_n \\u2264 2**(e-2).\\n            // This is going to be our x_0 (and \\u03b5_0)\\n            xn = (3 * xn) >> 1; // \\u03b5_0 := | x_0 - sqrt(a) | \\u2264 2**(e-2)\\n\\n            // From here, Newton's method give us:\\n            // x_{n+1} = (x_n + a / x_n) / 2\\n            //\\n            // One should note that:\\n            // x_{n+1}\\u00b2 - a = ((x_n + a / x_n) / 2)\\u00b2 - a\\n            //              = ((x_n\\u00b2 + a) / (2 * x_n))\\u00b2 - a\\n            //              = (x_n\\u2074 + 2 * a * x_n\\u00b2 + a\\u00b2) / (4 * x_n\\u00b2) - a\\n            //              = (x_n\\u2074 + 2 * a * x_n\\u00b2 + a\\u00b2 - 4 * a * x_n\\u00b2) / (4 * x_n\\u00b2)\\n            //              = (x_n\\u2074 - 2 * a * x_n\\u00b2 + a\\u00b2) / (4 * x_n\\u00b2)\\n            //              = (x_n\\u00b2 - a)\\u00b2 / (2 * x_n)\\u00b2\\n            //              = ((x_n\\u00b2 - a) / (2 * x_n))\\u00b2\\n            //              \\u2265 0\\n            // Which proves that for all n \\u2265 1, sqrt(a) \\u2264 x_n\\n            //\\n            // This gives us the proof of quadratic convergence of the sequence:\\n            // \\u03b5_{n+1} = | x_{n+1} - sqrt(a) |\\n            //         = | (x_n + a / x_n) / 2 - sqrt(a) |\\n            //         = | (x_n\\u00b2 + a - 2*x_n*sqrt(a)) / (2 * x_n) |\\n            //         = | (x_n - sqrt(a))\\u00b2 / (2 * x_n) |\\n            //         = | \\u03b5_n\\u00b2 / (2 * x_n) |\\n            //         = \\u03b5_n\\u00b2 / | (2 * x_n) |\\n            //\\n            // For the first iteration, we have a special case where x_0 is known:\\n            // \\u03b5_1 = \\u03b5_0\\u00b2 / | (2 * x_0) |\\n            //     \\u2264 (2**(e-2))\\u00b2 / (2 * (2**(e-1) + 2**(e-2)))\\n            //     \\u2264 2**(2*e-4) / (3 * 2**(e-1))\\n            //     \\u2264 2**(e-3) / 3\\n            //     \\u2264 2**(e-3-log2(3))\\n            //     \\u2264 2**(e-4.5)\\n            //\\n            // For the following iterations, we use the fact that, 2**(e-1) \\u2264 sqrt(a) \\u2264 x_n:\\n            // \\u03b5_{n+1} = \\u03b5_n\\u00b2 / | (2 * x_n) |\\n            //         \\u2264 (2**(e-k))\\u00b2 / (2 * 2**(e-1))\\n            //         \\u2264 2**(2*e-2*k) / 2**e\\n            //         \\u2264 2**(e-2*k)\\n            xn = (xn + a / xn) >> 1; // \\u03b5_1 := | x_1 - sqrt(a) | \\u2264 2**(e-4.5)  -- special case, see above\\n            xn = (xn + a / xn) >> 1; // \\u03b5_2 := | x_2 - sqrt(a) | \\u2264 2**(e-9)    -- general case with k = 4.5\\n            xn = (xn + a / xn) >> 1; // \\u03b5_3 := | x_3 - sqrt(a) | \\u2264 2**(e-18)   -- general case with k = 9\\n            xn = (xn + a / xn) >> 1; // \\u03b5_4 := | x_4 - sqrt(a) | \\u2264 2**(e-36)   -- general case with k = 18\\n            xn = (xn + a / xn) >> 1; // \\u03b5_5 := | x_5 - sqrt(a) | \\u2264 2**(e-72)   -- general case with k = 36\\n            xn = (xn + a / xn) >> 1; // \\u03b5_6 := | x_6 - sqrt(a) | \\u2264 2**(e-144)  -- general case with k = 72\\n\\n            // Because e \\u2264 128 (as discussed during the first estimation phase), we know have reached a precision\\n            // \\u03b5_6 \\u2264 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\\n            // sqrt(a) or sqrt(a) + 1.\\n            return xn - SafeCast.toUint(xn > a / xn);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates sqrt(a), following the selected rounding direction.\\n     */\\n    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = sqrt(a);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 2 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     */\\n    function log2(uint256 x) internal pure returns (uint256 r) {\\n        // If value has upper 128 bits set, log2 result is at least 128\\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\\n        // If upper 64 bits of 128-bit half set, add 64 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\\n        // If upper 32 bits of 64-bit half set, add 32 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\\n        // If upper 16 bits of 32-bit half set, add 16 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\\n        // If upper 8 bits of 16-bit half set, add 8 to result\\n        r |= SafeCast.toUint((x >> r) > 0xff) << 3;\\n        // If upper 4 bits of 8-bit half set, add 4 to result\\n        r |= SafeCast.toUint((x >> r) > 0xf) << 2;\\n\\n        // Shifts value right by the current result and use it as an index into this lookup table:\\n        //\\n        // | x (4 bits) |  index  | table[index] = MSB position |\\n        // |------------|---------|-----------------------------|\\n        // |    0000    |    0    |        table[0] = 0         |\\n        // |    0001    |    1    |        table[1] = 0         |\\n        // |    0010    |    2    |        table[2] = 1         |\\n        // |    0011    |    3    |        table[3] = 1         |\\n        // |    0100    |    4    |        table[4] = 2         |\\n        // |    0101    |    5    |        table[5] = 2         |\\n        // |    0110    |    6    |        table[6] = 2         |\\n        // |    0111    |    7    |        table[7] = 2         |\\n        // |    1000    |    8    |        table[8] = 3         |\\n        // |    1001    |    9    |        table[9] = 3         |\\n        // |    1010    |   10    |        table[10] = 3        |\\n        // |    1011    |   11    |        table[11] = 3        |\\n        // |    1100    |   12    |        table[12] = 3        |\\n        // |    1101    |   13    |        table[13] = 3        |\\n        // |    1110    |   14    |        table[14] = 3        |\\n        // |    1111    |   15    |        table[15] = 3        |\\n        //\\n        // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes.\\n        assembly (\\\"memory-safe\\\") {\\n            r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000))\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log2(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 10 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     */\\n    function log10(uint256 value) internal pure returns (uint256) {\\n        uint256 result = 0;\\n        unchecked {\\n            if (value >= 10 ** 64) {\\n                value /= 10 ** 64;\\n                result += 64;\\n            }\\n            if (value >= 10 ** 32) {\\n                value /= 10 ** 32;\\n                result += 32;\\n            }\\n            if (value >= 10 ** 16) {\\n                value /= 10 ** 16;\\n                result += 16;\\n            }\\n            if (value >= 10 ** 8) {\\n                value /= 10 ** 8;\\n                result += 8;\\n            }\\n            if (value >= 10 ** 4) {\\n                value /= 10 ** 4;\\n                result += 4;\\n            }\\n            if (value >= 10 ** 2) {\\n                value /= 10 ** 2;\\n                result += 2;\\n            }\\n            if (value >= 10 ** 1) {\\n                result += 1;\\n            }\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log10(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 256 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     *\\n     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n     */\\n    function log256(uint256 x) internal pure returns (uint256 r) {\\n        // If value has upper 128 bits set, log2 result is at least 128\\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\\n        // If upper 64 bits of 128-bit half set, add 64 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\\n        // If upper 32 bits of 64-bit half set, add 32 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\\n        // If upper 16 bits of 32-bit half set, add 16 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\\n        // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8\\n        return (r >> 3) | SafeCast.toUint((x >> r) > 0xff);\\n    }\\n\\n    /**\\n     * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log256(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\\n     */\\n    function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\\n        return uint8(rounding) % 2 == 1;\\n    }\\n}\\n\",\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n */\\nlibrary SafeCast {\\n    /**\\n     * @dev Value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\\n\\n    /**\\n     * @dev An int value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedIntToUint(int256 value);\\n\\n    /**\\n     * @dev Value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\\n\\n    /**\\n     * @dev An uint value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedUintToInt(uint256 value);\\n\\n    /**\\n     * @dev Returns the downcasted uint248 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint248).\\n     *\\n     * Counterpart to Solidity's `uint248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toUint248(uint256 value) internal pure returns (uint248) {\\n        if (value > type(uint248).max) {\\n            revert SafeCastOverflowedUintDowncast(248, value);\\n        }\\n        return uint248(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint240 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint240).\\n     *\\n     * Counterpart to Solidity's `uint240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toUint240(uint256 value) internal pure returns (uint240) {\\n        if (value > type(uint240).max) {\\n            revert SafeCastOverflowedUintDowncast(240, value);\\n        }\\n        return uint240(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint232 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint232).\\n     *\\n     * Counterpart to Solidity's `uint232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toUint232(uint256 value) internal pure returns (uint232) {\\n        if (value > type(uint232).max) {\\n            revert SafeCastOverflowedUintDowncast(232, value);\\n        }\\n        return uint232(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint224 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint224).\\n     *\\n     * Counterpart to Solidity's `uint224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toUint224(uint256 value) internal pure returns (uint224) {\\n        if (value > type(uint224).max) {\\n            revert SafeCastOverflowedUintDowncast(224, value);\\n        }\\n        return uint224(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint216 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint216).\\n     *\\n     * Counterpart to Solidity's `uint216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toUint216(uint256 value) internal pure returns (uint216) {\\n        if (value > type(uint216).max) {\\n            revert SafeCastOverflowedUintDowncast(216, value);\\n        }\\n        return uint216(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint208 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint208).\\n     *\\n     * Counterpart to Solidity's `uint208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toUint208(uint256 value) internal pure returns (uint208) {\\n        if (value > type(uint208).max) {\\n            revert SafeCastOverflowedUintDowncast(208, value);\\n        }\\n        return uint208(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint200 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint200).\\n     *\\n     * Counterpart to Solidity's `uint200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toUint200(uint256 value) internal pure returns (uint200) {\\n        if (value > type(uint200).max) {\\n            revert SafeCastOverflowedUintDowncast(200, value);\\n        }\\n        return uint200(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint192 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint192).\\n     *\\n     * Counterpart to Solidity's `uint192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toUint192(uint256 value) internal pure returns (uint192) {\\n        if (value > type(uint192).max) {\\n            revert SafeCastOverflowedUintDowncast(192, value);\\n        }\\n        return uint192(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint184 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint184).\\n     *\\n     * Counterpart to Solidity's `uint184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toUint184(uint256 value) internal pure returns (uint184) {\\n        if (value > type(uint184).max) {\\n            revert SafeCastOverflowedUintDowncast(184, value);\\n        }\\n        return uint184(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint176 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint176).\\n     *\\n     * Counterpart to Solidity's `uint176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toUint176(uint256 value) internal pure returns (uint176) {\\n        if (value > type(uint176).max) {\\n            revert SafeCastOverflowedUintDowncast(176, value);\\n        }\\n        return uint176(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint168 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint168).\\n     *\\n     * Counterpart to Solidity's `uint168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toUint168(uint256 value) internal pure returns (uint168) {\\n        if (value > type(uint168).max) {\\n            revert SafeCastOverflowedUintDowncast(168, value);\\n        }\\n        return uint168(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint160 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint160).\\n     *\\n     * Counterpart to Solidity's `uint160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toUint160(uint256 value) internal pure returns (uint160) {\\n        if (value > type(uint160).max) {\\n            revert SafeCastOverflowedUintDowncast(160, value);\\n        }\\n        return uint160(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint152 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint152).\\n     *\\n     * Counterpart to Solidity's `uint152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toUint152(uint256 value) internal pure returns (uint152) {\\n        if (value > type(uint152).max) {\\n            revert SafeCastOverflowedUintDowncast(152, value);\\n        }\\n        return uint152(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint144 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint144).\\n     *\\n     * Counterpart to Solidity's `uint144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toUint144(uint256 value) internal pure returns (uint144) {\\n        if (value > type(uint144).max) {\\n            revert SafeCastOverflowedUintDowncast(144, value);\\n        }\\n        return uint144(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint136 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint136).\\n     *\\n     * Counterpart to Solidity's `uint136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toUint136(uint256 value) internal pure returns (uint136) {\\n        if (value > type(uint136).max) {\\n            revert SafeCastOverflowedUintDowncast(136, value);\\n        }\\n        return uint136(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint128 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint128).\\n     *\\n     * Counterpart to Solidity's `uint128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toUint128(uint256 value) internal pure returns (uint128) {\\n        if (value > type(uint128).max) {\\n            revert SafeCastOverflowedUintDowncast(128, value);\\n        }\\n        return uint128(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint120 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint120).\\n     *\\n     * Counterpart to Solidity's `uint120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toUint120(uint256 value) internal pure returns (uint120) {\\n        if (value > type(uint120).max) {\\n            revert SafeCastOverflowedUintDowncast(120, value);\\n        }\\n        return uint120(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint112 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint112).\\n     *\\n     * Counterpart to Solidity's `uint112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toUint112(uint256 value) internal pure returns (uint112) {\\n        if (value > type(uint112).max) {\\n            revert SafeCastOverflowedUintDowncast(112, value);\\n        }\\n        return uint112(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint104 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint104).\\n     *\\n     * Counterpart to Solidity's `uint104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toUint104(uint256 value) internal pure returns (uint104) {\\n        if (value > type(uint104).max) {\\n            revert SafeCastOverflowedUintDowncast(104, value);\\n        }\\n        return uint104(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint96 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint96).\\n     *\\n     * Counterpart to Solidity's `uint96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toUint96(uint256 value) internal pure returns (uint96) {\\n        if (value > type(uint96).max) {\\n            revert SafeCastOverflowedUintDowncast(96, value);\\n        }\\n        return uint96(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint88 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint88).\\n     *\\n     * Counterpart to Solidity's `uint88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toUint88(uint256 value) internal pure returns (uint88) {\\n        if (value > type(uint88).max) {\\n            revert SafeCastOverflowedUintDowncast(88, value);\\n        }\\n        return uint88(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint80 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint80).\\n     *\\n     * Counterpart to Solidity's `uint80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toUint80(uint256 value) internal pure returns (uint80) {\\n        if (value > type(uint80).max) {\\n            revert SafeCastOverflowedUintDowncast(80, value);\\n        }\\n        return uint80(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint72 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint72).\\n     *\\n     * Counterpart to Solidity's `uint72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toUint72(uint256 value) internal pure returns (uint72) {\\n        if (value > type(uint72).max) {\\n            revert SafeCastOverflowedUintDowncast(72, value);\\n        }\\n        return uint72(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint64 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint64).\\n     *\\n     * Counterpart to Solidity's `uint64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toUint64(uint256 value) internal pure returns (uint64) {\\n        if (value > type(uint64).max) {\\n            revert SafeCastOverflowedUintDowncast(64, value);\\n        }\\n        return uint64(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint56 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint56).\\n     *\\n     * Counterpart to Solidity's `uint56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toUint56(uint256 value) internal pure returns (uint56) {\\n        if (value > type(uint56).max) {\\n            revert SafeCastOverflowedUintDowncast(56, value);\\n        }\\n        return uint56(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint48 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint48).\\n     *\\n     * Counterpart to Solidity's `uint48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toUint48(uint256 value) internal pure returns (uint48) {\\n        if (value > type(uint48).max) {\\n            revert SafeCastOverflowedUintDowncast(48, value);\\n        }\\n        return uint48(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint40 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint40).\\n     *\\n     * Counterpart to Solidity's `uint40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toUint40(uint256 value) internal pure returns (uint40) {\\n        if (value > type(uint40).max) {\\n            revert SafeCastOverflowedUintDowncast(40, value);\\n        }\\n        return uint40(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint32 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint32).\\n     *\\n     * Counterpart to Solidity's `uint32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toUint32(uint256 value) internal pure returns (uint32) {\\n        if (value > type(uint32).max) {\\n            revert SafeCastOverflowedUintDowncast(32, value);\\n        }\\n        return uint32(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint24 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint24).\\n     *\\n     * Counterpart to Solidity's `uint24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toUint24(uint256 value) internal pure returns (uint24) {\\n        if (value > type(uint24).max) {\\n            revert SafeCastOverflowedUintDowncast(24, value);\\n        }\\n        return uint24(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint16 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint16).\\n     *\\n     * Counterpart to Solidity's `uint16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toUint16(uint256 value) internal pure returns (uint16) {\\n        if (value > type(uint16).max) {\\n            revert SafeCastOverflowedUintDowncast(16, value);\\n        }\\n        return uint16(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint8 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint8).\\n     *\\n     * Counterpart to Solidity's `uint8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toUint8(uint256 value) internal pure returns (uint8) {\\n        if (value > type(uint8).max) {\\n            revert SafeCastOverflowedUintDowncast(8, value);\\n        }\\n        return uint8(value);\\n    }\\n\\n    /**\\n     * @dev Converts a signed int256 into an unsigned uint256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be greater than or equal to 0.\\n     */\\n    function toUint256(int256 value) internal pure returns (uint256) {\\n        if (value < 0) {\\n            revert SafeCastOverflowedIntToUint(value);\\n        }\\n        return uint256(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int248 from int256, reverting on\\n     * overflow (when the input is less than smallest int248 or\\n     * greater than largest int248).\\n     *\\n     * Counterpart to Solidity's `int248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n        downcasted = int248(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(248, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int240 from int256, reverting on\\n     * overflow (when the input is less than smallest int240 or\\n     * greater than largest int240).\\n     *\\n     * Counterpart to Solidity's `int240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n        downcasted = int240(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(240, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int232 from int256, reverting on\\n     * overflow (when the input is less than smallest int232 or\\n     * greater than largest int232).\\n     *\\n     * Counterpart to Solidity's `int232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n        downcasted = int232(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(232, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int224 from int256, reverting on\\n     * overflow (when the input is less than smallest int224 or\\n     * greater than largest int224).\\n     *\\n     * Counterpart to Solidity's `int224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n        downcasted = int224(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(224, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int216 from int256, reverting on\\n     * overflow (when the input is less than smallest int216 or\\n     * greater than largest int216).\\n     *\\n     * Counterpart to Solidity's `int216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n        downcasted = int216(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(216, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int208 from int256, reverting on\\n     * overflow (when the input is less than smallest int208 or\\n     * greater than largest int208).\\n     *\\n     * Counterpart to Solidity's `int208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n        downcasted = int208(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(208, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int200 from int256, reverting on\\n     * overflow (when the input is less than smallest int200 or\\n     * greater than largest int200).\\n     *\\n     * Counterpart to Solidity's `int200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n        downcasted = int200(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(200, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int192 from int256, reverting on\\n     * overflow (when the input is less than smallest int192 or\\n     * greater than largest int192).\\n     *\\n     * Counterpart to Solidity's `int192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n        downcasted = int192(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(192, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int184 from int256, reverting on\\n     * overflow (when the input is less than smallest int184 or\\n     * greater than largest int184).\\n     *\\n     * Counterpart to Solidity's `int184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n        downcasted = int184(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(184, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int176 from int256, reverting on\\n     * overflow (when the input is less than smallest int176 or\\n     * greater than largest int176).\\n     *\\n     * Counterpart to Solidity's `int176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n        downcasted = int176(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(176, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int168 from int256, reverting on\\n     * overflow (when the input is less than smallest int168 or\\n     * greater than largest int168).\\n     *\\n     * Counterpart to Solidity's `int168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n        downcasted = int168(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(168, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int160 from int256, reverting on\\n     * overflow (when the input is less than smallest int160 or\\n     * greater than largest int160).\\n     *\\n     * Counterpart to Solidity's `int160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n        downcasted = int160(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(160, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int152 from int256, reverting on\\n     * overflow (when the input is less than smallest int152 or\\n     * greater than largest int152).\\n     *\\n     * Counterpart to Solidity's `int152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n        downcasted = int152(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(152, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int144 from int256, reverting on\\n     * overflow (when the input is less than smallest int144 or\\n     * greater than largest int144).\\n     *\\n     * Counterpart to Solidity's `int144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n        downcasted = int144(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(144, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int136 from int256, reverting on\\n     * overflow (when the input is less than smallest int136 or\\n     * greater than largest int136).\\n     *\\n     * Counterpart to Solidity's `int136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n        downcasted = int136(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(136, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int128 from int256, reverting on\\n     * overflow (when the input is less than smallest int128 or\\n     * greater than largest int128).\\n     *\\n     * Counterpart to Solidity's `int128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n        downcasted = int128(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(128, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int120 from int256, reverting on\\n     * overflow (when the input is less than smallest int120 or\\n     * greater than largest int120).\\n     *\\n     * Counterpart to Solidity's `int120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n        downcasted = int120(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(120, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int112 from int256, reverting on\\n     * overflow (when the input is less than smallest int112 or\\n     * greater than largest int112).\\n     *\\n     * Counterpart to Solidity's `int112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n        downcasted = int112(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(112, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int104 from int256, reverting on\\n     * overflow (when the input is less than smallest int104 or\\n     * greater than largest int104).\\n     *\\n     * Counterpart to Solidity's `int104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n        downcasted = int104(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(104, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int96 from int256, reverting on\\n     * overflow (when the input is less than smallest int96 or\\n     * greater than largest int96).\\n     *\\n     * Counterpart to Solidity's `int96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n        downcasted = int96(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(96, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int88 from int256, reverting on\\n     * overflow (when the input is less than smallest int88 or\\n     * greater than largest int88).\\n     *\\n     * Counterpart to Solidity's `int88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n        downcasted = int88(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(88, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int80 from int256, reverting on\\n     * overflow (when the input is less than smallest int80 or\\n     * greater than largest int80).\\n     *\\n     * Counterpart to Solidity's `int80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n        downcasted = int80(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(80, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int72 from int256, reverting on\\n     * overflow (when the input is less than smallest int72 or\\n     * greater than largest int72).\\n     *\\n     * Counterpart to Solidity's `int72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n        downcasted = int72(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(72, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int64 from int256, reverting on\\n     * overflow (when the input is less than smallest int64 or\\n     * greater than largest int64).\\n     *\\n     * Counterpart to Solidity's `int64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n        downcasted = int64(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(64, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int56 from int256, reverting on\\n     * overflow (when the input is less than smallest int56 or\\n     * greater than largest int56).\\n     *\\n     * Counterpart to Solidity's `int56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n        downcasted = int56(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(56, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int48 from int256, reverting on\\n     * overflow (when the input is less than smallest int48 or\\n     * greater than largest int48).\\n     *\\n     * Counterpart to Solidity's `int48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n        downcasted = int48(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(48, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int40 from int256, reverting on\\n     * overflow (when the input is less than smallest int40 or\\n     * greater than largest int40).\\n     *\\n     * Counterpart to Solidity's `int40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n        downcasted = int40(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(40, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int32 from int256, reverting on\\n     * overflow (when the input is less than smallest int32 or\\n     * greater than largest int32).\\n     *\\n     * Counterpart to Solidity's `int32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n        downcasted = int32(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(32, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int24 from int256, reverting on\\n     * overflow (when the input is less than smallest int24 or\\n     * greater than largest int24).\\n     *\\n     * Counterpart to Solidity's `int24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n        downcasted = int24(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(24, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int16 from int256, reverting on\\n     * overflow (when the input is less than smallest int16 or\\n     * greater than largest int16).\\n     *\\n     * Counterpart to Solidity's `int16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n        downcasted = int16(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(16, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int8 from int256, reverting on\\n     * overflow (when the input is less than smallest int8 or\\n     * greater than largest int8).\\n     *\\n     * Counterpart to Solidity's `int8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n        downcasted = int8(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(8, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts an unsigned uint256 into a signed int256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be less than or equal to maxInt256.\\n     */\\n    function toInt256(uint256 value) internal pure returns (int256) {\\n        // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n        if (value > uint256(type(int256).max)) {\\n            revert SafeCastOverflowedUintToInt(value);\\n        }\\n        return int256(value);\\n    }\\n\\n    /**\\n     * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\\n     */\\n    function toUint(bool b) internal pure returns (uint256 u) {\\n        assembly (\\\"memory-safe\\\") {\\n            u := iszero(iszero(b))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"SafeCast":{"abi":[{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntDowncast","type":"error"},{"inputs":[{"internalType":"int256","name":"value","type":"int256"}],"name":"SafeCastOverflowedIntToUint","type":"error"},{"inputs":[{"internalType":"uint8","name":"bits","type":"uint8"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintDowncast","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeCastOverflowedUintToInt","type":"error"}],"devdoc":{"details":"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.","errors":{"SafeCastOverflowedIntDowncast(uint8,int256)":[{"details":"Value doesn't fit in an int of `bits` size."}],"SafeCastOverflowedIntToUint(int256)":[{"details":"An int value doesn't fit in an uint of `bits` size."}],"SafeCastOverflowedUintDowncast(uint8,uint256)":[{"details":"Value doesn't fit in an uint of `bits` size."}],"SafeCastOverflowedUintToInt(uint256)":[{"details":"An uint value doesn't fit in an int of `bits` size."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200a691a2a551a3f6da20fe43694e0367b64bd2fb03193ff627c4c5c750380170264736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP PUSH10 0x1A2A551A3F6DA20FE436 SWAP5 0xE0 CALLDATASIZE PUSH28 0x64BD2FB03193FF627C4C5C750380170264736F6C634300081C003300 ","sourceMap":"769:34173:54:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;769:34173:54;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200a691a2a551a3f6da20fe43694e0367b64bd2fb03193ff627c4c5c750380170264736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP PUSH10 0x1A2A551A3F6DA20FE436 SWAP5 0xE0 CALLDATASIZE PUSH28 0x64BD2FB03193FF627C4C5C750380170264736F6C634300081C003300 ","sourceMap":"769:34173:54:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"toInt104(int256)":"infinite","toInt112(int256)":"infinite","toInt120(int256)":"infinite","toInt128(int256)":"infinite","toInt136(int256)":"infinite","toInt144(int256)":"infinite","toInt152(int256)":"infinite","toInt16(int256)":"infinite","toInt160(int256)":"infinite","toInt168(int256)":"infinite","toInt176(int256)":"infinite","toInt184(int256)":"infinite","toInt192(int256)":"infinite","toInt200(int256)":"infinite","toInt208(int256)":"infinite","toInt216(int256)":"infinite","toInt224(int256)":"infinite","toInt232(int256)":"infinite","toInt24(int256)":"infinite","toInt240(int256)":"infinite","toInt248(int256)":"infinite","toInt256(uint256)":"infinite","toInt32(int256)":"infinite","toInt40(int256)":"infinite","toInt48(int256)":"infinite","toInt56(int256)":"infinite","toInt64(int256)":"infinite","toInt72(int256)":"infinite","toInt8(int256)":"infinite","toInt80(int256)":"infinite","toInt88(int256)":"infinite","toInt96(int256)":"infinite","toUint(bool)":"infinite","toUint104(uint256)":"infinite","toUint112(uint256)":"infinite","toUint120(uint256)":"infinite","toUint128(uint256)":"infinite","toUint136(uint256)":"infinite","toUint144(uint256)":"infinite","toUint152(uint256)":"infinite","toUint16(uint256)":"infinite","toUint160(uint256)":"infinite","toUint168(uint256)":"infinite","toUint176(uint256)":"infinite","toUint184(uint256)":"infinite","toUint192(uint256)":"infinite","toUint200(uint256)":"infinite","toUint208(uint256)":"infinite","toUint216(uint256)":"infinite","toUint224(uint256)":"infinite","toUint232(uint256)":"infinite","toUint24(uint256)":"infinite","toUint240(uint256)":"infinite","toUint248(uint256)":"infinite","toUint256(int256)":"infinite","toUint32(uint256)":"infinite","toUint40(uint256)":"infinite","toUint48(uint256)":"infinite","toUint56(uint256)":"infinite","toUint64(uint256)":"infinite","toUint72(uint256)":"infinite","toUint8(uint256)":"infinite","toUint80(uint256)":"infinite","toUint88(uint256)":"infinite","toUint96(uint256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"errors\":{\"SafeCastOverflowedIntDowncast(uint8,int256)\":[{\"details\":\"Value doesn't fit in an int of `bits` size.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n */\\nlibrary SafeCast {\\n    /**\\n     * @dev Value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\\n\\n    /**\\n     * @dev An int value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedIntToUint(int256 value);\\n\\n    /**\\n     * @dev Value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\\n\\n    /**\\n     * @dev An uint value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedUintToInt(uint256 value);\\n\\n    /**\\n     * @dev Returns the downcasted uint248 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint248).\\n     *\\n     * Counterpart to Solidity's `uint248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toUint248(uint256 value) internal pure returns (uint248) {\\n        if (value > type(uint248).max) {\\n            revert SafeCastOverflowedUintDowncast(248, value);\\n        }\\n        return uint248(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint240 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint240).\\n     *\\n     * Counterpart to Solidity's `uint240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toUint240(uint256 value) internal pure returns (uint240) {\\n        if (value > type(uint240).max) {\\n            revert SafeCastOverflowedUintDowncast(240, value);\\n        }\\n        return uint240(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint232 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint232).\\n     *\\n     * Counterpart to Solidity's `uint232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toUint232(uint256 value) internal pure returns (uint232) {\\n        if (value > type(uint232).max) {\\n            revert SafeCastOverflowedUintDowncast(232, value);\\n        }\\n        return uint232(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint224 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint224).\\n     *\\n     * Counterpart to Solidity's `uint224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toUint224(uint256 value) internal pure returns (uint224) {\\n        if (value > type(uint224).max) {\\n            revert SafeCastOverflowedUintDowncast(224, value);\\n        }\\n        return uint224(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint216 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint216).\\n     *\\n     * Counterpart to Solidity's `uint216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toUint216(uint256 value) internal pure returns (uint216) {\\n        if (value > type(uint216).max) {\\n            revert SafeCastOverflowedUintDowncast(216, value);\\n        }\\n        return uint216(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint208 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint208).\\n     *\\n     * Counterpart to Solidity's `uint208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toUint208(uint256 value) internal pure returns (uint208) {\\n        if (value > type(uint208).max) {\\n            revert SafeCastOverflowedUintDowncast(208, value);\\n        }\\n        return uint208(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint200 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint200).\\n     *\\n     * Counterpart to Solidity's `uint200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toUint200(uint256 value) internal pure returns (uint200) {\\n        if (value > type(uint200).max) {\\n            revert SafeCastOverflowedUintDowncast(200, value);\\n        }\\n        return uint200(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint192 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint192).\\n     *\\n     * Counterpart to Solidity's `uint192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toUint192(uint256 value) internal pure returns (uint192) {\\n        if (value > type(uint192).max) {\\n            revert SafeCastOverflowedUintDowncast(192, value);\\n        }\\n        return uint192(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint184 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint184).\\n     *\\n     * Counterpart to Solidity's `uint184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toUint184(uint256 value) internal pure returns (uint184) {\\n        if (value > type(uint184).max) {\\n            revert SafeCastOverflowedUintDowncast(184, value);\\n        }\\n        return uint184(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint176 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint176).\\n     *\\n     * Counterpart to Solidity's `uint176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toUint176(uint256 value) internal pure returns (uint176) {\\n        if (value > type(uint176).max) {\\n            revert SafeCastOverflowedUintDowncast(176, value);\\n        }\\n        return uint176(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint168 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint168).\\n     *\\n     * Counterpart to Solidity's `uint168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toUint168(uint256 value) internal pure returns (uint168) {\\n        if (value > type(uint168).max) {\\n            revert SafeCastOverflowedUintDowncast(168, value);\\n        }\\n        return uint168(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint160 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint160).\\n     *\\n     * Counterpart to Solidity's `uint160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toUint160(uint256 value) internal pure returns (uint160) {\\n        if (value > type(uint160).max) {\\n            revert SafeCastOverflowedUintDowncast(160, value);\\n        }\\n        return uint160(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint152 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint152).\\n     *\\n     * Counterpart to Solidity's `uint152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toUint152(uint256 value) internal pure returns (uint152) {\\n        if (value > type(uint152).max) {\\n            revert SafeCastOverflowedUintDowncast(152, value);\\n        }\\n        return uint152(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint144 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint144).\\n     *\\n     * Counterpart to Solidity's `uint144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toUint144(uint256 value) internal pure returns (uint144) {\\n        if (value > type(uint144).max) {\\n            revert SafeCastOverflowedUintDowncast(144, value);\\n        }\\n        return uint144(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint136 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint136).\\n     *\\n     * Counterpart to Solidity's `uint136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toUint136(uint256 value) internal pure returns (uint136) {\\n        if (value > type(uint136).max) {\\n            revert SafeCastOverflowedUintDowncast(136, value);\\n        }\\n        return uint136(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint128 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint128).\\n     *\\n     * Counterpart to Solidity's `uint128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toUint128(uint256 value) internal pure returns (uint128) {\\n        if (value > type(uint128).max) {\\n            revert SafeCastOverflowedUintDowncast(128, value);\\n        }\\n        return uint128(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint120 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint120).\\n     *\\n     * Counterpart to Solidity's `uint120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toUint120(uint256 value) internal pure returns (uint120) {\\n        if (value > type(uint120).max) {\\n            revert SafeCastOverflowedUintDowncast(120, value);\\n        }\\n        return uint120(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint112 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint112).\\n     *\\n     * Counterpart to Solidity's `uint112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toUint112(uint256 value) internal pure returns (uint112) {\\n        if (value > type(uint112).max) {\\n            revert SafeCastOverflowedUintDowncast(112, value);\\n        }\\n        return uint112(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint104 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint104).\\n     *\\n     * Counterpart to Solidity's `uint104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toUint104(uint256 value) internal pure returns (uint104) {\\n        if (value > type(uint104).max) {\\n            revert SafeCastOverflowedUintDowncast(104, value);\\n        }\\n        return uint104(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint96 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint96).\\n     *\\n     * Counterpart to Solidity's `uint96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toUint96(uint256 value) internal pure returns (uint96) {\\n        if (value > type(uint96).max) {\\n            revert SafeCastOverflowedUintDowncast(96, value);\\n        }\\n        return uint96(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint88 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint88).\\n     *\\n     * Counterpart to Solidity's `uint88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toUint88(uint256 value) internal pure returns (uint88) {\\n        if (value > type(uint88).max) {\\n            revert SafeCastOverflowedUintDowncast(88, value);\\n        }\\n        return uint88(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint80 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint80).\\n     *\\n     * Counterpart to Solidity's `uint80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toUint80(uint256 value) internal pure returns (uint80) {\\n        if (value > type(uint80).max) {\\n            revert SafeCastOverflowedUintDowncast(80, value);\\n        }\\n        return uint80(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint72 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint72).\\n     *\\n     * Counterpart to Solidity's `uint72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toUint72(uint256 value) internal pure returns (uint72) {\\n        if (value > type(uint72).max) {\\n            revert SafeCastOverflowedUintDowncast(72, value);\\n        }\\n        return uint72(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint64 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint64).\\n     *\\n     * Counterpart to Solidity's `uint64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toUint64(uint256 value) internal pure returns (uint64) {\\n        if (value > type(uint64).max) {\\n            revert SafeCastOverflowedUintDowncast(64, value);\\n        }\\n        return uint64(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint56 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint56).\\n     *\\n     * Counterpart to Solidity's `uint56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toUint56(uint256 value) internal pure returns (uint56) {\\n        if (value > type(uint56).max) {\\n            revert SafeCastOverflowedUintDowncast(56, value);\\n        }\\n        return uint56(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint48 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint48).\\n     *\\n     * Counterpart to Solidity's `uint48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toUint48(uint256 value) internal pure returns (uint48) {\\n        if (value > type(uint48).max) {\\n            revert SafeCastOverflowedUintDowncast(48, value);\\n        }\\n        return uint48(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint40 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint40).\\n     *\\n     * Counterpart to Solidity's `uint40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toUint40(uint256 value) internal pure returns (uint40) {\\n        if (value > type(uint40).max) {\\n            revert SafeCastOverflowedUintDowncast(40, value);\\n        }\\n        return uint40(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint32 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint32).\\n     *\\n     * Counterpart to Solidity's `uint32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toUint32(uint256 value) internal pure returns (uint32) {\\n        if (value > type(uint32).max) {\\n            revert SafeCastOverflowedUintDowncast(32, value);\\n        }\\n        return uint32(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint24 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint24).\\n     *\\n     * Counterpart to Solidity's `uint24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toUint24(uint256 value) internal pure returns (uint24) {\\n        if (value > type(uint24).max) {\\n            revert SafeCastOverflowedUintDowncast(24, value);\\n        }\\n        return uint24(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint16 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint16).\\n     *\\n     * Counterpart to Solidity's `uint16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toUint16(uint256 value) internal pure returns (uint16) {\\n        if (value > type(uint16).max) {\\n            revert SafeCastOverflowedUintDowncast(16, value);\\n        }\\n        return uint16(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint8 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint8).\\n     *\\n     * Counterpart to Solidity's `uint8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toUint8(uint256 value) internal pure returns (uint8) {\\n        if (value > type(uint8).max) {\\n            revert SafeCastOverflowedUintDowncast(8, value);\\n        }\\n        return uint8(value);\\n    }\\n\\n    /**\\n     * @dev Converts a signed int256 into an unsigned uint256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be greater than or equal to 0.\\n     */\\n    function toUint256(int256 value) internal pure returns (uint256) {\\n        if (value < 0) {\\n            revert SafeCastOverflowedIntToUint(value);\\n        }\\n        return uint256(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int248 from int256, reverting on\\n     * overflow (when the input is less than smallest int248 or\\n     * greater than largest int248).\\n     *\\n     * Counterpart to Solidity's `int248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n        downcasted = int248(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(248, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int240 from int256, reverting on\\n     * overflow (when the input is less than smallest int240 or\\n     * greater than largest int240).\\n     *\\n     * Counterpart to Solidity's `int240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n        downcasted = int240(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(240, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int232 from int256, reverting on\\n     * overflow (when the input is less than smallest int232 or\\n     * greater than largest int232).\\n     *\\n     * Counterpart to Solidity's `int232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n        downcasted = int232(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(232, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int224 from int256, reverting on\\n     * overflow (when the input is less than smallest int224 or\\n     * greater than largest int224).\\n     *\\n     * Counterpart to Solidity's `int224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n        downcasted = int224(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(224, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int216 from int256, reverting on\\n     * overflow (when the input is less than smallest int216 or\\n     * greater than largest int216).\\n     *\\n     * Counterpart to Solidity's `int216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n        downcasted = int216(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(216, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int208 from int256, reverting on\\n     * overflow (when the input is less than smallest int208 or\\n     * greater than largest int208).\\n     *\\n     * Counterpart to Solidity's `int208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n        downcasted = int208(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(208, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int200 from int256, reverting on\\n     * overflow (when the input is less than smallest int200 or\\n     * greater than largest int200).\\n     *\\n     * Counterpart to Solidity's `int200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n        downcasted = int200(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(200, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int192 from int256, reverting on\\n     * overflow (when the input is less than smallest int192 or\\n     * greater than largest int192).\\n     *\\n     * Counterpart to Solidity's `int192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n        downcasted = int192(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(192, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int184 from int256, reverting on\\n     * overflow (when the input is less than smallest int184 or\\n     * greater than largest int184).\\n     *\\n     * Counterpart to Solidity's `int184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n        downcasted = int184(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(184, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int176 from int256, reverting on\\n     * overflow (when the input is less than smallest int176 or\\n     * greater than largest int176).\\n     *\\n     * Counterpart to Solidity's `int176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n        downcasted = int176(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(176, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int168 from int256, reverting on\\n     * overflow (when the input is less than smallest int168 or\\n     * greater than largest int168).\\n     *\\n     * Counterpart to Solidity's `int168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n        downcasted = int168(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(168, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int160 from int256, reverting on\\n     * overflow (when the input is less than smallest int160 or\\n     * greater than largest int160).\\n     *\\n     * Counterpart to Solidity's `int160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n        downcasted = int160(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(160, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int152 from int256, reverting on\\n     * overflow (when the input is less than smallest int152 or\\n     * greater than largest int152).\\n     *\\n     * Counterpart to Solidity's `int152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n        downcasted = int152(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(152, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int144 from int256, reverting on\\n     * overflow (when the input is less than smallest int144 or\\n     * greater than largest int144).\\n     *\\n     * Counterpart to Solidity's `int144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n        downcasted = int144(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(144, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int136 from int256, reverting on\\n     * overflow (when the input is less than smallest int136 or\\n     * greater than largest int136).\\n     *\\n     * Counterpart to Solidity's `int136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n        downcasted = int136(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(136, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int128 from int256, reverting on\\n     * overflow (when the input is less than smallest int128 or\\n     * greater than largest int128).\\n     *\\n     * Counterpart to Solidity's `int128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n        downcasted = int128(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(128, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int120 from int256, reverting on\\n     * overflow (when the input is less than smallest int120 or\\n     * greater than largest int120).\\n     *\\n     * Counterpart to Solidity's `int120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n        downcasted = int120(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(120, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int112 from int256, reverting on\\n     * overflow (when the input is less than smallest int112 or\\n     * greater than largest int112).\\n     *\\n     * Counterpart to Solidity's `int112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n        downcasted = int112(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(112, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int104 from int256, reverting on\\n     * overflow (when the input is less than smallest int104 or\\n     * greater than largest int104).\\n     *\\n     * Counterpart to Solidity's `int104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n        downcasted = int104(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(104, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int96 from int256, reverting on\\n     * overflow (when the input is less than smallest int96 or\\n     * greater than largest int96).\\n     *\\n     * Counterpart to Solidity's `int96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n        downcasted = int96(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(96, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int88 from int256, reverting on\\n     * overflow (when the input is less than smallest int88 or\\n     * greater than largest int88).\\n     *\\n     * Counterpart to Solidity's `int88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n        downcasted = int88(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(88, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int80 from int256, reverting on\\n     * overflow (when the input is less than smallest int80 or\\n     * greater than largest int80).\\n     *\\n     * Counterpart to Solidity's `int80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n        downcasted = int80(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(80, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int72 from int256, reverting on\\n     * overflow (when the input is less than smallest int72 or\\n     * greater than largest int72).\\n     *\\n     * Counterpart to Solidity's `int72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n        downcasted = int72(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(72, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int64 from int256, reverting on\\n     * overflow (when the input is less than smallest int64 or\\n     * greater than largest int64).\\n     *\\n     * Counterpart to Solidity's `int64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n        downcasted = int64(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(64, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int56 from int256, reverting on\\n     * overflow (when the input is less than smallest int56 or\\n     * greater than largest int56).\\n     *\\n     * Counterpart to Solidity's `int56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n        downcasted = int56(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(56, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int48 from int256, reverting on\\n     * overflow (when the input is less than smallest int48 or\\n     * greater than largest int48).\\n     *\\n     * Counterpart to Solidity's `int48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n        downcasted = int48(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(48, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int40 from int256, reverting on\\n     * overflow (when the input is less than smallest int40 or\\n     * greater than largest int40).\\n     *\\n     * Counterpart to Solidity's `int40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n        downcasted = int40(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(40, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int32 from int256, reverting on\\n     * overflow (when the input is less than smallest int32 or\\n     * greater than largest int32).\\n     *\\n     * Counterpart to Solidity's `int32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n        downcasted = int32(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(32, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int24 from int256, reverting on\\n     * overflow (when the input is less than smallest int24 or\\n     * greater than largest int24).\\n     *\\n     * Counterpart to Solidity's `int24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n        downcasted = int24(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(24, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int16 from int256, reverting on\\n     * overflow (when the input is less than smallest int16 or\\n     * greater than largest int16).\\n     *\\n     * Counterpart to Solidity's `int16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n        downcasted = int16(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(16, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int8 from int256, reverting on\\n     * overflow (when the input is less than smallest int8 or\\n     * greater than largest int8).\\n     *\\n     * Counterpart to Solidity's `int8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n        downcasted = int8(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(8, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts an unsigned uint256 into a signed int256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be less than or equal to maxInt256.\\n     */\\n    function toInt256(uint256 value) internal pure returns (int256) {\\n        // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n        if (value > uint256(type(int256).max)) {\\n            revert SafeCastOverflowedUintToInt(value);\\n        }\\n        return int256(value);\\n    }\\n\\n    /**\\n     * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\\n     */\\n    function toUint(bool b) internal pure returns (uint256 u) {\\n        assembly (\\\"memory-safe\\\") {\\n            u := iszero(iszero(b))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"SignedMath":{"abi":[],"devdoc":{"details":"Standard signed math utilities missing in the Solidity language.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dd9b2a79efd6349818d2e3a0e4b9f9d0441e837f87ff15655bb759d65a3cfc4964736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDD SWAP12 0x2A PUSH26 0xEFD6349818D2E3A0E4B9F9D0441E837F87FF15655BB759D65A3C 0xFC BLOBHASH PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"258:2354:55:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;258:2354:55;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dd9b2a79efd6349818d2e3a0e4b9f9d0441e837f87ff15655bb759d65a3cfc4964736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDD SWAP12 0x2A PUSH26 0xEFD6349818D2E3A0E4B9F9D0441E837F87FF15655BB759D65A3C 0xFC BLOBHASH PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"258:2354:55:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"abs(int256)":"infinite","average(int256,int256)":"infinite","max(int256,int256)":"infinite","min(int256,int256)":"infinite","ternary(bool,int256,int256)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n */\\nlibrary SafeCast {\\n    /**\\n     * @dev Value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\\n\\n    /**\\n     * @dev An int value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedIntToUint(int256 value);\\n\\n    /**\\n     * @dev Value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\\n\\n    /**\\n     * @dev An uint value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedUintToInt(uint256 value);\\n\\n    /**\\n     * @dev Returns the downcasted uint248 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint248).\\n     *\\n     * Counterpart to Solidity's `uint248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toUint248(uint256 value) internal pure returns (uint248) {\\n        if (value > type(uint248).max) {\\n            revert SafeCastOverflowedUintDowncast(248, value);\\n        }\\n        return uint248(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint240 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint240).\\n     *\\n     * Counterpart to Solidity's `uint240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toUint240(uint256 value) internal pure returns (uint240) {\\n        if (value > type(uint240).max) {\\n            revert SafeCastOverflowedUintDowncast(240, value);\\n        }\\n        return uint240(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint232 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint232).\\n     *\\n     * Counterpart to Solidity's `uint232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toUint232(uint256 value) internal pure returns (uint232) {\\n        if (value > type(uint232).max) {\\n            revert SafeCastOverflowedUintDowncast(232, value);\\n        }\\n        return uint232(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint224 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint224).\\n     *\\n     * Counterpart to Solidity's `uint224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toUint224(uint256 value) internal pure returns (uint224) {\\n        if (value > type(uint224).max) {\\n            revert SafeCastOverflowedUintDowncast(224, value);\\n        }\\n        return uint224(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint216 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint216).\\n     *\\n     * Counterpart to Solidity's `uint216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toUint216(uint256 value) internal pure returns (uint216) {\\n        if (value > type(uint216).max) {\\n            revert SafeCastOverflowedUintDowncast(216, value);\\n        }\\n        return uint216(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint208 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint208).\\n     *\\n     * Counterpart to Solidity's `uint208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toUint208(uint256 value) internal pure returns (uint208) {\\n        if (value > type(uint208).max) {\\n            revert SafeCastOverflowedUintDowncast(208, value);\\n        }\\n        return uint208(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint200 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint200).\\n     *\\n     * Counterpart to Solidity's `uint200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toUint200(uint256 value) internal pure returns (uint200) {\\n        if (value > type(uint200).max) {\\n            revert SafeCastOverflowedUintDowncast(200, value);\\n        }\\n        return uint200(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint192 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint192).\\n     *\\n     * Counterpart to Solidity's `uint192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toUint192(uint256 value) internal pure returns (uint192) {\\n        if (value > type(uint192).max) {\\n            revert SafeCastOverflowedUintDowncast(192, value);\\n        }\\n        return uint192(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint184 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint184).\\n     *\\n     * Counterpart to Solidity's `uint184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toUint184(uint256 value) internal pure returns (uint184) {\\n        if (value > type(uint184).max) {\\n            revert SafeCastOverflowedUintDowncast(184, value);\\n        }\\n        return uint184(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint176 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint176).\\n     *\\n     * Counterpart to Solidity's `uint176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toUint176(uint256 value) internal pure returns (uint176) {\\n        if (value > type(uint176).max) {\\n            revert SafeCastOverflowedUintDowncast(176, value);\\n        }\\n        return uint176(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint168 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint168).\\n     *\\n     * Counterpart to Solidity's `uint168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toUint168(uint256 value) internal pure returns (uint168) {\\n        if (value > type(uint168).max) {\\n            revert SafeCastOverflowedUintDowncast(168, value);\\n        }\\n        return uint168(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint160 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint160).\\n     *\\n     * Counterpart to Solidity's `uint160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toUint160(uint256 value) internal pure returns (uint160) {\\n        if (value > type(uint160).max) {\\n            revert SafeCastOverflowedUintDowncast(160, value);\\n        }\\n        return uint160(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint152 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint152).\\n     *\\n     * Counterpart to Solidity's `uint152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toUint152(uint256 value) internal pure returns (uint152) {\\n        if (value > type(uint152).max) {\\n            revert SafeCastOverflowedUintDowncast(152, value);\\n        }\\n        return uint152(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint144 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint144).\\n     *\\n     * Counterpart to Solidity's `uint144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toUint144(uint256 value) internal pure returns (uint144) {\\n        if (value > type(uint144).max) {\\n            revert SafeCastOverflowedUintDowncast(144, value);\\n        }\\n        return uint144(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint136 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint136).\\n     *\\n     * Counterpart to Solidity's `uint136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toUint136(uint256 value) internal pure returns (uint136) {\\n        if (value > type(uint136).max) {\\n            revert SafeCastOverflowedUintDowncast(136, value);\\n        }\\n        return uint136(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint128 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint128).\\n     *\\n     * Counterpart to Solidity's `uint128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toUint128(uint256 value) internal pure returns (uint128) {\\n        if (value > type(uint128).max) {\\n            revert SafeCastOverflowedUintDowncast(128, value);\\n        }\\n        return uint128(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint120 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint120).\\n     *\\n     * Counterpart to Solidity's `uint120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toUint120(uint256 value) internal pure returns (uint120) {\\n        if (value > type(uint120).max) {\\n            revert SafeCastOverflowedUintDowncast(120, value);\\n        }\\n        return uint120(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint112 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint112).\\n     *\\n     * Counterpart to Solidity's `uint112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toUint112(uint256 value) internal pure returns (uint112) {\\n        if (value > type(uint112).max) {\\n            revert SafeCastOverflowedUintDowncast(112, value);\\n        }\\n        return uint112(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint104 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint104).\\n     *\\n     * Counterpart to Solidity's `uint104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toUint104(uint256 value) internal pure returns (uint104) {\\n        if (value > type(uint104).max) {\\n            revert SafeCastOverflowedUintDowncast(104, value);\\n        }\\n        return uint104(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint96 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint96).\\n     *\\n     * Counterpart to Solidity's `uint96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toUint96(uint256 value) internal pure returns (uint96) {\\n        if (value > type(uint96).max) {\\n            revert SafeCastOverflowedUintDowncast(96, value);\\n        }\\n        return uint96(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint88 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint88).\\n     *\\n     * Counterpart to Solidity's `uint88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toUint88(uint256 value) internal pure returns (uint88) {\\n        if (value > type(uint88).max) {\\n            revert SafeCastOverflowedUintDowncast(88, value);\\n        }\\n        return uint88(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint80 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint80).\\n     *\\n     * Counterpart to Solidity's `uint80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toUint80(uint256 value) internal pure returns (uint80) {\\n        if (value > type(uint80).max) {\\n            revert SafeCastOverflowedUintDowncast(80, value);\\n        }\\n        return uint80(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint72 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint72).\\n     *\\n     * Counterpart to Solidity's `uint72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toUint72(uint256 value) internal pure returns (uint72) {\\n        if (value > type(uint72).max) {\\n            revert SafeCastOverflowedUintDowncast(72, value);\\n        }\\n        return uint72(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint64 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint64).\\n     *\\n     * Counterpart to Solidity's `uint64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toUint64(uint256 value) internal pure returns (uint64) {\\n        if (value > type(uint64).max) {\\n            revert SafeCastOverflowedUintDowncast(64, value);\\n        }\\n        return uint64(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint56 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint56).\\n     *\\n     * Counterpart to Solidity's `uint56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toUint56(uint256 value) internal pure returns (uint56) {\\n        if (value > type(uint56).max) {\\n            revert SafeCastOverflowedUintDowncast(56, value);\\n        }\\n        return uint56(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint48 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint48).\\n     *\\n     * Counterpart to Solidity's `uint48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toUint48(uint256 value) internal pure returns (uint48) {\\n        if (value > type(uint48).max) {\\n            revert SafeCastOverflowedUintDowncast(48, value);\\n        }\\n        return uint48(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint40 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint40).\\n     *\\n     * Counterpart to Solidity's `uint40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toUint40(uint256 value) internal pure returns (uint40) {\\n        if (value > type(uint40).max) {\\n            revert SafeCastOverflowedUintDowncast(40, value);\\n        }\\n        return uint40(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint32 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint32).\\n     *\\n     * Counterpart to Solidity's `uint32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toUint32(uint256 value) internal pure returns (uint32) {\\n        if (value > type(uint32).max) {\\n            revert SafeCastOverflowedUintDowncast(32, value);\\n        }\\n        return uint32(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint24 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint24).\\n     *\\n     * Counterpart to Solidity's `uint24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toUint24(uint256 value) internal pure returns (uint24) {\\n        if (value > type(uint24).max) {\\n            revert SafeCastOverflowedUintDowncast(24, value);\\n        }\\n        return uint24(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint16 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint16).\\n     *\\n     * Counterpart to Solidity's `uint16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toUint16(uint256 value) internal pure returns (uint16) {\\n        if (value > type(uint16).max) {\\n            revert SafeCastOverflowedUintDowncast(16, value);\\n        }\\n        return uint16(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint8 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint8).\\n     *\\n     * Counterpart to Solidity's `uint8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toUint8(uint256 value) internal pure returns (uint8) {\\n        if (value > type(uint8).max) {\\n            revert SafeCastOverflowedUintDowncast(8, value);\\n        }\\n        return uint8(value);\\n    }\\n\\n    /**\\n     * @dev Converts a signed int256 into an unsigned uint256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be greater than or equal to 0.\\n     */\\n    function toUint256(int256 value) internal pure returns (uint256) {\\n        if (value < 0) {\\n            revert SafeCastOverflowedIntToUint(value);\\n        }\\n        return uint256(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int248 from int256, reverting on\\n     * overflow (when the input is less than smallest int248 or\\n     * greater than largest int248).\\n     *\\n     * Counterpart to Solidity's `int248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n        downcasted = int248(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(248, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int240 from int256, reverting on\\n     * overflow (when the input is less than smallest int240 or\\n     * greater than largest int240).\\n     *\\n     * Counterpart to Solidity's `int240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n        downcasted = int240(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(240, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int232 from int256, reverting on\\n     * overflow (when the input is less than smallest int232 or\\n     * greater than largest int232).\\n     *\\n     * Counterpart to Solidity's `int232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n        downcasted = int232(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(232, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int224 from int256, reverting on\\n     * overflow (when the input is less than smallest int224 or\\n     * greater than largest int224).\\n     *\\n     * Counterpart to Solidity's `int224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n        downcasted = int224(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(224, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int216 from int256, reverting on\\n     * overflow (when the input is less than smallest int216 or\\n     * greater than largest int216).\\n     *\\n     * Counterpart to Solidity's `int216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n        downcasted = int216(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(216, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int208 from int256, reverting on\\n     * overflow (when the input is less than smallest int208 or\\n     * greater than largest int208).\\n     *\\n     * Counterpart to Solidity's `int208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n        downcasted = int208(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(208, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int200 from int256, reverting on\\n     * overflow (when the input is less than smallest int200 or\\n     * greater than largest int200).\\n     *\\n     * Counterpart to Solidity's `int200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n        downcasted = int200(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(200, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int192 from int256, reverting on\\n     * overflow (when the input is less than smallest int192 or\\n     * greater than largest int192).\\n     *\\n     * Counterpart to Solidity's `int192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n        downcasted = int192(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(192, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int184 from int256, reverting on\\n     * overflow (when the input is less than smallest int184 or\\n     * greater than largest int184).\\n     *\\n     * Counterpart to Solidity's `int184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n        downcasted = int184(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(184, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int176 from int256, reverting on\\n     * overflow (when the input is less than smallest int176 or\\n     * greater than largest int176).\\n     *\\n     * Counterpart to Solidity's `int176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n        downcasted = int176(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(176, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int168 from int256, reverting on\\n     * overflow (when the input is less than smallest int168 or\\n     * greater than largest int168).\\n     *\\n     * Counterpart to Solidity's `int168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n        downcasted = int168(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(168, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int160 from int256, reverting on\\n     * overflow (when the input is less than smallest int160 or\\n     * greater than largest int160).\\n     *\\n     * Counterpart to Solidity's `int160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n        downcasted = int160(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(160, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int152 from int256, reverting on\\n     * overflow (when the input is less than smallest int152 or\\n     * greater than largest int152).\\n     *\\n     * Counterpart to Solidity's `int152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n        downcasted = int152(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(152, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int144 from int256, reverting on\\n     * overflow (when the input is less than smallest int144 or\\n     * greater than largest int144).\\n     *\\n     * Counterpart to Solidity's `int144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n        downcasted = int144(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(144, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int136 from int256, reverting on\\n     * overflow (when the input is less than smallest int136 or\\n     * greater than largest int136).\\n     *\\n     * Counterpart to Solidity's `int136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n        downcasted = int136(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(136, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int128 from int256, reverting on\\n     * overflow (when the input is less than smallest int128 or\\n     * greater than largest int128).\\n     *\\n     * Counterpart to Solidity's `int128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n        downcasted = int128(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(128, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int120 from int256, reverting on\\n     * overflow (when the input is less than smallest int120 or\\n     * greater than largest int120).\\n     *\\n     * Counterpart to Solidity's `int120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n        downcasted = int120(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(120, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int112 from int256, reverting on\\n     * overflow (when the input is less than smallest int112 or\\n     * greater than largest int112).\\n     *\\n     * Counterpart to Solidity's `int112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n        downcasted = int112(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(112, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int104 from int256, reverting on\\n     * overflow (when the input is less than smallest int104 or\\n     * greater than largest int104).\\n     *\\n     * Counterpart to Solidity's `int104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n        downcasted = int104(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(104, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int96 from int256, reverting on\\n     * overflow (when the input is less than smallest int96 or\\n     * greater than largest int96).\\n     *\\n     * Counterpart to Solidity's `int96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n        downcasted = int96(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(96, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int88 from int256, reverting on\\n     * overflow (when the input is less than smallest int88 or\\n     * greater than largest int88).\\n     *\\n     * Counterpart to Solidity's `int88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n        downcasted = int88(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(88, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int80 from int256, reverting on\\n     * overflow (when the input is less than smallest int80 or\\n     * greater than largest int80).\\n     *\\n     * Counterpart to Solidity's `int80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n        downcasted = int80(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(80, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int72 from int256, reverting on\\n     * overflow (when the input is less than smallest int72 or\\n     * greater than largest int72).\\n     *\\n     * Counterpart to Solidity's `int72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n        downcasted = int72(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(72, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int64 from int256, reverting on\\n     * overflow (when the input is less than smallest int64 or\\n     * greater than largest int64).\\n     *\\n     * Counterpart to Solidity's `int64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n        downcasted = int64(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(64, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int56 from int256, reverting on\\n     * overflow (when the input is less than smallest int56 or\\n     * greater than largest int56).\\n     *\\n     * Counterpart to Solidity's `int56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n        downcasted = int56(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(56, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int48 from int256, reverting on\\n     * overflow (when the input is less than smallest int48 or\\n     * greater than largest int48).\\n     *\\n     * Counterpart to Solidity's `int48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n        downcasted = int48(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(48, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int40 from int256, reverting on\\n     * overflow (when the input is less than smallest int40 or\\n     * greater than largest int40).\\n     *\\n     * Counterpart to Solidity's `int40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n        downcasted = int40(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(40, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int32 from int256, reverting on\\n     * overflow (when the input is less than smallest int32 or\\n     * greater than largest int32).\\n     *\\n     * Counterpart to Solidity's `int32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n        downcasted = int32(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(32, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int24 from int256, reverting on\\n     * overflow (when the input is less than smallest int24 or\\n     * greater than largest int24).\\n     *\\n     * Counterpart to Solidity's `int24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n        downcasted = int24(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(24, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int16 from int256, reverting on\\n     * overflow (when the input is less than smallest int16 or\\n     * greater than largest int16).\\n     *\\n     * Counterpart to Solidity's `int16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n        downcasted = int16(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(16, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int8 from int256, reverting on\\n     * overflow (when the input is less than smallest int8 or\\n     * greater than largest int8).\\n     *\\n     * Counterpart to Solidity's `int8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n        downcasted = int8(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(8, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts an unsigned uint256 into a signed int256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be less than or equal to maxInt256.\\n     */\\n    function toInt256(uint256 value) internal pure returns (int256) {\\n        // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n        if (value > uint256(type(int256).max)) {\\n            revert SafeCastOverflowedUintToInt(value);\\n        }\\n        return int256(value);\\n    }\\n\\n    /**\\n     * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\\n     */\\n    function toUint(bool b) internal pure returns (uint256 u) {\\n        assembly (\\\"memory-safe\\\") {\\n            u := iszero(iszero(b))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {SafeCast} from \\\"./SafeCast.sol\\\";\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n    /**\\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\\n     *\\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\\n     * one branch when needed, making this function more expensive.\\n     */\\n    function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {\\n        unchecked {\\n            // branchless ternary works because:\\n            // b ^ (a ^ b) == a\\n            // b ^ 0 == b\\n            return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the largest of two signed numbers.\\n     */\\n    function max(int256 a, int256 b) internal pure returns (int256) {\\n        return ternary(a > b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two signed numbers.\\n     */\\n    function min(int256 a, int256 b) internal pure returns (int256) {\\n        return ternary(a < b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the average of two signed numbers without overflow.\\n     * The result is rounded towards zero.\\n     */\\n    function average(int256 a, int256 b) internal pure returns (int256) {\\n        // Formula from the book \\\"Hacker's Delight\\\"\\n        int256 x = (a & b) + ((a ^ b) >> 1);\\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\\n    }\\n\\n    /**\\n     * @dev Returns the absolute unsigned value of a signed value.\\n     */\\n    function abs(int256 n) internal pure returns (uint256) {\\n        unchecked {\\n            // Formula from the \\\"Bit Twiddling Hacks\\\" by Sean Eron Anderson.\\n            // Since `n` is a signed integer, the generated bytecode will use the SAR opcode to perform the right shift,\\n            // taking advantage of the most significant (or \\\"sign\\\" bit) in two's complement representation.\\n            // This opcode adds new most significant bits set to the value of the previous most significant bit. As a result,\\n            // the mask will either be `bytes32(0)` (if n is positive) or `~bytes32(0)` (if n is negative).\\n            int256 mask = n >> 255;\\n\\n            // A `bytes32(0)` mask leaves the input unchanged, while a `~bytes32(0)` mask complements it.\\n            return uint256((n + mask) ^ mask);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/ERC6551Account.sol":{"ERC6551Account":{"abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint8","name":"operation","type":"uint8"}],"name":"execute","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"isValidSigner","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"author":"ERC6551 Team","kind":"dev","methods":{"execute(address,uint256,bytes,uint8)":{"details":"Executes a transaction from the token owner"},"initialize(uint256,address,uint256)":{"details":"Initialization function that stores token data This is called by the registry during account creation"},"isValidSignature(bytes32,bytes)":{"details":"Validates signatures according to ERC-1271"},"isValidSigner(address,bytes)":{"details":"Validates if a signer is authorized to perform actions"},"supportsInterface(bytes4)":{"details":"Implements interface detection"},"token()":{"details":"Returns the token bound to this account"}},"stateVariables":{"TOKEN_DATA_SLOT":{"details":"Storage slot for token data This is written during initialization by the registry Structure: chainId (uint256), tokenContract (address), tokenId (uint256)"},"state":{"details":"Account state nonce, incremented on each transaction"}},"title":"A simple implementation of ERC6551Account","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b50610d9f8061001f6000396000f3fe6080604052600436106100745760003560e01c8063523e32601161004e578063523e32601461010e578063c19d93fb1461012e578063fc0c546a14610152578063fffb5183146101e857600080fd5b806301ffc9a7146100805780631626ba7e146100b557806351945447146100ee57600080fd5b3661007b57005b600080fd5b34801561008c57600080fd5b506100a061009b3660046109a0565b61020a565b60405190151581526020015b60405180910390f35b3480156100c157600080fd5b506100d56100d03660046109e0565b61025c565b6040516001600160e01b031990911681526020016100ac565b6101016100fc366004610b04565b61037d565b6040516100ac9190610bce565b34801561011a57600080fd5b506100d5610129366004610be1565b610589565b34801561013a57600080fd5b5061014460005481565b6040519081526020016100ac565b34801561015e57600080fd5b507f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f0547f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f1547f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f254604080519384526001600160a01b039092166020840152908201526060016100ac565b3480156101f457600080fd5b50610208610203366004610c36565b6105b2565b005b60006001600160e01b031982166301ffc9a760e01b148061023b57506001600160e01b03198216636faff5f160e01b145b8061025657506001600160e01b03198216635194544760e01b145b92915050565b600080600080306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156102a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c49190610c6e565b9250925092504683146102de575060009250610256915050565b6040516331a9108f60e11b8152600481018290526000906001600160a01b03841690636352211e90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610ca9565b905061035781888861062d565b156103705750630b135d3f60e11b935061025692505050565b5060009695505050505050565b6060610388336106a1565b6103ca5760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b60448201526064015b60405180910390fd5b60008081546103d890610cc6565b9091555060ff821660000361049057600080876001600160a01b0316878787604051610405929190610ced565b60006040518083038185875af1925050503d8060008114610442576040519150601f19603f3d011682016040523d82523d6000602084013e610447565b606091505b5091509150816104875760405162461bcd60e51b815260206004820152600b60248201526a10d85b1b0819985a5b195960aa1b60448201526064016103c1565b91506105809050565b8160ff1660010361054057600080876001600160a01b031686866040516104b8929190610ced565b600060405180830381855af49150503d80600081146104f3576040519150601f19603f3d011682016040523d82523d6000602084013e6104f8565b606091505b5091509150816104875760405162461bcd60e51b815260206004820152601360248201527211195b1959d85d1958d85b1b0819985a5b1959606a1b60448201526064016103c1565b60405162461bcd60e51b81526020600482015260156024820152742ab739bab83837b93a32b21037b832b930ba34b7b760591b60448201526064016103c1565b95945050505050565b6000610594846106a1565b156105a75750630291f19360e51b6105ab565b5060005b9392505050565b7f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f0805480156106195760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016103c1565b509283556001830191909155600290910155565b6000836001600160a01b03163b60000361068f5760008061064e85856107a8565b509092509050600081600381111561066857610668610cfd565b1480156106865750856001600160a01b0316826001600160a01b0316145b925050506105ab565b61069a8484846107f5565b90506105ab565b600080600080306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156106e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107099190610c6e565b92509250925046831461072157506000949350505050565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a9190610ca9565b6001600160a01b0316856001600160a01b0316149350505050919050565b600080600083516041036107e25760208401516040850151606086015160001a6107d4888285856108d1565b9550955095505050506107ee565b50508151600091506002905b9250925092565b6000806000856001600160a01b03168585604051602401610817929190610d13565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b1790525161084c9190610d34565b600060405180830381855afa9150503d8060008114610887576040519150601f19603f3d011682016040523d82523d6000602084013e61088c565b606091505b50915091508180156108a057506020815110155b80156108c757508051630b135d3f60e11b906108c59083016020908101908401610d50565b145b9695505050505050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561090c5750600091506003905082610996565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610960573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661098c57506000925060019150829050610996565b9250600091508190505b9450945094915050565b6000602082840312156109b257600080fd5b81356001600160e01b0319811681146105ab57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080604083850312156109f357600080fd5b82359150602083013567ffffffffffffffff811115610a1157600080fd5b8301601f81018513610a2257600080fd5b803567ffffffffffffffff811115610a3c57610a3c6109ca565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610a6b57610a6b6109ca565b604052818152828201602001871015610a8357600080fd5b816020840160208301376000602083830101528093505050509250929050565b6001600160a01b0381168114610ab857600080fd5b50565b60008083601f840112610acd57600080fd5b50813567ffffffffffffffff811115610ae557600080fd5b602083019150836020828501011115610afd57600080fd5b9250929050565b600080600080600060808688031215610b1c57600080fd5b8535610b2781610aa3565b945060208601359350604086013567ffffffffffffffff811115610b4a57600080fd5b610b5688828901610abb565b909450925050606086013560ff81168114610b7057600080fd5b809150509295509295909350565b60005b83811015610b99578181015183820152602001610b81565b50506000910152565b60008151808452610bba816020860160208601610b7e565b601f01601f19169290920160200192915050565b6020815260006105ab6020830184610ba2565b600080600060408486031215610bf657600080fd5b8335610c0181610aa3565b9250602084013567ffffffffffffffff811115610c1d57600080fd5b610c2986828701610abb565b9497909650939450505050565b600080600060608486031215610c4b57600080fd5b833592506020840135610c5d81610aa3565b929592945050506040919091013590565b600080600060608486031215610c8357600080fd5b83516020850151909350610c9681610aa3565b6040949094015192959394509192915050565b600060208284031215610cbb57600080fd5b81516105ab81610aa3565b600060018201610ce657634e487b7160e01b600052601160045260246000fd5b5060010190565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000610d2c6040830184610ba2565b949350505050565b60008251610d46818460208701610b7e565b9190910192915050565b600060208284031215610d6257600080fd5b505191905056fea264697066735822122053f83b5c2f31a20b1c092914a77c98c02135788dec899ae55b79c469826dca3964736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD9F DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x74 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x523E3260 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x523E3260 EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0xC19D93FB EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0xFFFB5183 EQ PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x51945447 EQ PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x7B JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x9A0 JUMP JUMPDEST PUSH2 0x20A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD5 PUSH2 0xD0 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E0 JUMP JUMPDEST PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0x101 PUSH2 0xFC CALLDATASIZE PUSH1 0x4 PUSH2 0xB04 JUMP JUMPDEST PUSH2 0x37D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0xBCE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD5 PUSH2 0x129 CALLDATASIZE PUSH1 0x4 PUSH2 0xBE1 JUMP JUMPDEST PUSH2 0x589 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x144 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F0 SLOAD PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F1 SLOAD PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F2 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0xAC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x203 CALLDATASIZE PUSH1 0x4 PUSH2 0xC36 JUMP JUMPDEST PUSH2 0x5B2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x23B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6FAFF5F1 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x256 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x51945447 PUSH1 0xE0 SHL EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C4 SWAP2 SWAP1 PUSH2 0xC6E JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x2DE JUMPI POP PUSH1 0x0 SWAP3 POP PUSH2 0x256 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x326 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x34A SWAP2 SWAP1 PUSH2 0xCA9 JUMP JUMPDEST SWAP1 POP PUSH2 0x357 DUP2 DUP9 DUP9 PUSH2 0x62D JUMP JUMPDEST ISZERO PUSH2 0x370 JUMPI POP PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP4 POP PUSH2 0x256 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x388 CALLER PUSH2 0x6A1 JUMP JUMPDEST PUSH2 0x3CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD PUSH2 0x3D8 SWAP1 PUSH2 0xCC6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0xFF DUP3 AND PUSH1 0x0 SUB PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x405 SWAP3 SWAP2 SWAP1 PUSH2 0xCED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x442 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x447 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x487 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x10D85B1B0819985A5B1959 PUSH1 0xAA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3C1 JUMP JUMPDEST SWAP2 POP PUSH2 0x580 SWAP1 POP JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 SUB PUSH2 0x540 JUMPI PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x4B8 SWAP3 SWAP2 SWAP1 PUSH2 0xCED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4F3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4F8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x487 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x11195B1959D85D1958D85B1B0819985A5B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x2AB739BAB83837B93A32B21037B832B930BA34B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3C1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x594 DUP5 PUSH2 0x6A1 JUMP JUMPDEST ISZERO PUSH2 0x5A7 JUMPI POP PUSH4 0x291F193 PUSH1 0xE5 SHL PUSH2 0x5AB JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F0 DUP1 SLOAD DUP1 ISZERO PUSH2 0x619 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x105B1C9958591E481A5B9A5D1A585B1A5E9959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3C1 JUMP JUMPDEST POP SWAP3 DUP4 SSTORE PUSH1 0x1 DUP4 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 PUSH2 0x64E DUP6 DUP6 PUSH2 0x7A8 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x668 JUMPI PUSH2 0x668 PUSH2 0xCFD JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x686 JUMPI POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP3 POP POP POP PUSH2 0x5AB JUMP JUMPDEST PUSH2 0x69A DUP5 DUP5 DUP5 PUSH2 0x7F5 JUMP JUMPDEST SWAP1 POP PUSH2 0x5AB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x709 SWAP2 SWAP1 PUSH2 0xC6E JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x721 JUMPI POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x766 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x78A SWAP2 SWAP1 PUSH2 0xCA9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x7E2 JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x7D4 DUP9 DUP3 DUP6 DUP6 PUSH2 0x8D1 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x7EE JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x817 SWAP3 SWAP2 SWAP1 PUSH2 0xD13 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB135D3F PUSH1 0xE1 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x84C SWAP2 SWAP1 PUSH2 0xD34 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x887 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x88C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x8A0 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x8C7 JUMPI POP DUP1 MLOAD PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 PUSH2 0x8C5 SWAP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP5 ADD PUSH2 0xD50 JUMP JUMPDEST EQ JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT ISZERO PUSH2 0x90C JUMPI POP PUSH1 0x0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0x996 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x960 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x98C JUMPI POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0x996 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x5AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0xA22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA3C JUMPI PUSH2 0xA3C PUSH2 0x9CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xA6B JUMPI PUSH2 0xA6B PUSH2 0x9CA JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0xA83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xAB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xACD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xAFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xB1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xB27 DUP2 PUSH2 0xAA3 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB56 DUP9 DUP3 DUP10 ADD PUSH2 0xABB JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xB70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB99 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB81 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xBBA DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xB7E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x5AB PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xBA2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xBF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xC01 DUP2 PUSH2 0xAA3 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC29 DUP7 DUP3 DUP8 ADD PUSH2 0xABB JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xC4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xC5D DUP2 PUSH2 0xAA3 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xC83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0xC96 DUP2 PUSH2 0xAA3 JUMP JUMPDEST PUSH1 0x40 SWAP5 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP6 SWAP4 SWAP5 POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x5AB DUP2 PUSH2 0xAA3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0xCE6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xD2C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xBA2 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xD46 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xB7E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 0xF8 EXTCODESIZE TLOAD 0x2F BALANCE LOG2 SIGNEXTEND SHR MULMOD 0x29 EQ 0xA7 PUSH29 0x98C02135788DEC899AE55B79C469826DCA3964736F6C634300081C0033 ","sourceMap":"488:4236:56:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_12192":{"entryPoint":null,"id":12192,"parameterSlots":0,"returnSlots":0},"@_isValidSigner_12458":{"entryPoint":1697,"id":12458,"parameterSlots":1,"returnSlots":1},"@execute_12267":{"entryPoint":893,"id":12267,"parameterSlots":5,"returnSlots":1},"@initialize_12310":{"entryPoint":1458,"id":12310,"parameterSlots":3,"returnSlots":0},"@isValidERC1271SignatureNow_8594":{"entryPoint":2037,"id":8594,"parameterSlots":3,"returnSlots":1},"@isValidSignatureNow_8542":{"entryPoint":1581,"id":8542,"parameterSlots":3,"returnSlots":1},"@isValidSignature_12392":{"entryPoint":604,"id":12392,"parameterSlots":2,"returnSlots":1},"@isValidSigner_12335":{"entryPoint":1417,"id":12335,"parameterSlots":3,"returnSlots":1},"@state_12181":{"entryPoint":null,"id":12181,"parameterSlots":0,"returnSlots":0},"@supportsInterface_12423":{"entryPoint":522,"id":12423,"parameterSlots":1,"returnSlots":1},"@token_12283":{"entryPoint":null,"id":12283,"parameterSlots":0,"returnSlots":3},"@tryRecover_8213":{"entryPoint":1960,"id":8213,"parameterSlots":2,"returnSlots":3},"@tryRecover_8401":{"entryPoint":2257,"id":8401,"parameterSlots":4,"returnSlots":3},"abi_decode_bytes_calldata":{"entryPoint":2747,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":3241,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_calldata_ptr":{"entryPoint":3041,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_uint8":{"entryPoint":2820,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":3408,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_bytes_memory_ptr":{"entryPoint":2528,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":2464,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_addresst_uint256":{"entryPoint":3126,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint256t_addresst_uint256_fromMemory":{"entryPoint":3182,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_bytes":{"entryPoint":2978,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3309,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3380,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":3347,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":3022,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_066ad49a0ed9e5d6a9f3c20fca13a038f0a5d629f0aaf09d634ae2a7c232ac2b__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d7c7d2b236b51fd89629e4d9859becd69328dedbd10a2b39b9506664e672e4f5__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f359bfbeef909164abd0bd7bf77897770685caeb4aad15b1df64fe1f5028d5eb__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2942,"id":null,"parameterSlots":3,"returnSlots":0},"increment_t_uint256":{"entryPoint":3270,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x21":{"entryPoint":3325,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2506,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":2723,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:9787:66","nodeType":"YulBlock","src":"0:9787:66","statements":[{"nativeSrc":"6:3:66","nodeType":"YulBlock","src":"6:3:66","statements":[]},{"body":{"nativeSrc":"83:217:66","nodeType":"YulBlock","src":"83:217:66","statements":[{"body":{"nativeSrc":"129:16:66","nodeType":"YulBlock","src":"129:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"138:1:66","nodeType":"YulLiteral","src":"138:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"141:1:66","nodeType":"YulLiteral","src":"141:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"131:6:66","nodeType":"YulIdentifier","src":"131:6:66"},"nativeSrc":"131:12:66","nodeType":"YulFunctionCall","src":"131:12:66"},"nativeSrc":"131:12:66","nodeType":"YulExpressionStatement","src":"131:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"104:7:66","nodeType":"YulIdentifier","src":"104:7:66"},{"name":"headStart","nativeSrc":"113:9:66","nodeType":"YulIdentifier","src":"113:9:66"}],"functionName":{"name":"sub","nativeSrc":"100:3:66","nodeType":"YulIdentifier","src":"100:3:66"},"nativeSrc":"100:23:66","nodeType":"YulFunctionCall","src":"100:23:66"},{"kind":"number","nativeSrc":"125:2:66","nodeType":"YulLiteral","src":"125:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"96:3:66","nodeType":"YulIdentifier","src":"96:3:66"},"nativeSrc":"96:32:66","nodeType":"YulFunctionCall","src":"96:32:66"},"nativeSrc":"93:52:66","nodeType":"YulIf","src":"93:52:66"},{"nativeSrc":"154:36:66","nodeType":"YulVariableDeclaration","src":"154:36:66","value":{"arguments":[{"name":"headStart","nativeSrc":"180:9:66","nodeType":"YulIdentifier","src":"180:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"167:12:66","nodeType":"YulIdentifier","src":"167:12:66"},"nativeSrc":"167:23:66","nodeType":"YulFunctionCall","src":"167:23:66"},"variables":[{"name":"value","nativeSrc":"158:5:66","nodeType":"YulTypedName","src":"158:5:66","type":""}]},{"body":{"nativeSrc":"254:16:66","nodeType":"YulBlock","src":"254:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"263:1:66","nodeType":"YulLiteral","src":"263:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"266:1:66","nodeType":"YulLiteral","src":"266:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"256:6:66","nodeType":"YulIdentifier","src":"256:6:66"},"nativeSrc":"256:12:66","nodeType":"YulFunctionCall","src":"256:12:66"},"nativeSrc":"256:12:66","nodeType":"YulExpressionStatement","src":"256:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"212:5:66","nodeType":"YulIdentifier","src":"212:5:66"},{"arguments":[{"name":"value","nativeSrc":"223:5:66","nodeType":"YulIdentifier","src":"223:5:66"},{"arguments":[{"kind":"number","nativeSrc":"234:3:66","nodeType":"YulLiteral","src":"234:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"239:10:66","nodeType":"YulLiteral","src":"239:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"230:3:66","nodeType":"YulIdentifier","src":"230:3:66"},"nativeSrc":"230:20:66","nodeType":"YulFunctionCall","src":"230:20:66"}],"functionName":{"name":"and","nativeSrc":"219:3:66","nodeType":"YulIdentifier","src":"219:3:66"},"nativeSrc":"219:32:66","nodeType":"YulFunctionCall","src":"219:32:66"}],"functionName":{"name":"eq","nativeSrc":"209:2:66","nodeType":"YulIdentifier","src":"209:2:66"},"nativeSrc":"209:43:66","nodeType":"YulFunctionCall","src":"209:43:66"}],"functionName":{"name":"iszero","nativeSrc":"202:6:66","nodeType":"YulIdentifier","src":"202:6:66"},"nativeSrc":"202:51:66","nodeType":"YulFunctionCall","src":"202:51:66"},"nativeSrc":"199:71:66","nodeType":"YulIf","src":"199:71:66"},{"nativeSrc":"279:15:66","nodeType":"YulAssignment","src":"279:15:66","value":{"name":"value","nativeSrc":"289:5:66","nodeType":"YulIdentifier","src":"289:5:66"},"variableNames":[{"name":"value0","nativeSrc":"279:6:66","nodeType":"YulIdentifier","src":"279:6:66"}]}]},"name":"abi_decode_tuple_t_bytes4","nativeSrc":"14:286:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"49:9:66","nodeType":"YulTypedName","src":"49:9:66","type":""},{"name":"dataEnd","nativeSrc":"60:7:66","nodeType":"YulTypedName","src":"60:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"72:6:66","nodeType":"YulTypedName","src":"72:6:66","type":""}],"src":"14:286:66"},{"body":{"nativeSrc":"400:92:66","nodeType":"YulBlock","src":"400:92:66","statements":[{"nativeSrc":"410:26:66","nodeType":"YulAssignment","src":"410:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"422:9:66","nodeType":"YulIdentifier","src":"422:9:66"},{"kind":"number","nativeSrc":"433:2:66","nodeType":"YulLiteral","src":"433:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"418:3:66","nodeType":"YulIdentifier","src":"418:3:66"},"nativeSrc":"418:18:66","nodeType":"YulFunctionCall","src":"418:18:66"},"variableNames":[{"name":"tail","nativeSrc":"410:4:66","nodeType":"YulIdentifier","src":"410:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"452:9:66","nodeType":"YulIdentifier","src":"452:9:66"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"477:6:66","nodeType":"YulIdentifier","src":"477:6:66"}],"functionName":{"name":"iszero","nativeSrc":"470:6:66","nodeType":"YulIdentifier","src":"470:6:66"},"nativeSrc":"470:14:66","nodeType":"YulFunctionCall","src":"470:14:66"}],"functionName":{"name":"iszero","nativeSrc":"463:6:66","nodeType":"YulIdentifier","src":"463:6:66"},"nativeSrc":"463:22:66","nodeType":"YulFunctionCall","src":"463:22:66"}],"functionName":{"name":"mstore","nativeSrc":"445:6:66","nodeType":"YulIdentifier","src":"445:6:66"},"nativeSrc":"445:41:66","nodeType":"YulFunctionCall","src":"445:41:66"},"nativeSrc":"445:41:66","nodeType":"YulExpressionStatement","src":"445:41:66"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"305:187:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"369:9:66","nodeType":"YulTypedName","src":"369:9:66","type":""},{"name":"value0","nativeSrc":"380:6:66","nodeType":"YulTypedName","src":"380:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"391:4:66","nodeType":"YulTypedName","src":"391:4:66","type":""}],"src":"305:187:66"},{"body":{"nativeSrc":"529:95:66","nodeType":"YulBlock","src":"529:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"546:1:66","nodeType":"YulLiteral","src":"546:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"553:3:66","nodeType":"YulLiteral","src":"553:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"558:10:66","nodeType":"YulLiteral","src":"558:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"549:3:66","nodeType":"YulIdentifier","src":"549:3:66"},"nativeSrc":"549:20:66","nodeType":"YulFunctionCall","src":"549:20:66"}],"functionName":{"name":"mstore","nativeSrc":"539:6:66","nodeType":"YulIdentifier","src":"539:6:66"},"nativeSrc":"539:31:66","nodeType":"YulFunctionCall","src":"539:31:66"},"nativeSrc":"539:31:66","nodeType":"YulExpressionStatement","src":"539:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"586:1:66","nodeType":"YulLiteral","src":"586:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"589:4:66","nodeType":"YulLiteral","src":"589:4:66","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"579:6:66","nodeType":"YulIdentifier","src":"579:6:66"},"nativeSrc":"579:15:66","nodeType":"YulFunctionCall","src":"579:15:66"},"nativeSrc":"579:15:66","nodeType":"YulExpressionStatement","src":"579:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"610:1:66","nodeType":"YulLiteral","src":"610:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"613:4:66","nodeType":"YulLiteral","src":"613:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"603:6:66","nodeType":"YulIdentifier","src":"603:6:66"},"nativeSrc":"603:15:66","nodeType":"YulFunctionCall","src":"603:15:66"},"nativeSrc":"603:15:66","nodeType":"YulExpressionStatement","src":"603:15:66"}]},"name":"panic_error_0x41","nativeSrc":"497:127:66","nodeType":"YulFunctionDefinition","src":"497:127:66"},{"body":{"nativeSrc":"725:916:66","nodeType":"YulBlock","src":"725:916:66","statements":[{"body":{"nativeSrc":"771:16:66","nodeType":"YulBlock","src":"771:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"780:1:66","nodeType":"YulLiteral","src":"780:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"783:1:66","nodeType":"YulLiteral","src":"783:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"773:6:66","nodeType":"YulIdentifier","src":"773:6:66"},"nativeSrc":"773:12:66","nodeType":"YulFunctionCall","src":"773:12:66"},"nativeSrc":"773:12:66","nodeType":"YulExpressionStatement","src":"773:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"746:7:66","nodeType":"YulIdentifier","src":"746:7:66"},{"name":"headStart","nativeSrc":"755:9:66","nodeType":"YulIdentifier","src":"755:9:66"}],"functionName":{"name":"sub","nativeSrc":"742:3:66","nodeType":"YulIdentifier","src":"742:3:66"},"nativeSrc":"742:23:66","nodeType":"YulFunctionCall","src":"742:23:66"},{"kind":"number","nativeSrc":"767:2:66","nodeType":"YulLiteral","src":"767:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"738:3:66","nodeType":"YulIdentifier","src":"738:3:66"},"nativeSrc":"738:32:66","nodeType":"YulFunctionCall","src":"738:32:66"},"nativeSrc":"735:52:66","nodeType":"YulIf","src":"735:52:66"},{"nativeSrc":"796:33:66","nodeType":"YulAssignment","src":"796:33:66","value":{"arguments":[{"name":"headStart","nativeSrc":"819:9:66","nodeType":"YulIdentifier","src":"819:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"806:12:66","nodeType":"YulIdentifier","src":"806:12:66"},"nativeSrc":"806:23:66","nodeType":"YulFunctionCall","src":"806:23:66"},"variableNames":[{"name":"value0","nativeSrc":"796:6:66","nodeType":"YulIdentifier","src":"796:6:66"}]},{"nativeSrc":"838:46:66","nodeType":"YulVariableDeclaration","src":"838:46:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"869:9:66","nodeType":"YulIdentifier","src":"869:9:66"},{"kind":"number","nativeSrc":"880:2:66","nodeType":"YulLiteral","src":"880:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"865:3:66","nodeType":"YulIdentifier","src":"865:3:66"},"nativeSrc":"865:18:66","nodeType":"YulFunctionCall","src":"865:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"852:12:66","nodeType":"YulIdentifier","src":"852:12:66"},"nativeSrc":"852:32:66","nodeType":"YulFunctionCall","src":"852:32:66"},"variables":[{"name":"offset","nativeSrc":"842:6:66","nodeType":"YulTypedName","src":"842:6:66","type":""}]},{"body":{"nativeSrc":"927:16:66","nodeType":"YulBlock","src":"927:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"936:1:66","nodeType":"YulLiteral","src":"936:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"939:1:66","nodeType":"YulLiteral","src":"939:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"929:6:66","nodeType":"YulIdentifier","src":"929:6:66"},"nativeSrc":"929:12:66","nodeType":"YulFunctionCall","src":"929:12:66"},"nativeSrc":"929:12:66","nodeType":"YulExpressionStatement","src":"929:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"899:6:66","nodeType":"YulIdentifier","src":"899:6:66"},{"kind":"number","nativeSrc":"907:18:66","nodeType":"YulLiteral","src":"907:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"896:2:66","nodeType":"YulIdentifier","src":"896:2:66"},"nativeSrc":"896:30:66","nodeType":"YulFunctionCall","src":"896:30:66"},"nativeSrc":"893:50:66","nodeType":"YulIf","src":"893:50:66"},{"nativeSrc":"952:32:66","nodeType":"YulVariableDeclaration","src":"952:32:66","value":{"arguments":[{"name":"headStart","nativeSrc":"966:9:66","nodeType":"YulIdentifier","src":"966:9:66"},{"name":"offset","nativeSrc":"977:6:66","nodeType":"YulIdentifier","src":"977:6:66"}],"functionName":{"name":"add","nativeSrc":"962:3:66","nodeType":"YulIdentifier","src":"962:3:66"},"nativeSrc":"962:22:66","nodeType":"YulFunctionCall","src":"962:22:66"},"variables":[{"name":"_1","nativeSrc":"956:2:66","nodeType":"YulTypedName","src":"956:2:66","type":""}]},{"body":{"nativeSrc":"1032:16:66","nodeType":"YulBlock","src":"1032:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1041:1:66","nodeType":"YulLiteral","src":"1041:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1044:1:66","nodeType":"YulLiteral","src":"1044:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1034:6:66","nodeType":"YulIdentifier","src":"1034:6:66"},"nativeSrc":"1034:12:66","nodeType":"YulFunctionCall","src":"1034:12:66"},"nativeSrc":"1034:12:66","nodeType":"YulExpressionStatement","src":"1034:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1011:2:66","nodeType":"YulIdentifier","src":"1011:2:66"},{"kind":"number","nativeSrc":"1015:4:66","nodeType":"YulLiteral","src":"1015:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1007:3:66","nodeType":"YulIdentifier","src":"1007:3:66"},"nativeSrc":"1007:13:66","nodeType":"YulFunctionCall","src":"1007:13:66"},{"name":"dataEnd","nativeSrc":"1022:7:66","nodeType":"YulIdentifier","src":"1022:7:66"}],"functionName":{"name":"slt","nativeSrc":"1003:3:66","nodeType":"YulIdentifier","src":"1003:3:66"},"nativeSrc":"1003:27:66","nodeType":"YulFunctionCall","src":"1003:27:66"}],"functionName":{"name":"iszero","nativeSrc":"996:6:66","nodeType":"YulIdentifier","src":"996:6:66"},"nativeSrc":"996:35:66","nodeType":"YulFunctionCall","src":"996:35:66"},"nativeSrc":"993:55:66","nodeType":"YulIf","src":"993:55:66"},{"nativeSrc":"1057:30:66","nodeType":"YulVariableDeclaration","src":"1057:30:66","value":{"arguments":[{"name":"_1","nativeSrc":"1084:2:66","nodeType":"YulIdentifier","src":"1084:2:66"}],"functionName":{"name":"calldataload","nativeSrc":"1071:12:66","nodeType":"YulIdentifier","src":"1071:12:66"},"nativeSrc":"1071:16:66","nodeType":"YulFunctionCall","src":"1071:16:66"},"variables":[{"name":"length","nativeSrc":"1061:6:66","nodeType":"YulTypedName","src":"1061:6:66","type":""}]},{"body":{"nativeSrc":"1130:22:66","nodeType":"YulBlock","src":"1130:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1132:16:66","nodeType":"YulIdentifier","src":"1132:16:66"},"nativeSrc":"1132:18:66","nodeType":"YulFunctionCall","src":"1132:18:66"},"nativeSrc":"1132:18:66","nodeType":"YulExpressionStatement","src":"1132:18:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1102:6:66","nodeType":"YulIdentifier","src":"1102:6:66"},{"kind":"number","nativeSrc":"1110:18:66","nodeType":"YulLiteral","src":"1110:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1099:2:66","nodeType":"YulIdentifier","src":"1099:2:66"},"nativeSrc":"1099:30:66","nodeType":"YulFunctionCall","src":"1099:30:66"},"nativeSrc":"1096:56:66","nodeType":"YulIf","src":"1096:56:66"},{"nativeSrc":"1161:23:66","nodeType":"YulVariableDeclaration","src":"1161:23:66","value":{"arguments":[{"kind":"number","nativeSrc":"1181:2:66","nodeType":"YulLiteral","src":"1181:2:66","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"1175:5:66","nodeType":"YulIdentifier","src":"1175:5:66"},"nativeSrc":"1175:9:66","nodeType":"YulFunctionCall","src":"1175:9:66"},"variables":[{"name":"memPtr","nativeSrc":"1165:6:66","nodeType":"YulTypedName","src":"1165:6:66","type":""}]},{"nativeSrc":"1193:85:66","nodeType":"YulVariableDeclaration","src":"1193:85:66","value":{"arguments":[{"name":"memPtr","nativeSrc":"1215:6:66","nodeType":"YulIdentifier","src":"1215:6:66"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1239:6:66","nodeType":"YulIdentifier","src":"1239:6:66"},{"kind":"number","nativeSrc":"1247:4:66","nodeType":"YulLiteral","src":"1247:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1235:3:66","nodeType":"YulIdentifier","src":"1235:3:66"},"nativeSrc":"1235:17:66","nodeType":"YulFunctionCall","src":"1235:17:66"},{"arguments":[{"kind":"number","nativeSrc":"1258:2:66","nodeType":"YulLiteral","src":"1258:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1254:3:66","nodeType":"YulIdentifier","src":"1254:3:66"},"nativeSrc":"1254:7:66","nodeType":"YulFunctionCall","src":"1254:7:66"}],"functionName":{"name":"and","nativeSrc":"1231:3:66","nodeType":"YulIdentifier","src":"1231:3:66"},"nativeSrc":"1231:31:66","nodeType":"YulFunctionCall","src":"1231:31:66"},{"kind":"number","nativeSrc":"1264:2:66","nodeType":"YulLiteral","src":"1264:2:66","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"1227:3:66","nodeType":"YulIdentifier","src":"1227:3:66"},"nativeSrc":"1227:40:66","nodeType":"YulFunctionCall","src":"1227:40:66"},{"arguments":[{"kind":"number","nativeSrc":"1273:2:66","nodeType":"YulLiteral","src":"1273:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1269:3:66","nodeType":"YulIdentifier","src":"1269:3:66"},"nativeSrc":"1269:7:66","nodeType":"YulFunctionCall","src":"1269:7:66"}],"functionName":{"name":"and","nativeSrc":"1223:3:66","nodeType":"YulIdentifier","src":"1223:3:66"},"nativeSrc":"1223:54:66","nodeType":"YulFunctionCall","src":"1223:54:66"}],"functionName":{"name":"add","nativeSrc":"1211:3:66","nodeType":"YulIdentifier","src":"1211:3:66"},"nativeSrc":"1211:67:66","nodeType":"YulFunctionCall","src":"1211:67:66"},"variables":[{"name":"newFreePtr","nativeSrc":"1197:10:66","nodeType":"YulTypedName","src":"1197:10:66","type":""}]},{"body":{"nativeSrc":"1353:22:66","nodeType":"YulBlock","src":"1353:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1355:16:66","nodeType":"YulIdentifier","src":"1355:16:66"},"nativeSrc":"1355:18:66","nodeType":"YulFunctionCall","src":"1355:18:66"},"nativeSrc":"1355:18:66","nodeType":"YulExpressionStatement","src":"1355:18:66"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1296:10:66","nodeType":"YulIdentifier","src":"1296:10:66"},{"kind":"number","nativeSrc":"1308:18:66","nodeType":"YulLiteral","src":"1308:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1293:2:66","nodeType":"YulIdentifier","src":"1293:2:66"},"nativeSrc":"1293:34:66","nodeType":"YulFunctionCall","src":"1293:34:66"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1332:10:66","nodeType":"YulIdentifier","src":"1332:10:66"},{"name":"memPtr","nativeSrc":"1344:6:66","nodeType":"YulIdentifier","src":"1344:6:66"}],"functionName":{"name":"lt","nativeSrc":"1329:2:66","nodeType":"YulIdentifier","src":"1329:2:66"},"nativeSrc":"1329:22:66","nodeType":"YulFunctionCall","src":"1329:22:66"}],"functionName":{"name":"or","nativeSrc":"1290:2:66","nodeType":"YulIdentifier","src":"1290:2:66"},"nativeSrc":"1290:62:66","nodeType":"YulFunctionCall","src":"1290:62:66"},"nativeSrc":"1287:88:66","nodeType":"YulIf","src":"1287:88:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1391:2:66","nodeType":"YulLiteral","src":"1391:2:66","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1395:10:66","nodeType":"YulIdentifier","src":"1395:10:66"}],"functionName":{"name":"mstore","nativeSrc":"1384:6:66","nodeType":"YulIdentifier","src":"1384:6:66"},"nativeSrc":"1384:22:66","nodeType":"YulFunctionCall","src":"1384:22:66"},"nativeSrc":"1384:22:66","nodeType":"YulExpressionStatement","src":"1384:22:66"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1422:6:66","nodeType":"YulIdentifier","src":"1422:6:66"},{"name":"length","nativeSrc":"1430:6:66","nodeType":"YulIdentifier","src":"1430:6:66"}],"functionName":{"name":"mstore","nativeSrc":"1415:6:66","nodeType":"YulIdentifier","src":"1415:6:66"},"nativeSrc":"1415:22:66","nodeType":"YulFunctionCall","src":"1415:22:66"},"nativeSrc":"1415:22:66","nodeType":"YulExpressionStatement","src":"1415:22:66"},{"body":{"nativeSrc":"1487:16:66","nodeType":"YulBlock","src":"1487:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1496:1:66","nodeType":"YulLiteral","src":"1496:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1499:1:66","nodeType":"YulLiteral","src":"1499:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1489:6:66","nodeType":"YulIdentifier","src":"1489:6:66"},"nativeSrc":"1489:12:66","nodeType":"YulFunctionCall","src":"1489:12:66"},"nativeSrc":"1489:12:66","nodeType":"YulExpressionStatement","src":"1489:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1460:2:66","nodeType":"YulIdentifier","src":"1460:2:66"},{"name":"length","nativeSrc":"1464:6:66","nodeType":"YulIdentifier","src":"1464:6:66"}],"functionName":{"name":"add","nativeSrc":"1456:3:66","nodeType":"YulIdentifier","src":"1456:3:66"},"nativeSrc":"1456:15:66","nodeType":"YulFunctionCall","src":"1456:15:66"},{"kind":"number","nativeSrc":"1473:2:66","nodeType":"YulLiteral","src":"1473:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1452:3:66","nodeType":"YulIdentifier","src":"1452:3:66"},"nativeSrc":"1452:24:66","nodeType":"YulFunctionCall","src":"1452:24:66"},{"name":"dataEnd","nativeSrc":"1478:7:66","nodeType":"YulIdentifier","src":"1478:7:66"}],"functionName":{"name":"gt","nativeSrc":"1449:2:66","nodeType":"YulIdentifier","src":"1449:2:66"},"nativeSrc":"1449:37:66","nodeType":"YulFunctionCall","src":"1449:37:66"},"nativeSrc":"1446:57:66","nodeType":"YulIf","src":"1446:57:66"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1529:6:66","nodeType":"YulIdentifier","src":"1529:6:66"},{"kind":"number","nativeSrc":"1537:2:66","nodeType":"YulLiteral","src":"1537:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1525:3:66","nodeType":"YulIdentifier","src":"1525:3:66"},"nativeSrc":"1525:15:66","nodeType":"YulFunctionCall","src":"1525:15:66"},{"arguments":[{"name":"_1","nativeSrc":"1546:2:66","nodeType":"YulIdentifier","src":"1546:2:66"},{"kind":"number","nativeSrc":"1550:2:66","nodeType":"YulLiteral","src":"1550:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1542:3:66","nodeType":"YulIdentifier","src":"1542:3:66"},"nativeSrc":"1542:11:66","nodeType":"YulFunctionCall","src":"1542:11:66"},{"name":"length","nativeSrc":"1555:6:66","nodeType":"YulIdentifier","src":"1555:6:66"}],"functionName":{"name":"calldatacopy","nativeSrc":"1512:12:66","nodeType":"YulIdentifier","src":"1512:12:66"},"nativeSrc":"1512:50:66","nodeType":"YulFunctionCall","src":"1512:50:66"},"nativeSrc":"1512:50:66","nodeType":"YulExpressionStatement","src":"1512:50:66"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1586:6:66","nodeType":"YulIdentifier","src":"1586:6:66"},{"name":"length","nativeSrc":"1594:6:66","nodeType":"YulIdentifier","src":"1594:6:66"}],"functionName":{"name":"add","nativeSrc":"1582:3:66","nodeType":"YulIdentifier","src":"1582:3:66"},"nativeSrc":"1582:19:66","nodeType":"YulFunctionCall","src":"1582:19:66"},{"kind":"number","nativeSrc":"1603:2:66","nodeType":"YulLiteral","src":"1603:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1578:3:66","nodeType":"YulIdentifier","src":"1578:3:66"},"nativeSrc":"1578:28:66","nodeType":"YulFunctionCall","src":"1578:28:66"},{"kind":"number","nativeSrc":"1608:1:66","nodeType":"YulLiteral","src":"1608:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1571:6:66","nodeType":"YulIdentifier","src":"1571:6:66"},"nativeSrc":"1571:39:66","nodeType":"YulFunctionCall","src":"1571:39:66"},"nativeSrc":"1571:39:66","nodeType":"YulExpressionStatement","src":"1571:39:66"},{"nativeSrc":"1619:16:66","nodeType":"YulAssignment","src":"1619:16:66","value":{"name":"memPtr","nativeSrc":"1629:6:66","nodeType":"YulIdentifier","src":"1629:6:66"},"variableNames":[{"name":"value1","nativeSrc":"1619:6:66","nodeType":"YulIdentifier","src":"1619:6:66"}]}]},"name":"abi_decode_tuple_t_bytes32t_bytes_memory_ptr","nativeSrc":"629:1012:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"683:9:66","nodeType":"YulTypedName","src":"683:9:66","type":""},{"name":"dataEnd","nativeSrc":"694:7:66","nodeType":"YulTypedName","src":"694:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"706:6:66","nodeType":"YulTypedName","src":"706:6:66","type":""},{"name":"value1","nativeSrc":"714:6:66","nodeType":"YulTypedName","src":"714:6:66","type":""}],"src":"629:1012:66"},{"body":{"nativeSrc":"1745:103:66","nodeType":"YulBlock","src":"1745:103:66","statements":[{"nativeSrc":"1755:26:66","nodeType":"YulAssignment","src":"1755:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1767:9:66","nodeType":"YulIdentifier","src":"1767:9:66"},{"kind":"number","nativeSrc":"1778:2:66","nodeType":"YulLiteral","src":"1778:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1763:3:66","nodeType":"YulIdentifier","src":"1763:3:66"},"nativeSrc":"1763:18:66","nodeType":"YulFunctionCall","src":"1763:18:66"},"variableNames":[{"name":"tail","nativeSrc":"1755:4:66","nodeType":"YulIdentifier","src":"1755:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1797:9:66","nodeType":"YulIdentifier","src":"1797:9:66"},{"arguments":[{"name":"value0","nativeSrc":"1812:6:66","nodeType":"YulIdentifier","src":"1812:6:66"},{"arguments":[{"kind":"number","nativeSrc":"1824:3:66","nodeType":"YulLiteral","src":"1824:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"1829:10:66","nodeType":"YulLiteral","src":"1829:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"1820:3:66","nodeType":"YulIdentifier","src":"1820:3:66"},"nativeSrc":"1820:20:66","nodeType":"YulFunctionCall","src":"1820:20:66"}],"functionName":{"name":"and","nativeSrc":"1808:3:66","nodeType":"YulIdentifier","src":"1808:3:66"},"nativeSrc":"1808:33:66","nodeType":"YulFunctionCall","src":"1808:33:66"}],"functionName":{"name":"mstore","nativeSrc":"1790:6:66","nodeType":"YulIdentifier","src":"1790:6:66"},"nativeSrc":"1790:52:66","nodeType":"YulFunctionCall","src":"1790:52:66"},"nativeSrc":"1790:52:66","nodeType":"YulExpressionStatement","src":"1790:52:66"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nativeSrc":"1646:202:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1714:9:66","nodeType":"YulTypedName","src":"1714:9:66","type":""},{"name":"value0","nativeSrc":"1725:6:66","nodeType":"YulTypedName","src":"1725:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1736:4:66","nodeType":"YulTypedName","src":"1736:4:66","type":""}],"src":"1646:202:66"},{"body":{"nativeSrc":"1898:86:66","nodeType":"YulBlock","src":"1898:86:66","statements":[{"body":{"nativeSrc":"1962:16:66","nodeType":"YulBlock","src":"1962:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1971:1:66","nodeType":"YulLiteral","src":"1971:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1974:1:66","nodeType":"YulLiteral","src":"1974:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1964:6:66","nodeType":"YulIdentifier","src":"1964:6:66"},"nativeSrc":"1964:12:66","nodeType":"YulFunctionCall","src":"1964:12:66"},"nativeSrc":"1964:12:66","nodeType":"YulExpressionStatement","src":"1964:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1921:5:66","nodeType":"YulIdentifier","src":"1921:5:66"},{"arguments":[{"name":"value","nativeSrc":"1932:5:66","nodeType":"YulIdentifier","src":"1932:5:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1947:3:66","nodeType":"YulLiteral","src":"1947:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"1952:1:66","nodeType":"YulLiteral","src":"1952:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1943:3:66","nodeType":"YulIdentifier","src":"1943:3:66"},"nativeSrc":"1943:11:66","nodeType":"YulFunctionCall","src":"1943:11:66"},{"kind":"number","nativeSrc":"1956:1:66","nodeType":"YulLiteral","src":"1956:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1939:3:66","nodeType":"YulIdentifier","src":"1939:3:66"},"nativeSrc":"1939:19:66","nodeType":"YulFunctionCall","src":"1939:19:66"}],"functionName":{"name":"and","nativeSrc":"1928:3:66","nodeType":"YulIdentifier","src":"1928:3:66"},"nativeSrc":"1928:31:66","nodeType":"YulFunctionCall","src":"1928:31:66"}],"functionName":{"name":"eq","nativeSrc":"1918:2:66","nodeType":"YulIdentifier","src":"1918:2:66"},"nativeSrc":"1918:42:66","nodeType":"YulFunctionCall","src":"1918:42:66"}],"functionName":{"name":"iszero","nativeSrc":"1911:6:66","nodeType":"YulIdentifier","src":"1911:6:66"},"nativeSrc":"1911:50:66","nodeType":"YulFunctionCall","src":"1911:50:66"},"nativeSrc":"1908:70:66","nodeType":"YulIf","src":"1908:70:66"}]},"name":"validator_revert_address","nativeSrc":"1853:131:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1887:5:66","nodeType":"YulTypedName","src":"1887:5:66","type":""}],"src":"1853:131:66"},{"body":{"nativeSrc":"2061:275:66","nodeType":"YulBlock","src":"2061:275:66","statements":[{"body":{"nativeSrc":"2110:16:66","nodeType":"YulBlock","src":"2110:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2119:1:66","nodeType":"YulLiteral","src":"2119:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"2122:1:66","nodeType":"YulLiteral","src":"2122:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2112:6:66","nodeType":"YulIdentifier","src":"2112:6:66"},"nativeSrc":"2112:12:66","nodeType":"YulFunctionCall","src":"2112:12:66"},"nativeSrc":"2112:12:66","nodeType":"YulExpressionStatement","src":"2112:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2089:6:66","nodeType":"YulIdentifier","src":"2089:6:66"},{"kind":"number","nativeSrc":"2097:4:66","nodeType":"YulLiteral","src":"2097:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2085:3:66","nodeType":"YulIdentifier","src":"2085:3:66"},"nativeSrc":"2085:17:66","nodeType":"YulFunctionCall","src":"2085:17:66"},{"name":"end","nativeSrc":"2104:3:66","nodeType":"YulIdentifier","src":"2104:3:66"}],"functionName":{"name":"slt","nativeSrc":"2081:3:66","nodeType":"YulIdentifier","src":"2081:3:66"},"nativeSrc":"2081:27:66","nodeType":"YulFunctionCall","src":"2081:27:66"}],"functionName":{"name":"iszero","nativeSrc":"2074:6:66","nodeType":"YulIdentifier","src":"2074:6:66"},"nativeSrc":"2074:35:66","nodeType":"YulFunctionCall","src":"2074:35:66"},"nativeSrc":"2071:55:66","nodeType":"YulIf","src":"2071:55:66"},{"nativeSrc":"2135:30:66","nodeType":"YulAssignment","src":"2135:30:66","value":{"arguments":[{"name":"offset","nativeSrc":"2158:6:66","nodeType":"YulIdentifier","src":"2158:6:66"}],"functionName":{"name":"calldataload","nativeSrc":"2145:12:66","nodeType":"YulIdentifier","src":"2145:12:66"},"nativeSrc":"2145:20:66","nodeType":"YulFunctionCall","src":"2145:20:66"},"variableNames":[{"name":"length","nativeSrc":"2135:6:66","nodeType":"YulIdentifier","src":"2135:6:66"}]},{"body":{"nativeSrc":"2208:16:66","nodeType":"YulBlock","src":"2208:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2217:1:66","nodeType":"YulLiteral","src":"2217:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"2220:1:66","nodeType":"YulLiteral","src":"2220:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2210:6:66","nodeType":"YulIdentifier","src":"2210:6:66"},"nativeSrc":"2210:12:66","nodeType":"YulFunctionCall","src":"2210:12:66"},"nativeSrc":"2210:12:66","nodeType":"YulExpressionStatement","src":"2210:12:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"2180:6:66","nodeType":"YulIdentifier","src":"2180:6:66"},{"kind":"number","nativeSrc":"2188:18:66","nodeType":"YulLiteral","src":"2188:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2177:2:66","nodeType":"YulIdentifier","src":"2177:2:66"},"nativeSrc":"2177:30:66","nodeType":"YulFunctionCall","src":"2177:30:66"},"nativeSrc":"2174:50:66","nodeType":"YulIf","src":"2174:50:66"},{"nativeSrc":"2233:29:66","nodeType":"YulAssignment","src":"2233:29:66","value":{"arguments":[{"name":"offset","nativeSrc":"2249:6:66","nodeType":"YulIdentifier","src":"2249:6:66"},{"kind":"number","nativeSrc":"2257:4:66","nodeType":"YulLiteral","src":"2257:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2245:3:66","nodeType":"YulIdentifier","src":"2245:3:66"},"nativeSrc":"2245:17:66","nodeType":"YulFunctionCall","src":"2245:17:66"},"variableNames":[{"name":"arrayPos","nativeSrc":"2233:8:66","nodeType":"YulIdentifier","src":"2233:8:66"}]},{"body":{"nativeSrc":"2314:16:66","nodeType":"YulBlock","src":"2314:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2323:1:66","nodeType":"YulLiteral","src":"2323:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"2326:1:66","nodeType":"YulLiteral","src":"2326:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2316:6:66","nodeType":"YulIdentifier","src":"2316:6:66"},"nativeSrc":"2316:12:66","nodeType":"YulFunctionCall","src":"2316:12:66"},"nativeSrc":"2316:12:66","nodeType":"YulExpressionStatement","src":"2316:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2285:6:66","nodeType":"YulIdentifier","src":"2285:6:66"},{"name":"length","nativeSrc":"2293:6:66","nodeType":"YulIdentifier","src":"2293:6:66"}],"functionName":{"name":"add","nativeSrc":"2281:3:66","nodeType":"YulIdentifier","src":"2281:3:66"},"nativeSrc":"2281:19:66","nodeType":"YulFunctionCall","src":"2281:19:66"},{"kind":"number","nativeSrc":"2302:4:66","nodeType":"YulLiteral","src":"2302:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2277:3:66","nodeType":"YulIdentifier","src":"2277:3:66"},"nativeSrc":"2277:30:66","nodeType":"YulFunctionCall","src":"2277:30:66"},{"name":"end","nativeSrc":"2309:3:66","nodeType":"YulIdentifier","src":"2309:3:66"}],"functionName":{"name":"gt","nativeSrc":"2274:2:66","nodeType":"YulIdentifier","src":"2274:2:66"},"nativeSrc":"2274:39:66","nodeType":"YulFunctionCall","src":"2274:39:66"},"nativeSrc":"2271:59:66","nodeType":"YulIf","src":"2271:59:66"}]},"name":"abi_decode_bytes_calldata","nativeSrc":"1989:347:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2024:6:66","nodeType":"YulTypedName","src":"2024:6:66","type":""},{"name":"end","nativeSrc":"2032:3:66","nodeType":"YulTypedName","src":"2032:3:66","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"2040:8:66","nodeType":"YulTypedName","src":"2040:8:66","type":""},{"name":"length","nativeSrc":"2050:6:66","nodeType":"YulTypedName","src":"2050:6:66","type":""}],"src":"1989:347:66"},{"body":{"nativeSrc":"2479:692:66","nodeType":"YulBlock","src":"2479:692:66","statements":[{"body":{"nativeSrc":"2526:16:66","nodeType":"YulBlock","src":"2526:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2535:1:66","nodeType":"YulLiteral","src":"2535:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"2538:1:66","nodeType":"YulLiteral","src":"2538:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2528:6:66","nodeType":"YulIdentifier","src":"2528:6:66"},"nativeSrc":"2528:12:66","nodeType":"YulFunctionCall","src":"2528:12:66"},"nativeSrc":"2528:12:66","nodeType":"YulExpressionStatement","src":"2528:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2500:7:66","nodeType":"YulIdentifier","src":"2500:7:66"},{"name":"headStart","nativeSrc":"2509:9:66","nodeType":"YulIdentifier","src":"2509:9:66"}],"functionName":{"name":"sub","nativeSrc":"2496:3:66","nodeType":"YulIdentifier","src":"2496:3:66"},"nativeSrc":"2496:23:66","nodeType":"YulFunctionCall","src":"2496:23:66"},{"kind":"number","nativeSrc":"2521:3:66","nodeType":"YulLiteral","src":"2521:3:66","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"2492:3:66","nodeType":"YulIdentifier","src":"2492:3:66"},"nativeSrc":"2492:33:66","nodeType":"YulFunctionCall","src":"2492:33:66"},"nativeSrc":"2489:53:66","nodeType":"YulIf","src":"2489:53:66"},{"nativeSrc":"2551:36:66","nodeType":"YulVariableDeclaration","src":"2551:36:66","value":{"arguments":[{"name":"headStart","nativeSrc":"2577:9:66","nodeType":"YulIdentifier","src":"2577:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"2564:12:66","nodeType":"YulIdentifier","src":"2564:12:66"},"nativeSrc":"2564:23:66","nodeType":"YulFunctionCall","src":"2564:23:66"},"variables":[{"name":"value","nativeSrc":"2555:5:66","nodeType":"YulTypedName","src":"2555:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2621:5:66","nodeType":"YulIdentifier","src":"2621:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"2596:24:66","nodeType":"YulIdentifier","src":"2596:24:66"},"nativeSrc":"2596:31:66","nodeType":"YulFunctionCall","src":"2596:31:66"},"nativeSrc":"2596:31:66","nodeType":"YulExpressionStatement","src":"2596:31:66"},{"nativeSrc":"2636:15:66","nodeType":"YulAssignment","src":"2636:15:66","value":{"name":"value","nativeSrc":"2646:5:66","nodeType":"YulIdentifier","src":"2646:5:66"},"variableNames":[{"name":"value0","nativeSrc":"2636:6:66","nodeType":"YulIdentifier","src":"2636:6:66"}]},{"nativeSrc":"2660:16:66","nodeType":"YulVariableDeclaration","src":"2660:16:66","value":{"kind":"number","nativeSrc":"2675:1:66","nodeType":"YulLiteral","src":"2675:1:66","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"2664:7:66","nodeType":"YulTypedName","src":"2664:7:66","type":""}]},{"nativeSrc":"2685:43:66","nodeType":"YulAssignment","src":"2685:43:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2713:9:66","nodeType":"YulIdentifier","src":"2713:9:66"},{"kind":"number","nativeSrc":"2724:2:66","nodeType":"YulLiteral","src":"2724:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2709:3:66","nodeType":"YulIdentifier","src":"2709:3:66"},"nativeSrc":"2709:18:66","nodeType":"YulFunctionCall","src":"2709:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"2696:12:66","nodeType":"YulIdentifier","src":"2696:12:66"},"nativeSrc":"2696:32:66","nodeType":"YulFunctionCall","src":"2696:32:66"},"variableNames":[{"name":"value_1","nativeSrc":"2685:7:66","nodeType":"YulIdentifier","src":"2685:7:66"}]},{"nativeSrc":"2737:17:66","nodeType":"YulAssignment","src":"2737:17:66","value":{"name":"value_1","nativeSrc":"2747:7:66","nodeType":"YulIdentifier","src":"2747:7:66"},"variableNames":[{"name":"value1","nativeSrc":"2737:6:66","nodeType":"YulIdentifier","src":"2737:6:66"}]},{"nativeSrc":"2763:46:66","nodeType":"YulVariableDeclaration","src":"2763:46:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2794:9:66","nodeType":"YulIdentifier","src":"2794:9:66"},{"kind":"number","nativeSrc":"2805:2:66","nodeType":"YulLiteral","src":"2805:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2790:3:66","nodeType":"YulIdentifier","src":"2790:3:66"},"nativeSrc":"2790:18:66","nodeType":"YulFunctionCall","src":"2790:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"2777:12:66","nodeType":"YulIdentifier","src":"2777:12:66"},"nativeSrc":"2777:32:66","nodeType":"YulFunctionCall","src":"2777:32:66"},"variables":[{"name":"offset","nativeSrc":"2767:6:66","nodeType":"YulTypedName","src":"2767:6:66","type":""}]},{"body":{"nativeSrc":"2852:16:66","nodeType":"YulBlock","src":"2852:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2861:1:66","nodeType":"YulLiteral","src":"2861:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"2864:1:66","nodeType":"YulLiteral","src":"2864:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2854:6:66","nodeType":"YulIdentifier","src":"2854:6:66"},"nativeSrc":"2854:12:66","nodeType":"YulFunctionCall","src":"2854:12:66"},"nativeSrc":"2854:12:66","nodeType":"YulExpressionStatement","src":"2854:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"2824:6:66","nodeType":"YulIdentifier","src":"2824:6:66"},{"kind":"number","nativeSrc":"2832:18:66","nodeType":"YulLiteral","src":"2832:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"2821:2:66","nodeType":"YulIdentifier","src":"2821:2:66"},"nativeSrc":"2821:30:66","nodeType":"YulFunctionCall","src":"2821:30:66"},"nativeSrc":"2818:50:66","nodeType":"YulIf","src":"2818:50:66"},{"nativeSrc":"2877:84:66","nodeType":"YulVariableDeclaration","src":"2877:84:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2933:9:66","nodeType":"YulIdentifier","src":"2933:9:66"},{"name":"offset","nativeSrc":"2944:6:66","nodeType":"YulIdentifier","src":"2944:6:66"}],"functionName":{"name":"add","nativeSrc":"2929:3:66","nodeType":"YulIdentifier","src":"2929:3:66"},"nativeSrc":"2929:22:66","nodeType":"YulFunctionCall","src":"2929:22:66"},{"name":"dataEnd","nativeSrc":"2953:7:66","nodeType":"YulIdentifier","src":"2953:7:66"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"2903:25:66","nodeType":"YulIdentifier","src":"2903:25:66"},"nativeSrc":"2903:58:66","nodeType":"YulFunctionCall","src":"2903:58:66"},"variables":[{"name":"value2_1","nativeSrc":"2881:8:66","nodeType":"YulTypedName","src":"2881:8:66","type":""},{"name":"value3_1","nativeSrc":"2891:8:66","nodeType":"YulTypedName","src":"2891:8:66","type":""}]},{"nativeSrc":"2970:18:66","nodeType":"YulAssignment","src":"2970:18:66","value":{"name":"value2_1","nativeSrc":"2980:8:66","nodeType":"YulIdentifier","src":"2980:8:66"},"variableNames":[{"name":"value2","nativeSrc":"2970:6:66","nodeType":"YulIdentifier","src":"2970:6:66"}]},{"nativeSrc":"2997:18:66","nodeType":"YulAssignment","src":"2997:18:66","value":{"name":"value3_1","nativeSrc":"3007:8:66","nodeType":"YulIdentifier","src":"3007:8:66"},"variableNames":[{"name":"value3","nativeSrc":"2997:6:66","nodeType":"YulIdentifier","src":"2997:6:66"}]},{"nativeSrc":"3024:47:66","nodeType":"YulVariableDeclaration","src":"3024:47:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3056:9:66","nodeType":"YulIdentifier","src":"3056:9:66"},{"kind":"number","nativeSrc":"3067:2:66","nodeType":"YulLiteral","src":"3067:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3052:3:66","nodeType":"YulIdentifier","src":"3052:3:66"},"nativeSrc":"3052:18:66","nodeType":"YulFunctionCall","src":"3052:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"3039:12:66","nodeType":"YulIdentifier","src":"3039:12:66"},"nativeSrc":"3039:32:66","nodeType":"YulFunctionCall","src":"3039:32:66"},"variables":[{"name":"value_2","nativeSrc":"3028:7:66","nodeType":"YulTypedName","src":"3028:7:66","type":""}]},{"body":{"nativeSrc":"3123:16:66","nodeType":"YulBlock","src":"3123:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3132:1:66","nodeType":"YulLiteral","src":"3132:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"3135:1:66","nodeType":"YulLiteral","src":"3135:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3125:6:66","nodeType":"YulIdentifier","src":"3125:6:66"},"nativeSrc":"3125:12:66","nodeType":"YulFunctionCall","src":"3125:12:66"},"nativeSrc":"3125:12:66","nodeType":"YulExpressionStatement","src":"3125:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value_2","nativeSrc":"3093:7:66","nodeType":"YulIdentifier","src":"3093:7:66"},{"arguments":[{"name":"value_2","nativeSrc":"3106:7:66","nodeType":"YulIdentifier","src":"3106:7:66"},{"kind":"number","nativeSrc":"3115:4:66","nodeType":"YulLiteral","src":"3115:4:66","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"3102:3:66","nodeType":"YulIdentifier","src":"3102:3:66"},"nativeSrc":"3102:18:66","nodeType":"YulFunctionCall","src":"3102:18:66"}],"functionName":{"name":"eq","nativeSrc":"3090:2:66","nodeType":"YulIdentifier","src":"3090:2:66"},"nativeSrc":"3090:31:66","nodeType":"YulFunctionCall","src":"3090:31:66"}],"functionName":{"name":"iszero","nativeSrc":"3083:6:66","nodeType":"YulIdentifier","src":"3083:6:66"},"nativeSrc":"3083:39:66","nodeType":"YulFunctionCall","src":"3083:39:66"},"nativeSrc":"3080:59:66","nodeType":"YulIf","src":"3080:59:66"},{"nativeSrc":"3148:17:66","nodeType":"YulAssignment","src":"3148:17:66","value":{"name":"value_2","nativeSrc":"3158:7:66","nodeType":"YulIdentifier","src":"3158:7:66"},"variableNames":[{"name":"value4","nativeSrc":"3148:6:66","nodeType":"YulIdentifier","src":"3148:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_uint8","nativeSrc":"2341:830:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2413:9:66","nodeType":"YulTypedName","src":"2413:9:66","type":""},{"name":"dataEnd","nativeSrc":"2424:7:66","nodeType":"YulTypedName","src":"2424:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2436:6:66","nodeType":"YulTypedName","src":"2436:6:66","type":""},{"name":"value1","nativeSrc":"2444:6:66","nodeType":"YulTypedName","src":"2444:6:66","type":""},{"name":"value2","nativeSrc":"2452:6:66","nodeType":"YulTypedName","src":"2452:6:66","type":""},{"name":"value3","nativeSrc":"2460:6:66","nodeType":"YulTypedName","src":"2460:6:66","type":""},{"name":"value4","nativeSrc":"2468:6:66","nodeType":"YulTypedName","src":"2468:6:66","type":""}],"src":"2341:830:66"},{"body":{"nativeSrc":"3242:184:66","nodeType":"YulBlock","src":"3242:184:66","statements":[{"nativeSrc":"3252:10:66","nodeType":"YulVariableDeclaration","src":"3252:10:66","value":{"kind":"number","nativeSrc":"3261:1:66","nodeType":"YulLiteral","src":"3261:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"3256:1:66","nodeType":"YulTypedName","src":"3256:1:66","type":""}]},{"body":{"nativeSrc":"3321:63:66","nodeType":"YulBlock","src":"3321:63:66","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"3346:3:66","nodeType":"YulIdentifier","src":"3346:3:66"},{"name":"i","nativeSrc":"3351:1:66","nodeType":"YulIdentifier","src":"3351:1:66"}],"functionName":{"name":"add","nativeSrc":"3342:3:66","nodeType":"YulIdentifier","src":"3342:3:66"},"nativeSrc":"3342:11:66","nodeType":"YulFunctionCall","src":"3342:11:66"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"3365:3:66","nodeType":"YulIdentifier","src":"3365:3:66"},{"name":"i","nativeSrc":"3370:1:66","nodeType":"YulIdentifier","src":"3370:1:66"}],"functionName":{"name":"add","nativeSrc":"3361:3:66","nodeType":"YulIdentifier","src":"3361:3:66"},"nativeSrc":"3361:11:66","nodeType":"YulFunctionCall","src":"3361:11:66"}],"functionName":{"name":"mload","nativeSrc":"3355:5:66","nodeType":"YulIdentifier","src":"3355:5:66"},"nativeSrc":"3355:18:66","nodeType":"YulFunctionCall","src":"3355:18:66"}],"functionName":{"name":"mstore","nativeSrc":"3335:6:66","nodeType":"YulIdentifier","src":"3335:6:66"},"nativeSrc":"3335:39:66","nodeType":"YulFunctionCall","src":"3335:39:66"},"nativeSrc":"3335:39:66","nodeType":"YulExpressionStatement","src":"3335:39:66"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"3282:1:66","nodeType":"YulIdentifier","src":"3282:1:66"},{"name":"length","nativeSrc":"3285:6:66","nodeType":"YulIdentifier","src":"3285:6:66"}],"functionName":{"name":"lt","nativeSrc":"3279:2:66","nodeType":"YulIdentifier","src":"3279:2:66"},"nativeSrc":"3279:13:66","nodeType":"YulFunctionCall","src":"3279:13:66"},"nativeSrc":"3271:113:66","nodeType":"YulForLoop","post":{"nativeSrc":"3293:19:66","nodeType":"YulBlock","src":"3293:19:66","statements":[{"nativeSrc":"3295:15:66","nodeType":"YulAssignment","src":"3295:15:66","value":{"arguments":[{"name":"i","nativeSrc":"3304:1:66","nodeType":"YulIdentifier","src":"3304:1:66"},{"kind":"number","nativeSrc":"3307:2:66","nodeType":"YulLiteral","src":"3307:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3300:3:66","nodeType":"YulIdentifier","src":"3300:3:66"},"nativeSrc":"3300:10:66","nodeType":"YulFunctionCall","src":"3300:10:66"},"variableNames":[{"name":"i","nativeSrc":"3295:1:66","nodeType":"YulIdentifier","src":"3295:1:66"}]}]},"pre":{"nativeSrc":"3275:3:66","nodeType":"YulBlock","src":"3275:3:66","statements":[]},"src":"3271:113:66"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"3404:3:66","nodeType":"YulIdentifier","src":"3404:3:66"},{"name":"length","nativeSrc":"3409:6:66","nodeType":"YulIdentifier","src":"3409:6:66"}],"functionName":{"name":"add","nativeSrc":"3400:3:66","nodeType":"YulIdentifier","src":"3400:3:66"},"nativeSrc":"3400:16:66","nodeType":"YulFunctionCall","src":"3400:16:66"},{"kind":"number","nativeSrc":"3418:1:66","nodeType":"YulLiteral","src":"3418:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"3393:6:66","nodeType":"YulIdentifier","src":"3393:6:66"},"nativeSrc":"3393:27:66","nodeType":"YulFunctionCall","src":"3393:27:66"},"nativeSrc":"3393:27:66","nodeType":"YulExpressionStatement","src":"3393:27:66"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"3176:250:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"3220:3:66","nodeType":"YulTypedName","src":"3220:3:66","type":""},{"name":"dst","nativeSrc":"3225:3:66","nodeType":"YulTypedName","src":"3225:3:66","type":""},{"name":"length","nativeSrc":"3230:6:66","nodeType":"YulTypedName","src":"3230:6:66","type":""}],"src":"3176:250:66"},{"body":{"nativeSrc":"3480:221:66","nodeType":"YulBlock","src":"3480:221:66","statements":[{"nativeSrc":"3490:26:66","nodeType":"YulVariableDeclaration","src":"3490:26:66","value":{"arguments":[{"name":"value","nativeSrc":"3510:5:66","nodeType":"YulIdentifier","src":"3510:5:66"}],"functionName":{"name":"mload","nativeSrc":"3504:5:66","nodeType":"YulIdentifier","src":"3504:5:66"},"nativeSrc":"3504:12:66","nodeType":"YulFunctionCall","src":"3504:12:66"},"variables":[{"name":"length","nativeSrc":"3494:6:66","nodeType":"YulTypedName","src":"3494:6:66","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"3532:3:66","nodeType":"YulIdentifier","src":"3532:3:66"},{"name":"length","nativeSrc":"3537:6:66","nodeType":"YulIdentifier","src":"3537:6:66"}],"functionName":{"name":"mstore","nativeSrc":"3525:6:66","nodeType":"YulIdentifier","src":"3525:6:66"},"nativeSrc":"3525:19:66","nodeType":"YulFunctionCall","src":"3525:19:66"},"nativeSrc":"3525:19:66","nodeType":"YulExpressionStatement","src":"3525:19:66"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3592:5:66","nodeType":"YulIdentifier","src":"3592:5:66"},{"kind":"number","nativeSrc":"3599:4:66","nodeType":"YulLiteral","src":"3599:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3588:3:66","nodeType":"YulIdentifier","src":"3588:3:66"},"nativeSrc":"3588:16:66","nodeType":"YulFunctionCall","src":"3588:16:66"},{"arguments":[{"name":"pos","nativeSrc":"3610:3:66","nodeType":"YulIdentifier","src":"3610:3:66"},{"kind":"number","nativeSrc":"3615:4:66","nodeType":"YulLiteral","src":"3615:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3606:3:66","nodeType":"YulIdentifier","src":"3606:3:66"},"nativeSrc":"3606:14:66","nodeType":"YulFunctionCall","src":"3606:14:66"},{"name":"length","nativeSrc":"3622:6:66","nodeType":"YulIdentifier","src":"3622:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"3553:34:66","nodeType":"YulIdentifier","src":"3553:34:66"},"nativeSrc":"3553:76:66","nodeType":"YulFunctionCall","src":"3553:76:66"},"nativeSrc":"3553:76:66","nodeType":"YulExpressionStatement","src":"3553:76:66"},{"nativeSrc":"3638:57:66","nodeType":"YulAssignment","src":"3638:57:66","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3653:3:66","nodeType":"YulIdentifier","src":"3653:3:66"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"3666:6:66","nodeType":"YulIdentifier","src":"3666:6:66"},{"kind":"number","nativeSrc":"3674:2:66","nodeType":"YulLiteral","src":"3674:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3662:3:66","nodeType":"YulIdentifier","src":"3662:3:66"},"nativeSrc":"3662:15:66","nodeType":"YulFunctionCall","src":"3662:15:66"},{"arguments":[{"kind":"number","nativeSrc":"3683:2:66","nodeType":"YulLiteral","src":"3683:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3679:3:66","nodeType":"YulIdentifier","src":"3679:3:66"},"nativeSrc":"3679:7:66","nodeType":"YulFunctionCall","src":"3679:7:66"}],"functionName":{"name":"and","nativeSrc":"3658:3:66","nodeType":"YulIdentifier","src":"3658:3:66"},"nativeSrc":"3658:29:66","nodeType":"YulFunctionCall","src":"3658:29:66"}],"functionName":{"name":"add","nativeSrc":"3649:3:66","nodeType":"YulIdentifier","src":"3649:3:66"},"nativeSrc":"3649:39:66","nodeType":"YulFunctionCall","src":"3649:39:66"},{"kind":"number","nativeSrc":"3690:4:66","nodeType":"YulLiteral","src":"3690:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3645:3:66","nodeType":"YulIdentifier","src":"3645:3:66"},"nativeSrc":"3645:50:66","nodeType":"YulFunctionCall","src":"3645:50:66"},"variableNames":[{"name":"end","nativeSrc":"3638:3:66","nodeType":"YulIdentifier","src":"3638:3:66"}]}]},"name":"abi_encode_bytes","nativeSrc":"3431:270:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"3457:5:66","nodeType":"YulTypedName","src":"3457:5:66","type":""},{"name":"pos","nativeSrc":"3464:3:66","nodeType":"YulTypedName","src":"3464:3:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"3472:3:66","nodeType":"YulTypedName","src":"3472:3:66","type":""}],"src":"3431:270:66"},{"body":{"nativeSrc":"3825:98:66","nodeType":"YulBlock","src":"3825:98:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3842:9:66","nodeType":"YulIdentifier","src":"3842:9:66"},{"kind":"number","nativeSrc":"3853:2:66","nodeType":"YulLiteral","src":"3853:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"3835:6:66","nodeType":"YulIdentifier","src":"3835:6:66"},"nativeSrc":"3835:21:66","nodeType":"YulFunctionCall","src":"3835:21:66"},"nativeSrc":"3835:21:66","nodeType":"YulExpressionStatement","src":"3835:21:66"},{"nativeSrc":"3865:52:66","nodeType":"YulAssignment","src":"3865:52:66","value":{"arguments":[{"name":"value0","nativeSrc":"3890:6:66","nodeType":"YulIdentifier","src":"3890:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"3902:9:66","nodeType":"YulIdentifier","src":"3902:9:66"},{"kind":"number","nativeSrc":"3913:2:66","nodeType":"YulLiteral","src":"3913:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3898:3:66","nodeType":"YulIdentifier","src":"3898:3:66"},"nativeSrc":"3898:18:66","nodeType":"YulFunctionCall","src":"3898:18:66"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"3873:16:66","nodeType":"YulIdentifier","src":"3873:16:66"},"nativeSrc":"3873:44:66","nodeType":"YulFunctionCall","src":"3873:44:66"},"variableNames":[{"name":"tail","nativeSrc":"3865:4:66","nodeType":"YulIdentifier","src":"3865:4:66"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"3706:217:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3794:9:66","nodeType":"YulTypedName","src":"3794:9:66","type":""},{"name":"value0","nativeSrc":"3805:6:66","nodeType":"YulTypedName","src":"3805:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3816:4:66","nodeType":"YulTypedName","src":"3816:4:66","type":""}],"src":"3706:217:66"},{"body":{"nativeSrc":"4034:438:66","nodeType":"YulBlock","src":"4034:438:66","statements":[{"body":{"nativeSrc":"4080:16:66","nodeType":"YulBlock","src":"4080:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4089:1:66","nodeType":"YulLiteral","src":"4089:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4092:1:66","nodeType":"YulLiteral","src":"4092:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4082:6:66","nodeType":"YulIdentifier","src":"4082:6:66"},"nativeSrc":"4082:12:66","nodeType":"YulFunctionCall","src":"4082:12:66"},"nativeSrc":"4082:12:66","nodeType":"YulExpressionStatement","src":"4082:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4055:7:66","nodeType":"YulIdentifier","src":"4055:7:66"},{"name":"headStart","nativeSrc":"4064:9:66","nodeType":"YulIdentifier","src":"4064:9:66"}],"functionName":{"name":"sub","nativeSrc":"4051:3:66","nodeType":"YulIdentifier","src":"4051:3:66"},"nativeSrc":"4051:23:66","nodeType":"YulFunctionCall","src":"4051:23:66"},{"kind":"number","nativeSrc":"4076:2:66","nodeType":"YulLiteral","src":"4076:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"4047:3:66","nodeType":"YulIdentifier","src":"4047:3:66"},"nativeSrc":"4047:32:66","nodeType":"YulFunctionCall","src":"4047:32:66"},"nativeSrc":"4044:52:66","nodeType":"YulIf","src":"4044:52:66"},{"nativeSrc":"4105:36:66","nodeType":"YulVariableDeclaration","src":"4105:36:66","value":{"arguments":[{"name":"headStart","nativeSrc":"4131:9:66","nodeType":"YulIdentifier","src":"4131:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"4118:12:66","nodeType":"YulIdentifier","src":"4118:12:66"},"nativeSrc":"4118:23:66","nodeType":"YulFunctionCall","src":"4118:23:66"},"variables":[{"name":"value","nativeSrc":"4109:5:66","nodeType":"YulTypedName","src":"4109:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4175:5:66","nodeType":"YulIdentifier","src":"4175:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4150:24:66","nodeType":"YulIdentifier","src":"4150:24:66"},"nativeSrc":"4150:31:66","nodeType":"YulFunctionCall","src":"4150:31:66"},"nativeSrc":"4150:31:66","nodeType":"YulExpressionStatement","src":"4150:31:66"},{"nativeSrc":"4190:15:66","nodeType":"YulAssignment","src":"4190:15:66","value":{"name":"value","nativeSrc":"4200:5:66","nodeType":"YulIdentifier","src":"4200:5:66"},"variableNames":[{"name":"value0","nativeSrc":"4190:6:66","nodeType":"YulIdentifier","src":"4190:6:66"}]},{"nativeSrc":"4214:46:66","nodeType":"YulVariableDeclaration","src":"4214:46:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4245:9:66","nodeType":"YulIdentifier","src":"4245:9:66"},{"kind":"number","nativeSrc":"4256:2:66","nodeType":"YulLiteral","src":"4256:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4241:3:66","nodeType":"YulIdentifier","src":"4241:3:66"},"nativeSrc":"4241:18:66","nodeType":"YulFunctionCall","src":"4241:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"4228:12:66","nodeType":"YulIdentifier","src":"4228:12:66"},"nativeSrc":"4228:32:66","nodeType":"YulFunctionCall","src":"4228:32:66"},"variables":[{"name":"offset","nativeSrc":"4218:6:66","nodeType":"YulTypedName","src":"4218:6:66","type":""}]},{"body":{"nativeSrc":"4303:16:66","nodeType":"YulBlock","src":"4303:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4312:1:66","nodeType":"YulLiteral","src":"4312:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4315:1:66","nodeType":"YulLiteral","src":"4315:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4305:6:66","nodeType":"YulIdentifier","src":"4305:6:66"},"nativeSrc":"4305:12:66","nodeType":"YulFunctionCall","src":"4305:12:66"},"nativeSrc":"4305:12:66","nodeType":"YulExpressionStatement","src":"4305:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4275:6:66","nodeType":"YulIdentifier","src":"4275:6:66"},{"kind":"number","nativeSrc":"4283:18:66","nodeType":"YulLiteral","src":"4283:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4272:2:66","nodeType":"YulIdentifier","src":"4272:2:66"},"nativeSrc":"4272:30:66","nodeType":"YulFunctionCall","src":"4272:30:66"},"nativeSrc":"4269:50:66","nodeType":"YulIf","src":"4269:50:66"},{"nativeSrc":"4328:84:66","nodeType":"YulVariableDeclaration","src":"4328:84:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4384:9:66","nodeType":"YulIdentifier","src":"4384:9:66"},{"name":"offset","nativeSrc":"4395:6:66","nodeType":"YulIdentifier","src":"4395:6:66"}],"functionName":{"name":"add","nativeSrc":"4380:3:66","nodeType":"YulIdentifier","src":"4380:3:66"},"nativeSrc":"4380:22:66","nodeType":"YulFunctionCall","src":"4380:22:66"},{"name":"dataEnd","nativeSrc":"4404:7:66","nodeType":"YulIdentifier","src":"4404:7:66"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"4354:25:66","nodeType":"YulIdentifier","src":"4354:25:66"},"nativeSrc":"4354:58:66","nodeType":"YulFunctionCall","src":"4354:58:66"},"variables":[{"name":"value1_1","nativeSrc":"4332:8:66","nodeType":"YulTypedName","src":"4332:8:66","type":""},{"name":"value2_1","nativeSrc":"4342:8:66","nodeType":"YulTypedName","src":"4342:8:66","type":""}]},{"nativeSrc":"4421:18:66","nodeType":"YulAssignment","src":"4421:18:66","value":{"name":"value1_1","nativeSrc":"4431:8:66","nodeType":"YulIdentifier","src":"4431:8:66"},"variableNames":[{"name":"value1","nativeSrc":"4421:6:66","nodeType":"YulIdentifier","src":"4421:6:66"}]},{"nativeSrc":"4448:18:66","nodeType":"YulAssignment","src":"4448:18:66","value":{"name":"value2_1","nativeSrc":"4458:8:66","nodeType":"YulIdentifier","src":"4458:8:66"},"variableNames":[{"name":"value2","nativeSrc":"4448:6:66","nodeType":"YulIdentifier","src":"4448:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptr","nativeSrc":"3928:544:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3984:9:66","nodeType":"YulTypedName","src":"3984:9:66","type":""},{"name":"dataEnd","nativeSrc":"3995:7:66","nodeType":"YulTypedName","src":"3995:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4007:6:66","nodeType":"YulTypedName","src":"4007:6:66","type":""},{"name":"value1","nativeSrc":"4015:6:66","nodeType":"YulTypedName","src":"4015:6:66","type":""},{"name":"value2","nativeSrc":"4023:6:66","nodeType":"YulTypedName","src":"4023:6:66","type":""}],"src":"3928:544:66"},{"body":{"nativeSrc":"4578:76:66","nodeType":"YulBlock","src":"4578:76:66","statements":[{"nativeSrc":"4588:26:66","nodeType":"YulAssignment","src":"4588:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"4600:9:66","nodeType":"YulIdentifier","src":"4600:9:66"},{"kind":"number","nativeSrc":"4611:2:66","nodeType":"YulLiteral","src":"4611:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4596:3:66","nodeType":"YulIdentifier","src":"4596:3:66"},"nativeSrc":"4596:18:66","nodeType":"YulFunctionCall","src":"4596:18:66"},"variableNames":[{"name":"tail","nativeSrc":"4588:4:66","nodeType":"YulIdentifier","src":"4588:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4630:9:66","nodeType":"YulIdentifier","src":"4630:9:66"},{"name":"value0","nativeSrc":"4641:6:66","nodeType":"YulIdentifier","src":"4641:6:66"}],"functionName":{"name":"mstore","nativeSrc":"4623:6:66","nodeType":"YulIdentifier","src":"4623:6:66"},"nativeSrc":"4623:25:66","nodeType":"YulFunctionCall","src":"4623:25:66"},"nativeSrc":"4623:25:66","nodeType":"YulExpressionStatement","src":"4623:25:66"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"4477:177:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4547:9:66","nodeType":"YulTypedName","src":"4547:9:66","type":""},{"name":"value0","nativeSrc":"4558:6:66","nodeType":"YulTypedName","src":"4558:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4569:4:66","nodeType":"YulTypedName","src":"4569:4:66","type":""}],"src":"4477:177:66"},{"body":{"nativeSrc":"4816:188:66","nodeType":"YulBlock","src":"4816:188:66","statements":[{"nativeSrc":"4826:26:66","nodeType":"YulAssignment","src":"4826:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"4838:9:66","nodeType":"YulIdentifier","src":"4838:9:66"},{"kind":"number","nativeSrc":"4849:2:66","nodeType":"YulLiteral","src":"4849:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4834:3:66","nodeType":"YulIdentifier","src":"4834:3:66"},"nativeSrc":"4834:18:66","nodeType":"YulFunctionCall","src":"4834:18:66"},"variableNames":[{"name":"tail","nativeSrc":"4826:4:66","nodeType":"YulIdentifier","src":"4826:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4868:9:66","nodeType":"YulIdentifier","src":"4868:9:66"},{"name":"value0","nativeSrc":"4879:6:66","nodeType":"YulIdentifier","src":"4879:6:66"}],"functionName":{"name":"mstore","nativeSrc":"4861:6:66","nodeType":"YulIdentifier","src":"4861:6:66"},"nativeSrc":"4861:25:66","nodeType":"YulFunctionCall","src":"4861:25:66"},"nativeSrc":"4861:25:66","nodeType":"YulExpressionStatement","src":"4861:25:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4906:9:66","nodeType":"YulIdentifier","src":"4906:9:66"},{"kind":"number","nativeSrc":"4917:2:66","nodeType":"YulLiteral","src":"4917:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4902:3:66","nodeType":"YulIdentifier","src":"4902:3:66"},"nativeSrc":"4902:18:66","nodeType":"YulFunctionCall","src":"4902:18:66"},{"arguments":[{"name":"value1","nativeSrc":"4926:6:66","nodeType":"YulIdentifier","src":"4926:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4942:3:66","nodeType":"YulLiteral","src":"4942:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"4947:1:66","nodeType":"YulLiteral","src":"4947:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"4938:3:66","nodeType":"YulIdentifier","src":"4938:3:66"},"nativeSrc":"4938:11:66","nodeType":"YulFunctionCall","src":"4938:11:66"},{"kind":"number","nativeSrc":"4951:1:66","nodeType":"YulLiteral","src":"4951:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"4934:3:66","nodeType":"YulIdentifier","src":"4934:3:66"},"nativeSrc":"4934:19:66","nodeType":"YulFunctionCall","src":"4934:19:66"}],"functionName":{"name":"and","nativeSrc":"4922:3:66","nodeType":"YulIdentifier","src":"4922:3:66"},"nativeSrc":"4922:32:66","nodeType":"YulFunctionCall","src":"4922:32:66"}],"functionName":{"name":"mstore","nativeSrc":"4895:6:66","nodeType":"YulIdentifier","src":"4895:6:66"},"nativeSrc":"4895:60:66","nodeType":"YulFunctionCall","src":"4895:60:66"},"nativeSrc":"4895:60:66","nodeType":"YulExpressionStatement","src":"4895:60:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4975:9:66","nodeType":"YulIdentifier","src":"4975:9:66"},{"kind":"number","nativeSrc":"4986:2:66","nodeType":"YulLiteral","src":"4986:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4971:3:66","nodeType":"YulIdentifier","src":"4971:3:66"},"nativeSrc":"4971:18:66","nodeType":"YulFunctionCall","src":"4971:18:66"},{"name":"value2","nativeSrc":"4991:6:66","nodeType":"YulIdentifier","src":"4991:6:66"}],"functionName":{"name":"mstore","nativeSrc":"4964:6:66","nodeType":"YulIdentifier","src":"4964:6:66"},"nativeSrc":"4964:34:66","nodeType":"YulFunctionCall","src":"4964:34:66"},"nativeSrc":"4964:34:66","nodeType":"YulExpressionStatement","src":"4964:34:66"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed","nativeSrc":"4659:345:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4769:9:66","nodeType":"YulTypedName","src":"4769:9:66","type":""},{"name":"value2","nativeSrc":"4780:6:66","nodeType":"YulTypedName","src":"4780:6:66","type":""},{"name":"value1","nativeSrc":"4788:6:66","nodeType":"YulTypedName","src":"4788:6:66","type":""},{"name":"value0","nativeSrc":"4796:6:66","nodeType":"YulTypedName","src":"4796:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4807:4:66","nodeType":"YulTypedName","src":"4807:4:66","type":""}],"src":"4659:345:66"},{"body":{"nativeSrc":"5113:383:66","nodeType":"YulBlock","src":"5113:383:66","statements":[{"body":{"nativeSrc":"5159:16:66","nodeType":"YulBlock","src":"5159:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5168:1:66","nodeType":"YulLiteral","src":"5168:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"5171:1:66","nodeType":"YulLiteral","src":"5171:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5161:6:66","nodeType":"YulIdentifier","src":"5161:6:66"},"nativeSrc":"5161:12:66","nodeType":"YulFunctionCall","src":"5161:12:66"},"nativeSrc":"5161:12:66","nodeType":"YulExpressionStatement","src":"5161:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5134:7:66","nodeType":"YulIdentifier","src":"5134:7:66"},{"name":"headStart","nativeSrc":"5143:9:66","nodeType":"YulIdentifier","src":"5143:9:66"}],"functionName":{"name":"sub","nativeSrc":"5130:3:66","nodeType":"YulIdentifier","src":"5130:3:66"},"nativeSrc":"5130:23:66","nodeType":"YulFunctionCall","src":"5130:23:66"},{"kind":"number","nativeSrc":"5155:2:66","nodeType":"YulLiteral","src":"5155:2:66","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"5126:3:66","nodeType":"YulIdentifier","src":"5126:3:66"},"nativeSrc":"5126:32:66","nodeType":"YulFunctionCall","src":"5126:32:66"},"nativeSrc":"5123:52:66","nodeType":"YulIf","src":"5123:52:66"},{"nativeSrc":"5184:14:66","nodeType":"YulVariableDeclaration","src":"5184:14:66","value":{"kind":"number","nativeSrc":"5197:1:66","nodeType":"YulLiteral","src":"5197:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5188:5:66","nodeType":"YulTypedName","src":"5188:5:66","type":""}]},{"nativeSrc":"5207:32:66","nodeType":"YulAssignment","src":"5207:32:66","value":{"arguments":[{"name":"headStart","nativeSrc":"5229:9:66","nodeType":"YulIdentifier","src":"5229:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"5216:12:66","nodeType":"YulIdentifier","src":"5216:12:66"},"nativeSrc":"5216:23:66","nodeType":"YulFunctionCall","src":"5216:23:66"},"variableNames":[{"name":"value","nativeSrc":"5207:5:66","nodeType":"YulIdentifier","src":"5207:5:66"}]},{"nativeSrc":"5248:15:66","nodeType":"YulAssignment","src":"5248:15:66","value":{"name":"value","nativeSrc":"5258:5:66","nodeType":"YulIdentifier","src":"5258:5:66"},"variableNames":[{"name":"value0","nativeSrc":"5248:6:66","nodeType":"YulIdentifier","src":"5248:6:66"}]},{"nativeSrc":"5272:47:66","nodeType":"YulVariableDeclaration","src":"5272:47:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5304:9:66","nodeType":"YulIdentifier","src":"5304:9:66"},{"kind":"number","nativeSrc":"5315:2:66","nodeType":"YulLiteral","src":"5315:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5300:3:66","nodeType":"YulIdentifier","src":"5300:3:66"},"nativeSrc":"5300:18:66","nodeType":"YulFunctionCall","src":"5300:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"5287:12:66","nodeType":"YulIdentifier","src":"5287:12:66"},"nativeSrc":"5287:32:66","nodeType":"YulFunctionCall","src":"5287:32:66"},"variables":[{"name":"value_1","nativeSrc":"5276:7:66","nodeType":"YulTypedName","src":"5276:7:66","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"5353:7:66","nodeType":"YulIdentifier","src":"5353:7:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5328:24:66","nodeType":"YulIdentifier","src":"5328:24:66"},"nativeSrc":"5328:33:66","nodeType":"YulFunctionCall","src":"5328:33:66"},"nativeSrc":"5328:33:66","nodeType":"YulExpressionStatement","src":"5328:33:66"},{"nativeSrc":"5370:17:66","nodeType":"YulAssignment","src":"5370:17:66","value":{"name":"value_1","nativeSrc":"5380:7:66","nodeType":"YulIdentifier","src":"5380:7:66"},"variableNames":[{"name":"value1","nativeSrc":"5370:6:66","nodeType":"YulIdentifier","src":"5370:6:66"}]},{"nativeSrc":"5396:16:66","nodeType":"YulVariableDeclaration","src":"5396:16:66","value":{"kind":"number","nativeSrc":"5411:1:66","nodeType":"YulLiteral","src":"5411:1:66","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"5400:7:66","nodeType":"YulTypedName","src":"5400:7:66","type":""}]},{"nativeSrc":"5421:43:66","nodeType":"YulAssignment","src":"5421:43:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5449:9:66","nodeType":"YulIdentifier","src":"5449:9:66"},{"kind":"number","nativeSrc":"5460:2:66","nodeType":"YulLiteral","src":"5460:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5445:3:66","nodeType":"YulIdentifier","src":"5445:3:66"},"nativeSrc":"5445:18:66","nodeType":"YulFunctionCall","src":"5445:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"5432:12:66","nodeType":"YulIdentifier","src":"5432:12:66"},"nativeSrc":"5432:32:66","nodeType":"YulFunctionCall","src":"5432:32:66"},"variableNames":[{"name":"value_2","nativeSrc":"5421:7:66","nodeType":"YulIdentifier","src":"5421:7:66"}]},{"nativeSrc":"5473:17:66","nodeType":"YulAssignment","src":"5473:17:66","value":{"name":"value_2","nativeSrc":"5483:7:66","nodeType":"YulIdentifier","src":"5483:7:66"},"variableNames":[{"name":"value2","nativeSrc":"5473:6:66","nodeType":"YulIdentifier","src":"5473:6:66"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_uint256","nativeSrc":"5009:487:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5063:9:66","nodeType":"YulTypedName","src":"5063:9:66","type":""},{"name":"dataEnd","nativeSrc":"5074:7:66","nodeType":"YulTypedName","src":"5074:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5086:6:66","nodeType":"YulTypedName","src":"5086:6:66","type":""},{"name":"value1","nativeSrc":"5094:6:66","nodeType":"YulTypedName","src":"5094:6:66","type":""},{"name":"value2","nativeSrc":"5102:6:66","nodeType":"YulTypedName","src":"5102:6:66","type":""}],"src":"5009:487:66"},{"body":{"nativeSrc":"5616:362:66","nodeType":"YulBlock","src":"5616:362:66","statements":[{"body":{"nativeSrc":"5662:16:66","nodeType":"YulBlock","src":"5662:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5671:1:66","nodeType":"YulLiteral","src":"5671:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"5674:1:66","nodeType":"YulLiteral","src":"5674:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5664:6:66","nodeType":"YulIdentifier","src":"5664:6:66"},"nativeSrc":"5664:12:66","nodeType":"YulFunctionCall","src":"5664:12:66"},"nativeSrc":"5664:12:66","nodeType":"YulExpressionStatement","src":"5664:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5637:7:66","nodeType":"YulIdentifier","src":"5637:7:66"},{"name":"headStart","nativeSrc":"5646:9:66","nodeType":"YulIdentifier","src":"5646:9:66"}],"functionName":{"name":"sub","nativeSrc":"5633:3:66","nodeType":"YulIdentifier","src":"5633:3:66"},"nativeSrc":"5633:23:66","nodeType":"YulFunctionCall","src":"5633:23:66"},{"kind":"number","nativeSrc":"5658:2:66","nodeType":"YulLiteral","src":"5658:2:66","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"5629:3:66","nodeType":"YulIdentifier","src":"5629:3:66"},"nativeSrc":"5629:32:66","nodeType":"YulFunctionCall","src":"5629:32:66"},"nativeSrc":"5626:52:66","nodeType":"YulIf","src":"5626:52:66"},{"nativeSrc":"5687:14:66","nodeType":"YulVariableDeclaration","src":"5687:14:66","value":{"kind":"number","nativeSrc":"5700:1:66","nodeType":"YulLiteral","src":"5700:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5691:5:66","nodeType":"YulTypedName","src":"5691:5:66","type":""}]},{"nativeSrc":"5710:25:66","nodeType":"YulAssignment","src":"5710:25:66","value":{"arguments":[{"name":"headStart","nativeSrc":"5725:9:66","nodeType":"YulIdentifier","src":"5725:9:66"}],"functionName":{"name":"mload","nativeSrc":"5719:5:66","nodeType":"YulIdentifier","src":"5719:5:66"},"nativeSrc":"5719:16:66","nodeType":"YulFunctionCall","src":"5719:16:66"},"variableNames":[{"name":"value","nativeSrc":"5710:5:66","nodeType":"YulIdentifier","src":"5710:5:66"}]},{"nativeSrc":"5744:15:66","nodeType":"YulAssignment","src":"5744:15:66","value":{"name":"value","nativeSrc":"5754:5:66","nodeType":"YulIdentifier","src":"5754:5:66"},"variableNames":[{"name":"value0","nativeSrc":"5744:6:66","nodeType":"YulIdentifier","src":"5744:6:66"}]},{"nativeSrc":"5768:40:66","nodeType":"YulVariableDeclaration","src":"5768:40:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5793:9:66","nodeType":"YulIdentifier","src":"5793:9:66"},{"kind":"number","nativeSrc":"5804:2:66","nodeType":"YulLiteral","src":"5804:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5789:3:66","nodeType":"YulIdentifier","src":"5789:3:66"},"nativeSrc":"5789:18:66","nodeType":"YulFunctionCall","src":"5789:18:66"}],"functionName":{"name":"mload","nativeSrc":"5783:5:66","nodeType":"YulIdentifier","src":"5783:5:66"},"nativeSrc":"5783:25:66","nodeType":"YulFunctionCall","src":"5783:25:66"},"variables":[{"name":"value_1","nativeSrc":"5772:7:66","nodeType":"YulTypedName","src":"5772:7:66","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"5842:7:66","nodeType":"YulIdentifier","src":"5842:7:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5817:24:66","nodeType":"YulIdentifier","src":"5817:24:66"},"nativeSrc":"5817:33:66","nodeType":"YulFunctionCall","src":"5817:33:66"},"nativeSrc":"5817:33:66","nodeType":"YulExpressionStatement","src":"5817:33:66"},{"nativeSrc":"5859:17:66","nodeType":"YulAssignment","src":"5859:17:66","value":{"name":"value_1","nativeSrc":"5869:7:66","nodeType":"YulIdentifier","src":"5869:7:66"},"variableNames":[{"name":"value1","nativeSrc":"5859:6:66","nodeType":"YulIdentifier","src":"5859:6:66"}]},{"nativeSrc":"5885:16:66","nodeType":"YulVariableDeclaration","src":"5885:16:66","value":{"kind":"number","nativeSrc":"5900:1:66","nodeType":"YulLiteral","src":"5900:1:66","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"5889:7:66","nodeType":"YulTypedName","src":"5889:7:66","type":""}]},{"nativeSrc":"5910:36:66","nodeType":"YulAssignment","src":"5910:36:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5931:9:66","nodeType":"YulIdentifier","src":"5931:9:66"},{"kind":"number","nativeSrc":"5942:2:66","nodeType":"YulLiteral","src":"5942:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5927:3:66","nodeType":"YulIdentifier","src":"5927:3:66"},"nativeSrc":"5927:18:66","nodeType":"YulFunctionCall","src":"5927:18:66"}],"functionName":{"name":"mload","nativeSrc":"5921:5:66","nodeType":"YulIdentifier","src":"5921:5:66"},"nativeSrc":"5921:25:66","nodeType":"YulFunctionCall","src":"5921:25:66"},"variableNames":[{"name":"value_2","nativeSrc":"5910:7:66","nodeType":"YulIdentifier","src":"5910:7:66"}]},{"nativeSrc":"5955:17:66","nodeType":"YulAssignment","src":"5955:17:66","value":{"name":"value_2","nativeSrc":"5965:7:66","nodeType":"YulIdentifier","src":"5965:7:66"},"variableNames":[{"name":"value2","nativeSrc":"5955:6:66","nodeType":"YulIdentifier","src":"5955:6:66"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_uint256_fromMemory","nativeSrc":"5501:477:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5566:9:66","nodeType":"YulTypedName","src":"5566:9:66","type":""},{"name":"dataEnd","nativeSrc":"5577:7:66","nodeType":"YulTypedName","src":"5577:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5589:6:66","nodeType":"YulTypedName","src":"5589:6:66","type":""},{"name":"value1","nativeSrc":"5597:6:66","nodeType":"YulTypedName","src":"5597:6:66","type":""},{"name":"value2","nativeSrc":"5605:6:66","nodeType":"YulTypedName","src":"5605:6:66","type":""}],"src":"5501:477:66"},{"body":{"nativeSrc":"6064:170:66","nodeType":"YulBlock","src":"6064:170:66","statements":[{"body":{"nativeSrc":"6110:16:66","nodeType":"YulBlock","src":"6110:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6119:1:66","nodeType":"YulLiteral","src":"6119:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"6122:1:66","nodeType":"YulLiteral","src":"6122:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6112:6:66","nodeType":"YulIdentifier","src":"6112:6:66"},"nativeSrc":"6112:12:66","nodeType":"YulFunctionCall","src":"6112:12:66"},"nativeSrc":"6112:12:66","nodeType":"YulExpressionStatement","src":"6112:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6085:7:66","nodeType":"YulIdentifier","src":"6085:7:66"},{"name":"headStart","nativeSrc":"6094:9:66","nodeType":"YulIdentifier","src":"6094:9:66"}],"functionName":{"name":"sub","nativeSrc":"6081:3:66","nodeType":"YulIdentifier","src":"6081:3:66"},"nativeSrc":"6081:23:66","nodeType":"YulFunctionCall","src":"6081:23:66"},{"kind":"number","nativeSrc":"6106:2:66","nodeType":"YulLiteral","src":"6106:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"6077:3:66","nodeType":"YulIdentifier","src":"6077:3:66"},"nativeSrc":"6077:32:66","nodeType":"YulFunctionCall","src":"6077:32:66"},"nativeSrc":"6074:52:66","nodeType":"YulIf","src":"6074:52:66"},{"nativeSrc":"6135:29:66","nodeType":"YulVariableDeclaration","src":"6135:29:66","value":{"arguments":[{"name":"headStart","nativeSrc":"6154:9:66","nodeType":"YulIdentifier","src":"6154:9:66"}],"functionName":{"name":"mload","nativeSrc":"6148:5:66","nodeType":"YulIdentifier","src":"6148:5:66"},"nativeSrc":"6148:16:66","nodeType":"YulFunctionCall","src":"6148:16:66"},"variables":[{"name":"value","nativeSrc":"6139:5:66","nodeType":"YulTypedName","src":"6139:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6198:5:66","nodeType":"YulIdentifier","src":"6198:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6173:24:66","nodeType":"YulIdentifier","src":"6173:24:66"},"nativeSrc":"6173:31:66","nodeType":"YulFunctionCall","src":"6173:31:66"},"nativeSrc":"6173:31:66","nodeType":"YulExpressionStatement","src":"6173:31:66"},{"nativeSrc":"6213:15:66","nodeType":"YulAssignment","src":"6213:15:66","value":{"name":"value","nativeSrc":"6223:5:66","nodeType":"YulIdentifier","src":"6223:5:66"},"variableNames":[{"name":"value0","nativeSrc":"6213:6:66","nodeType":"YulIdentifier","src":"6213:6:66"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"5983:251:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6030:9:66","nodeType":"YulTypedName","src":"6030:9:66","type":""},{"name":"dataEnd","nativeSrc":"6041:7:66","nodeType":"YulTypedName","src":"6041:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6053:6:66","nodeType":"YulTypedName","src":"6053:6:66","type":""}],"src":"5983:251:66"},{"body":{"nativeSrc":"6413:164:66","nodeType":"YulBlock","src":"6413:164:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6430:9:66","nodeType":"YulIdentifier","src":"6430:9:66"},{"kind":"number","nativeSrc":"6441:2:66","nodeType":"YulLiteral","src":"6441:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"6423:6:66","nodeType":"YulIdentifier","src":"6423:6:66"},"nativeSrc":"6423:21:66","nodeType":"YulFunctionCall","src":"6423:21:66"},"nativeSrc":"6423:21:66","nodeType":"YulExpressionStatement","src":"6423:21:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6464:9:66","nodeType":"YulIdentifier","src":"6464:9:66"},{"kind":"number","nativeSrc":"6475:2:66","nodeType":"YulLiteral","src":"6475:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6460:3:66","nodeType":"YulIdentifier","src":"6460:3:66"},"nativeSrc":"6460:18:66","nodeType":"YulFunctionCall","src":"6460:18:66"},{"kind":"number","nativeSrc":"6480:2:66","nodeType":"YulLiteral","src":"6480:2:66","type":"","value":"14"}],"functionName":{"name":"mstore","nativeSrc":"6453:6:66","nodeType":"YulIdentifier","src":"6453:6:66"},"nativeSrc":"6453:30:66","nodeType":"YulFunctionCall","src":"6453:30:66"},"nativeSrc":"6453:30:66","nodeType":"YulExpressionStatement","src":"6453:30:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6503:9:66","nodeType":"YulIdentifier","src":"6503:9:66"},{"kind":"number","nativeSrc":"6514:2:66","nodeType":"YulLiteral","src":"6514:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6499:3:66","nodeType":"YulIdentifier","src":"6499:3:66"},"nativeSrc":"6499:18:66","nodeType":"YulFunctionCall","src":"6499:18:66"},{"hexValue":"496e76616c6964207369676e6572","kind":"string","nativeSrc":"6519:16:66","nodeType":"YulLiteral","src":"6519:16:66","type":"","value":"Invalid signer"}],"functionName":{"name":"mstore","nativeSrc":"6492:6:66","nodeType":"YulIdentifier","src":"6492:6:66"},"nativeSrc":"6492:44:66","nodeType":"YulFunctionCall","src":"6492:44:66"},"nativeSrc":"6492:44:66","nodeType":"YulExpressionStatement","src":"6492:44:66"},{"nativeSrc":"6545:26:66","nodeType":"YulAssignment","src":"6545:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"6557:9:66","nodeType":"YulIdentifier","src":"6557:9:66"},{"kind":"number","nativeSrc":"6568:2:66","nodeType":"YulLiteral","src":"6568:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"6553:3:66","nodeType":"YulIdentifier","src":"6553:3:66"},"nativeSrc":"6553:18:66","nodeType":"YulFunctionCall","src":"6553:18:66"},"variableNames":[{"name":"tail","nativeSrc":"6545:4:66","nodeType":"YulIdentifier","src":"6545:4:66"}]}]},"name":"abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"6239:338:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6390:9:66","nodeType":"YulTypedName","src":"6390:9:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6404:4:66","nodeType":"YulTypedName","src":"6404:4:66","type":""}],"src":"6239:338:66"},{"body":{"nativeSrc":"6629:185:66","nodeType":"YulBlock","src":"6629:185:66","statements":[{"body":{"nativeSrc":"6668:111:66","nodeType":"YulBlock","src":"6668:111:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6689:1:66","nodeType":"YulLiteral","src":"6689:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"6696:3:66","nodeType":"YulLiteral","src":"6696:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"6701:10:66","nodeType":"YulLiteral","src":"6701:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"6692:3:66","nodeType":"YulIdentifier","src":"6692:3:66"},"nativeSrc":"6692:20:66","nodeType":"YulFunctionCall","src":"6692:20:66"}],"functionName":{"name":"mstore","nativeSrc":"6682:6:66","nodeType":"YulIdentifier","src":"6682:6:66"},"nativeSrc":"6682:31:66","nodeType":"YulFunctionCall","src":"6682:31:66"},"nativeSrc":"6682:31:66","nodeType":"YulExpressionStatement","src":"6682:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6733:1:66","nodeType":"YulLiteral","src":"6733:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"6736:4:66","nodeType":"YulLiteral","src":"6736:4:66","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"6726:6:66","nodeType":"YulIdentifier","src":"6726:6:66"},"nativeSrc":"6726:15:66","nodeType":"YulFunctionCall","src":"6726:15:66"},"nativeSrc":"6726:15:66","nodeType":"YulExpressionStatement","src":"6726:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6761:1:66","nodeType":"YulLiteral","src":"6761:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"6764:4:66","nodeType":"YulLiteral","src":"6764:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"6754:6:66","nodeType":"YulIdentifier","src":"6754:6:66"},"nativeSrc":"6754:15:66","nodeType":"YulFunctionCall","src":"6754:15:66"},"nativeSrc":"6754:15:66","nodeType":"YulExpressionStatement","src":"6754:15:66"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"6645:5:66","nodeType":"YulIdentifier","src":"6645:5:66"},{"arguments":[{"kind":"number","nativeSrc":"6656:1:66","nodeType":"YulLiteral","src":"6656:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"6652:3:66","nodeType":"YulIdentifier","src":"6652:3:66"},"nativeSrc":"6652:6:66","nodeType":"YulFunctionCall","src":"6652:6:66"}],"functionName":{"name":"eq","nativeSrc":"6642:2:66","nodeType":"YulIdentifier","src":"6642:2:66"},"nativeSrc":"6642:17:66","nodeType":"YulFunctionCall","src":"6642:17:66"},"nativeSrc":"6639:140:66","nodeType":"YulIf","src":"6639:140:66"},{"nativeSrc":"6788:20:66","nodeType":"YulAssignment","src":"6788:20:66","value":{"arguments":[{"name":"value","nativeSrc":"6799:5:66","nodeType":"YulIdentifier","src":"6799:5:66"},{"kind":"number","nativeSrc":"6806:1:66","nodeType":"YulLiteral","src":"6806:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6795:3:66","nodeType":"YulIdentifier","src":"6795:3:66"},"nativeSrc":"6795:13:66","nodeType":"YulFunctionCall","src":"6795:13:66"},"variableNames":[{"name":"ret","nativeSrc":"6788:3:66","nodeType":"YulIdentifier","src":"6788:3:66"}]}]},"name":"increment_t_uint256","nativeSrc":"6582:232:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"6611:5:66","nodeType":"YulTypedName","src":"6611:5:66","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"6621:3:66","nodeType":"YulTypedName","src":"6621:3:66","type":""}],"src":"6582:232:66"},{"body":{"nativeSrc":"6966:124:66","nodeType":"YulBlock","src":"6966:124:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"6989:3:66","nodeType":"YulIdentifier","src":"6989:3:66"},{"name":"value0","nativeSrc":"6994:6:66","nodeType":"YulIdentifier","src":"6994:6:66"},{"name":"value1","nativeSrc":"7002:6:66","nodeType":"YulIdentifier","src":"7002:6:66"}],"functionName":{"name":"calldatacopy","nativeSrc":"6976:12:66","nodeType":"YulIdentifier","src":"6976:12:66"},"nativeSrc":"6976:33:66","nodeType":"YulFunctionCall","src":"6976:33:66"},"nativeSrc":"6976:33:66","nodeType":"YulExpressionStatement","src":"6976:33:66"},{"nativeSrc":"7018:26:66","nodeType":"YulVariableDeclaration","src":"7018:26:66","value":{"arguments":[{"name":"pos","nativeSrc":"7032:3:66","nodeType":"YulIdentifier","src":"7032:3:66"},{"name":"value1","nativeSrc":"7037:6:66","nodeType":"YulIdentifier","src":"7037:6:66"}],"functionName":{"name":"add","nativeSrc":"7028:3:66","nodeType":"YulIdentifier","src":"7028:3:66"},"nativeSrc":"7028:16:66","nodeType":"YulFunctionCall","src":"7028:16:66"},"variables":[{"name":"_1","nativeSrc":"7022:2:66","nodeType":"YulTypedName","src":"7022:2:66","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"7060:2:66","nodeType":"YulIdentifier","src":"7060:2:66"},{"kind":"number","nativeSrc":"7064:1:66","nodeType":"YulLiteral","src":"7064:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"7053:6:66","nodeType":"YulIdentifier","src":"7053:6:66"},"nativeSrc":"7053:13:66","nodeType":"YulFunctionCall","src":"7053:13:66"},"nativeSrc":"7053:13:66","nodeType":"YulExpressionStatement","src":"7053:13:66"},{"nativeSrc":"7075:9:66","nodeType":"YulAssignment","src":"7075:9:66","value":{"name":"_1","nativeSrc":"7082:2:66","nodeType":"YulIdentifier","src":"7082:2:66"},"variableNames":[{"name":"end","nativeSrc":"7075:3:66","nodeType":"YulIdentifier","src":"7075:3:66"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"6819:271:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"6934:3:66","nodeType":"YulTypedName","src":"6934:3:66","type":""},{"name":"value1","nativeSrc":"6939:6:66","nodeType":"YulTypedName","src":"6939:6:66","type":""},{"name":"value0","nativeSrc":"6947:6:66","nodeType":"YulTypedName","src":"6947:6:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"6958:3:66","nodeType":"YulTypedName","src":"6958:3:66","type":""}],"src":"6819:271:66"},{"body":{"nativeSrc":"7269:161:66","nodeType":"YulBlock","src":"7269:161:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7286:9:66","nodeType":"YulIdentifier","src":"7286:9:66"},{"kind":"number","nativeSrc":"7297:2:66","nodeType":"YulLiteral","src":"7297:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"7279:6:66","nodeType":"YulIdentifier","src":"7279:6:66"},"nativeSrc":"7279:21:66","nodeType":"YulFunctionCall","src":"7279:21:66"},"nativeSrc":"7279:21:66","nodeType":"YulExpressionStatement","src":"7279:21:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7320:9:66","nodeType":"YulIdentifier","src":"7320:9:66"},{"kind":"number","nativeSrc":"7331:2:66","nodeType":"YulLiteral","src":"7331:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7316:3:66","nodeType":"YulIdentifier","src":"7316:3:66"},"nativeSrc":"7316:18:66","nodeType":"YulFunctionCall","src":"7316:18:66"},{"kind":"number","nativeSrc":"7336:2:66","nodeType":"YulLiteral","src":"7336:2:66","type":"","value":"11"}],"functionName":{"name":"mstore","nativeSrc":"7309:6:66","nodeType":"YulIdentifier","src":"7309:6:66"},"nativeSrc":"7309:30:66","nodeType":"YulFunctionCall","src":"7309:30:66"},"nativeSrc":"7309:30:66","nodeType":"YulExpressionStatement","src":"7309:30:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7359:9:66","nodeType":"YulIdentifier","src":"7359:9:66"},{"kind":"number","nativeSrc":"7370:2:66","nodeType":"YulLiteral","src":"7370:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7355:3:66","nodeType":"YulIdentifier","src":"7355:3:66"},"nativeSrc":"7355:18:66","nodeType":"YulFunctionCall","src":"7355:18:66"},{"hexValue":"43616c6c206661696c6564","kind":"string","nativeSrc":"7375:13:66","nodeType":"YulLiteral","src":"7375:13:66","type":"","value":"Call failed"}],"functionName":{"name":"mstore","nativeSrc":"7348:6:66","nodeType":"YulIdentifier","src":"7348:6:66"},"nativeSrc":"7348:41:66","nodeType":"YulFunctionCall","src":"7348:41:66"},"nativeSrc":"7348:41:66","nodeType":"YulExpressionStatement","src":"7348:41:66"},{"nativeSrc":"7398:26:66","nodeType":"YulAssignment","src":"7398:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"7410:9:66","nodeType":"YulIdentifier","src":"7410:9:66"},{"kind":"number","nativeSrc":"7421:2:66","nodeType":"YulLiteral","src":"7421:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7406:3:66","nodeType":"YulIdentifier","src":"7406:3:66"},"nativeSrc":"7406:18:66","nodeType":"YulFunctionCall","src":"7406:18:66"},"variableNames":[{"name":"tail","nativeSrc":"7398:4:66","nodeType":"YulIdentifier","src":"7398:4:66"}]}]},"name":"abi_encode_tuple_t_stringliteral_066ad49a0ed9e5d6a9f3c20fca13a038f0a5d629f0aaf09d634ae2a7c232ac2b__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"7095:335:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7246:9:66","nodeType":"YulTypedName","src":"7246:9:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7260:4:66","nodeType":"YulTypedName","src":"7260:4:66","type":""}],"src":"7095:335:66"},{"body":{"nativeSrc":"7609:169:66","nodeType":"YulBlock","src":"7609:169:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7626:9:66","nodeType":"YulIdentifier","src":"7626:9:66"},{"kind":"number","nativeSrc":"7637:2:66","nodeType":"YulLiteral","src":"7637:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"7619:6:66","nodeType":"YulIdentifier","src":"7619:6:66"},"nativeSrc":"7619:21:66","nodeType":"YulFunctionCall","src":"7619:21:66"},"nativeSrc":"7619:21:66","nodeType":"YulExpressionStatement","src":"7619:21:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7660:9:66","nodeType":"YulIdentifier","src":"7660:9:66"},{"kind":"number","nativeSrc":"7671:2:66","nodeType":"YulLiteral","src":"7671:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7656:3:66","nodeType":"YulIdentifier","src":"7656:3:66"},"nativeSrc":"7656:18:66","nodeType":"YulFunctionCall","src":"7656:18:66"},{"kind":"number","nativeSrc":"7676:2:66","nodeType":"YulLiteral","src":"7676:2:66","type":"","value":"19"}],"functionName":{"name":"mstore","nativeSrc":"7649:6:66","nodeType":"YulIdentifier","src":"7649:6:66"},"nativeSrc":"7649:30:66","nodeType":"YulFunctionCall","src":"7649:30:66"},"nativeSrc":"7649:30:66","nodeType":"YulExpressionStatement","src":"7649:30:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7699:9:66","nodeType":"YulIdentifier","src":"7699:9:66"},{"kind":"number","nativeSrc":"7710:2:66","nodeType":"YulLiteral","src":"7710:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7695:3:66","nodeType":"YulIdentifier","src":"7695:3:66"},"nativeSrc":"7695:18:66","nodeType":"YulFunctionCall","src":"7695:18:66"},{"hexValue":"44656c656761746563616c6c206661696c6564","kind":"string","nativeSrc":"7715:21:66","nodeType":"YulLiteral","src":"7715:21:66","type":"","value":"Delegatecall failed"}],"functionName":{"name":"mstore","nativeSrc":"7688:6:66","nodeType":"YulIdentifier","src":"7688:6:66"},"nativeSrc":"7688:49:66","nodeType":"YulFunctionCall","src":"7688:49:66"},"nativeSrc":"7688:49:66","nodeType":"YulExpressionStatement","src":"7688:49:66"},{"nativeSrc":"7746:26:66","nodeType":"YulAssignment","src":"7746:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"7758:9:66","nodeType":"YulIdentifier","src":"7758:9:66"},{"kind":"number","nativeSrc":"7769:2:66","nodeType":"YulLiteral","src":"7769:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7754:3:66","nodeType":"YulIdentifier","src":"7754:3:66"},"nativeSrc":"7754:18:66","nodeType":"YulFunctionCall","src":"7754:18:66"},"variableNames":[{"name":"tail","nativeSrc":"7746:4:66","nodeType":"YulIdentifier","src":"7746:4:66"}]}]},"name":"abi_encode_tuple_t_stringliteral_f359bfbeef909164abd0bd7bf77897770685caeb4aad15b1df64fe1f5028d5eb__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"7435:343:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7586:9:66","nodeType":"YulTypedName","src":"7586:9:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7600:4:66","nodeType":"YulTypedName","src":"7600:4:66","type":""}],"src":"7435:343:66"},{"body":{"nativeSrc":"7957:171:66","nodeType":"YulBlock","src":"7957:171:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7974:9:66","nodeType":"YulIdentifier","src":"7974:9:66"},{"kind":"number","nativeSrc":"7985:2:66","nodeType":"YulLiteral","src":"7985:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"7967:6:66","nodeType":"YulIdentifier","src":"7967:6:66"},"nativeSrc":"7967:21:66","nodeType":"YulFunctionCall","src":"7967:21:66"},"nativeSrc":"7967:21:66","nodeType":"YulExpressionStatement","src":"7967:21:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8008:9:66","nodeType":"YulIdentifier","src":"8008:9:66"},{"kind":"number","nativeSrc":"8019:2:66","nodeType":"YulLiteral","src":"8019:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8004:3:66","nodeType":"YulIdentifier","src":"8004:3:66"},"nativeSrc":"8004:18:66","nodeType":"YulFunctionCall","src":"8004:18:66"},{"kind":"number","nativeSrc":"8024:2:66","nodeType":"YulLiteral","src":"8024:2:66","type":"","value":"21"}],"functionName":{"name":"mstore","nativeSrc":"7997:6:66","nodeType":"YulIdentifier","src":"7997:6:66"},"nativeSrc":"7997:30:66","nodeType":"YulFunctionCall","src":"7997:30:66"},"nativeSrc":"7997:30:66","nodeType":"YulExpressionStatement","src":"7997:30:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8047:9:66","nodeType":"YulIdentifier","src":"8047:9:66"},{"kind":"number","nativeSrc":"8058:2:66","nodeType":"YulLiteral","src":"8058:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8043:3:66","nodeType":"YulIdentifier","src":"8043:3:66"},"nativeSrc":"8043:18:66","nodeType":"YulFunctionCall","src":"8043:18:66"},{"hexValue":"556e737570706f72746564206f7065726174696f6e","kind":"string","nativeSrc":"8063:23:66","nodeType":"YulLiteral","src":"8063:23:66","type":"","value":"Unsupported operation"}],"functionName":{"name":"mstore","nativeSrc":"8036:6:66","nodeType":"YulIdentifier","src":"8036:6:66"},"nativeSrc":"8036:51:66","nodeType":"YulFunctionCall","src":"8036:51:66"},"nativeSrc":"8036:51:66","nodeType":"YulExpressionStatement","src":"8036:51:66"},{"nativeSrc":"8096:26:66","nodeType":"YulAssignment","src":"8096:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"8108:9:66","nodeType":"YulIdentifier","src":"8108:9:66"},{"kind":"number","nativeSrc":"8119:2:66","nodeType":"YulLiteral","src":"8119:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8104:3:66","nodeType":"YulIdentifier","src":"8104:3:66"},"nativeSrc":"8104:18:66","nodeType":"YulFunctionCall","src":"8104:18:66"},"variableNames":[{"name":"tail","nativeSrc":"8096:4:66","nodeType":"YulIdentifier","src":"8096:4:66"}]}]},"name":"abi_encode_tuple_t_stringliteral_d7c7d2b236b51fd89629e4d9859becd69328dedbd10a2b39b9506664e672e4f5__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"7783:345:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7934:9:66","nodeType":"YulTypedName","src":"7934:9:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7948:4:66","nodeType":"YulTypedName","src":"7948:4:66","type":""}],"src":"7783:345:66"},{"body":{"nativeSrc":"8307:169:66","nodeType":"YulBlock","src":"8307:169:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8324:9:66","nodeType":"YulIdentifier","src":"8324:9:66"},{"kind":"number","nativeSrc":"8335:2:66","nodeType":"YulLiteral","src":"8335:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"8317:6:66","nodeType":"YulIdentifier","src":"8317:6:66"},"nativeSrc":"8317:21:66","nodeType":"YulFunctionCall","src":"8317:21:66"},"nativeSrc":"8317:21:66","nodeType":"YulExpressionStatement","src":"8317:21:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8358:9:66","nodeType":"YulIdentifier","src":"8358:9:66"},{"kind":"number","nativeSrc":"8369:2:66","nodeType":"YulLiteral","src":"8369:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8354:3:66","nodeType":"YulIdentifier","src":"8354:3:66"},"nativeSrc":"8354:18:66","nodeType":"YulFunctionCall","src":"8354:18:66"},{"kind":"number","nativeSrc":"8374:2:66","nodeType":"YulLiteral","src":"8374:2:66","type":"","value":"19"}],"functionName":{"name":"mstore","nativeSrc":"8347:6:66","nodeType":"YulIdentifier","src":"8347:6:66"},"nativeSrc":"8347:30:66","nodeType":"YulFunctionCall","src":"8347:30:66"},"nativeSrc":"8347:30:66","nodeType":"YulExpressionStatement","src":"8347:30:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8397:9:66","nodeType":"YulIdentifier","src":"8397:9:66"},{"kind":"number","nativeSrc":"8408:2:66","nodeType":"YulLiteral","src":"8408:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8393:3:66","nodeType":"YulIdentifier","src":"8393:3:66"},"nativeSrc":"8393:18:66","nodeType":"YulFunctionCall","src":"8393:18:66"},{"hexValue":"416c726561647920696e697469616c697a6564","kind":"string","nativeSrc":"8413:21:66","nodeType":"YulLiteral","src":"8413:21:66","type":"","value":"Already initialized"}],"functionName":{"name":"mstore","nativeSrc":"8386:6:66","nodeType":"YulIdentifier","src":"8386:6:66"},"nativeSrc":"8386:49:66","nodeType":"YulFunctionCall","src":"8386:49:66"},"nativeSrc":"8386:49:66","nodeType":"YulExpressionStatement","src":"8386:49:66"},{"nativeSrc":"8444:26:66","nodeType":"YulAssignment","src":"8444:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"8456:9:66","nodeType":"YulIdentifier","src":"8456:9:66"},{"kind":"number","nativeSrc":"8467:2:66","nodeType":"YulLiteral","src":"8467:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8452:3:66","nodeType":"YulIdentifier","src":"8452:3:66"},"nativeSrc":"8452:18:66","nodeType":"YulFunctionCall","src":"8452:18:66"},"variableNames":[{"name":"tail","nativeSrc":"8444:4:66","nodeType":"YulIdentifier","src":"8444:4:66"}]}]},"name":"abi_encode_tuple_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"8133:343:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8284:9:66","nodeType":"YulTypedName","src":"8284:9:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8298:4:66","nodeType":"YulTypedName","src":"8298:4:66","type":""}],"src":"8133:343:66"},{"body":{"nativeSrc":"8513:95:66","nodeType":"YulBlock","src":"8513:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8530:1:66","nodeType":"YulLiteral","src":"8530:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"8537:3:66","nodeType":"YulLiteral","src":"8537:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"8542:10:66","nodeType":"YulLiteral","src":"8542:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"8533:3:66","nodeType":"YulIdentifier","src":"8533:3:66"},"nativeSrc":"8533:20:66","nodeType":"YulFunctionCall","src":"8533:20:66"}],"functionName":{"name":"mstore","nativeSrc":"8523:6:66","nodeType":"YulIdentifier","src":"8523:6:66"},"nativeSrc":"8523:31:66","nodeType":"YulFunctionCall","src":"8523:31:66"},"nativeSrc":"8523:31:66","nodeType":"YulExpressionStatement","src":"8523:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8570:1:66","nodeType":"YulLiteral","src":"8570:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"8573:4:66","nodeType":"YulLiteral","src":"8573:4:66","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"8563:6:66","nodeType":"YulIdentifier","src":"8563:6:66"},"nativeSrc":"8563:15:66","nodeType":"YulFunctionCall","src":"8563:15:66"},"nativeSrc":"8563:15:66","nodeType":"YulExpressionStatement","src":"8563:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8594:1:66","nodeType":"YulLiteral","src":"8594:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"8597:4:66","nodeType":"YulLiteral","src":"8597:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8587:6:66","nodeType":"YulIdentifier","src":"8587:6:66"},"nativeSrc":"8587:15:66","nodeType":"YulFunctionCall","src":"8587:15:66"},"nativeSrc":"8587:15:66","nodeType":"YulExpressionStatement","src":"8587:15:66"}]},"name":"panic_error_0x21","nativeSrc":"8481:127:66","nodeType":"YulFunctionDefinition","src":"8481:127:66"},{"body":{"nativeSrc":"8760:141:66","nodeType":"YulBlock","src":"8760:141:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8777:9:66","nodeType":"YulIdentifier","src":"8777:9:66"},{"name":"value0","nativeSrc":"8788:6:66","nodeType":"YulIdentifier","src":"8788:6:66"}],"functionName":{"name":"mstore","nativeSrc":"8770:6:66","nodeType":"YulIdentifier","src":"8770:6:66"},"nativeSrc":"8770:25:66","nodeType":"YulFunctionCall","src":"8770:25:66"},"nativeSrc":"8770:25:66","nodeType":"YulExpressionStatement","src":"8770:25:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8815:9:66","nodeType":"YulIdentifier","src":"8815:9:66"},{"kind":"number","nativeSrc":"8826:2:66","nodeType":"YulLiteral","src":"8826:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8811:3:66","nodeType":"YulIdentifier","src":"8811:3:66"},"nativeSrc":"8811:18:66","nodeType":"YulFunctionCall","src":"8811:18:66"},{"kind":"number","nativeSrc":"8831:2:66","nodeType":"YulLiteral","src":"8831:2:66","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"8804:6:66","nodeType":"YulIdentifier","src":"8804:6:66"},"nativeSrc":"8804:30:66","nodeType":"YulFunctionCall","src":"8804:30:66"},"nativeSrc":"8804:30:66","nodeType":"YulExpressionStatement","src":"8804:30:66"},{"nativeSrc":"8843:52:66","nodeType":"YulAssignment","src":"8843:52:66","value":{"arguments":[{"name":"value1","nativeSrc":"8868:6:66","nodeType":"YulIdentifier","src":"8868:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"8880:9:66","nodeType":"YulIdentifier","src":"8880:9:66"},{"kind":"number","nativeSrc":"8891:2:66","nodeType":"YulLiteral","src":"8891:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8876:3:66","nodeType":"YulIdentifier","src":"8876:3:66"},"nativeSrc":"8876:18:66","nodeType":"YulFunctionCall","src":"8876:18:66"}],"functionName":{"name":"abi_encode_bytes","nativeSrc":"8851:16:66","nodeType":"YulIdentifier","src":"8851:16:66"},"nativeSrc":"8851:44:66","nodeType":"YulFunctionCall","src":"8851:44:66"},"variableNames":[{"name":"tail","nativeSrc":"8843:4:66","nodeType":"YulIdentifier","src":"8843:4:66"}]}]},"name":"abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"8613:288:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8721:9:66","nodeType":"YulTypedName","src":"8721:9:66","type":""},{"name":"value1","nativeSrc":"8732:6:66","nodeType":"YulTypedName","src":"8732:6:66","type":""},{"name":"value0","nativeSrc":"8740:6:66","nodeType":"YulTypedName","src":"8740:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8751:4:66","nodeType":"YulTypedName","src":"8751:4:66","type":""}],"src":"8613:288:66"},{"body":{"nativeSrc":"9043:150:66","nodeType":"YulBlock","src":"9043:150:66","statements":[{"nativeSrc":"9053:27:66","nodeType":"YulVariableDeclaration","src":"9053:27:66","value":{"arguments":[{"name":"value0","nativeSrc":"9073:6:66","nodeType":"YulIdentifier","src":"9073:6:66"}],"functionName":{"name":"mload","nativeSrc":"9067:5:66","nodeType":"YulIdentifier","src":"9067:5:66"},"nativeSrc":"9067:13:66","nodeType":"YulFunctionCall","src":"9067:13:66"},"variables":[{"name":"length","nativeSrc":"9057:6:66","nodeType":"YulTypedName","src":"9057:6:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"9128:6:66","nodeType":"YulIdentifier","src":"9128:6:66"},{"kind":"number","nativeSrc":"9136:4:66","nodeType":"YulLiteral","src":"9136:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9124:3:66","nodeType":"YulIdentifier","src":"9124:3:66"},"nativeSrc":"9124:17:66","nodeType":"YulFunctionCall","src":"9124:17:66"},{"name":"pos","nativeSrc":"9143:3:66","nodeType":"YulIdentifier","src":"9143:3:66"},{"name":"length","nativeSrc":"9148:6:66","nodeType":"YulIdentifier","src":"9148:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"9089:34:66","nodeType":"YulIdentifier","src":"9089:34:66"},"nativeSrc":"9089:66:66","nodeType":"YulFunctionCall","src":"9089:66:66"},"nativeSrc":"9089:66:66","nodeType":"YulExpressionStatement","src":"9089:66:66"},{"nativeSrc":"9164:23:66","nodeType":"YulAssignment","src":"9164:23:66","value":{"arguments":[{"name":"pos","nativeSrc":"9175:3:66","nodeType":"YulIdentifier","src":"9175:3:66"},{"name":"length","nativeSrc":"9180:6:66","nodeType":"YulIdentifier","src":"9180:6:66"}],"functionName":{"name":"add","nativeSrc":"9171:3:66","nodeType":"YulIdentifier","src":"9171:3:66"},"nativeSrc":"9171:16:66","nodeType":"YulFunctionCall","src":"9171:16:66"},"variableNames":[{"name":"end","nativeSrc":"9164:3:66","nodeType":"YulIdentifier","src":"9164:3:66"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"8906:287:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"9019:3:66","nodeType":"YulTypedName","src":"9019:3:66","type":""},{"name":"value0","nativeSrc":"9024:6:66","nodeType":"YulTypedName","src":"9024:6:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"9035:3:66","nodeType":"YulTypedName","src":"9035:3:66","type":""}],"src":"8906:287:66"},{"body":{"nativeSrc":"9279:103:66","nodeType":"YulBlock","src":"9279:103:66","statements":[{"body":{"nativeSrc":"9325:16:66","nodeType":"YulBlock","src":"9325:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9334:1:66","nodeType":"YulLiteral","src":"9334:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"9337:1:66","nodeType":"YulLiteral","src":"9337:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9327:6:66","nodeType":"YulIdentifier","src":"9327:6:66"},"nativeSrc":"9327:12:66","nodeType":"YulFunctionCall","src":"9327:12:66"},"nativeSrc":"9327:12:66","nodeType":"YulExpressionStatement","src":"9327:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9300:7:66","nodeType":"YulIdentifier","src":"9300:7:66"},{"name":"headStart","nativeSrc":"9309:9:66","nodeType":"YulIdentifier","src":"9309:9:66"}],"functionName":{"name":"sub","nativeSrc":"9296:3:66","nodeType":"YulIdentifier","src":"9296:3:66"},"nativeSrc":"9296:23:66","nodeType":"YulFunctionCall","src":"9296:23:66"},{"kind":"number","nativeSrc":"9321:2:66","nodeType":"YulLiteral","src":"9321:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"9292:3:66","nodeType":"YulIdentifier","src":"9292:3:66"},"nativeSrc":"9292:32:66","nodeType":"YulFunctionCall","src":"9292:32:66"},"nativeSrc":"9289:52:66","nodeType":"YulIf","src":"9289:52:66"},{"nativeSrc":"9350:26:66","nodeType":"YulAssignment","src":"9350:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"9366:9:66","nodeType":"YulIdentifier","src":"9366:9:66"}],"functionName":{"name":"mload","nativeSrc":"9360:5:66","nodeType":"YulIdentifier","src":"9360:5:66"},"nativeSrc":"9360:16:66","nodeType":"YulFunctionCall","src":"9360:16:66"},"variableNames":[{"name":"value0","nativeSrc":"9350:6:66","nodeType":"YulIdentifier","src":"9350:6:66"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nativeSrc":"9198:184:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9245:9:66","nodeType":"YulTypedName","src":"9245:9:66","type":""},{"name":"dataEnd","nativeSrc":"9256:7:66","nodeType":"YulTypedName","src":"9256:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9268:6:66","nodeType":"YulTypedName","src":"9268:6:66","type":""}],"src":"9198:184:66"},{"body":{"nativeSrc":"9568:217:66","nodeType":"YulBlock","src":"9568:217:66","statements":[{"nativeSrc":"9578:27:66","nodeType":"YulAssignment","src":"9578:27:66","value":{"arguments":[{"name":"headStart","nativeSrc":"9590:9:66","nodeType":"YulIdentifier","src":"9590:9:66"},{"kind":"number","nativeSrc":"9601:3:66","nodeType":"YulLiteral","src":"9601:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"9586:3:66","nodeType":"YulIdentifier","src":"9586:3:66"},"nativeSrc":"9586:19:66","nodeType":"YulFunctionCall","src":"9586:19:66"},"variableNames":[{"name":"tail","nativeSrc":"9578:4:66","nodeType":"YulIdentifier","src":"9578:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9621:9:66","nodeType":"YulIdentifier","src":"9621:9:66"},{"name":"value0","nativeSrc":"9632:6:66","nodeType":"YulIdentifier","src":"9632:6:66"}],"functionName":{"name":"mstore","nativeSrc":"9614:6:66","nodeType":"YulIdentifier","src":"9614:6:66"},"nativeSrc":"9614:25:66","nodeType":"YulFunctionCall","src":"9614:25:66"},"nativeSrc":"9614:25:66","nodeType":"YulExpressionStatement","src":"9614:25:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9659:9:66","nodeType":"YulIdentifier","src":"9659:9:66"},{"kind":"number","nativeSrc":"9670:2:66","nodeType":"YulLiteral","src":"9670:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9655:3:66","nodeType":"YulIdentifier","src":"9655:3:66"},"nativeSrc":"9655:18:66","nodeType":"YulFunctionCall","src":"9655:18:66"},{"arguments":[{"name":"value1","nativeSrc":"9679:6:66","nodeType":"YulIdentifier","src":"9679:6:66"},{"kind":"number","nativeSrc":"9687:4:66","nodeType":"YulLiteral","src":"9687:4:66","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"9675:3:66","nodeType":"YulIdentifier","src":"9675:3:66"},"nativeSrc":"9675:17:66","nodeType":"YulFunctionCall","src":"9675:17:66"}],"functionName":{"name":"mstore","nativeSrc":"9648:6:66","nodeType":"YulIdentifier","src":"9648:6:66"},"nativeSrc":"9648:45:66","nodeType":"YulFunctionCall","src":"9648:45:66"},"nativeSrc":"9648:45:66","nodeType":"YulExpressionStatement","src":"9648:45:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9713:9:66","nodeType":"YulIdentifier","src":"9713:9:66"},{"kind":"number","nativeSrc":"9724:2:66","nodeType":"YulLiteral","src":"9724:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9709:3:66","nodeType":"YulIdentifier","src":"9709:3:66"},"nativeSrc":"9709:18:66","nodeType":"YulFunctionCall","src":"9709:18:66"},{"name":"value2","nativeSrc":"9729:6:66","nodeType":"YulIdentifier","src":"9729:6:66"}],"functionName":{"name":"mstore","nativeSrc":"9702:6:66","nodeType":"YulIdentifier","src":"9702:6:66"},"nativeSrc":"9702:34:66","nodeType":"YulFunctionCall","src":"9702:34:66"},"nativeSrc":"9702:34:66","nodeType":"YulExpressionStatement","src":"9702:34:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9756:9:66","nodeType":"YulIdentifier","src":"9756:9:66"},{"kind":"number","nativeSrc":"9767:2:66","nodeType":"YulLiteral","src":"9767:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"9752:3:66","nodeType":"YulIdentifier","src":"9752:3:66"},"nativeSrc":"9752:18:66","nodeType":"YulFunctionCall","src":"9752:18:66"},{"name":"value3","nativeSrc":"9772:6:66","nodeType":"YulIdentifier","src":"9772:6:66"}],"functionName":{"name":"mstore","nativeSrc":"9745:6:66","nodeType":"YulIdentifier","src":"9745:6:66"},"nativeSrc":"9745:34:66","nodeType":"YulFunctionCall","src":"9745:34:66"},"nativeSrc":"9745:34:66","nodeType":"YulExpressionStatement","src":"9745:34:66"}]},"name":"abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed","nativeSrc":"9387:398:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9513:9:66","nodeType":"YulTypedName","src":"9513:9:66","type":""},{"name":"value3","nativeSrc":"9524:6:66","nodeType":"YulTypedName","src":"9524:6:66","type":""},{"name":"value2","nativeSrc":"9532:6:66","nodeType":"YulTypedName","src":"9532:6:66","type":""},{"name":"value1","nativeSrc":"9540:6:66","nodeType":"YulTypedName","src":"9540:6:66","type":""},{"name":"value0","nativeSrc":"9548:6:66","nodeType":"YulTypedName","src":"9548:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9559:4:66","nodeType":"YulTypedName","src":"9559:4:66","type":""}],"src":"9387:398:66"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_bytes32t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_1)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_1, 32), length)\n        mstore(add(add(memPtr, length), 32), 0)\n        value1 := memPtr\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_uint8(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let value_2 := calldataload(add(headStart, 96))\n        if iszero(eq(value_2, and(value_2, 0xff))) { revert(0, 0) }\n        value4 := value_2\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_decode_tuple_t_uint256t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\n    }\n    function abi_decode_tuple_t_uint256t_addresst_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := mload(headStart)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := 0\n        value_2 := mload(add(headStart, 64))\n        value2 := value_2\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_8ba56f87bf72de7e595ac09829cde44231734752409c33a92cda6191ac94c365__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Invalid signer\")\n        tail := add(headStart, 96)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_stringliteral_066ad49a0ed9e5d6a9f3c20fca13a038f0a5d629f0aaf09d634ae2a7c232ac2b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"Call failed\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f359bfbeef909164abd0bd7bf77897770685caeb4aad15b1df64fe1f5028d5eb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Delegatecall failed\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d7c7d2b236b51fd89629e4d9859becd69328dedbd10a2b39b9506664e672e4f5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"Unsupported operation\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Already initialized\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_bytes(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n}","id":66,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100745760003560e01c8063523e32601161004e578063523e32601461010e578063c19d93fb1461012e578063fc0c546a14610152578063fffb5183146101e857600080fd5b806301ffc9a7146100805780631626ba7e146100b557806351945447146100ee57600080fd5b3661007b57005b600080fd5b34801561008c57600080fd5b506100a061009b3660046109a0565b61020a565b60405190151581526020015b60405180910390f35b3480156100c157600080fd5b506100d56100d03660046109e0565b61025c565b6040516001600160e01b031990911681526020016100ac565b6101016100fc366004610b04565b61037d565b6040516100ac9190610bce565b34801561011a57600080fd5b506100d5610129366004610be1565b610589565b34801561013a57600080fd5b5061014460005481565b6040519081526020016100ac565b34801561015e57600080fd5b507f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f0547f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f1547f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f254604080519384526001600160a01b039092166020840152908201526060016100ac565b3480156101f457600080fd5b50610208610203366004610c36565b6105b2565b005b60006001600160e01b031982166301ffc9a760e01b148061023b57506001600160e01b03198216636faff5f160e01b145b8061025657506001600160e01b03198216635194544760e01b145b92915050565b600080600080306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156102a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c49190610c6e565b9250925092504683146102de575060009250610256915050565b6040516331a9108f60e11b8152600481018290526000906001600160a01b03841690636352211e90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610ca9565b905061035781888861062d565b156103705750630b135d3f60e11b935061025692505050565b5060009695505050505050565b6060610388336106a1565b6103ca5760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b4b3b732b960911b60448201526064015b60405180910390fd5b60008081546103d890610cc6565b9091555060ff821660000361049057600080876001600160a01b0316878787604051610405929190610ced565b60006040518083038185875af1925050503d8060008114610442576040519150601f19603f3d011682016040523d82523d6000602084013e610447565b606091505b5091509150816104875760405162461bcd60e51b815260206004820152600b60248201526a10d85b1b0819985a5b195960aa1b60448201526064016103c1565b91506105809050565b8160ff1660010361054057600080876001600160a01b031686866040516104b8929190610ced565b600060405180830381855af49150503d80600081146104f3576040519150601f19603f3d011682016040523d82523d6000602084013e6104f8565b606091505b5091509150816104875760405162461bcd60e51b815260206004820152601360248201527211195b1959d85d1958d85b1b0819985a5b1959606a1b60448201526064016103c1565b60405162461bcd60e51b81526020600482015260156024820152742ab739bab83837b93a32b21037b832b930ba34b7b760591b60448201526064016103c1565b95945050505050565b6000610594846106a1565b156105a75750630291f19360e51b6105ab565b5060005b9392505050565b7f4da36cf5bd4fa8300864a3992cd656a1b3186220d4cb50422acab57e193bb9f0805480156106195760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016103c1565b509283556001830191909155600290910155565b6000836001600160a01b03163b60000361068f5760008061064e85856107a8565b509092509050600081600381111561066857610668610cfd565b1480156106865750856001600160a01b0316826001600160a01b0316145b925050506105ab565b61069a8484846107f5565b90506105ab565b600080600080306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156106e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107099190610c6e565b92509250925046831461072157506000949350505050565b6040516331a9108f60e11b8152600481018290526001600160a01b03831690636352211e90602401602060405180830381865afa158015610766573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078a9190610ca9565b6001600160a01b0316856001600160a01b0316149350505050919050565b600080600083516041036107e25760208401516040850151606086015160001a6107d4888285856108d1565b9550955095505050506107ee565b50508151600091506002905b9250925092565b6000806000856001600160a01b03168585604051602401610817929190610d13565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b1790525161084c9190610d34565b600060405180830381855afa9150503d8060008114610887576040519150601f19603f3d011682016040523d82523d6000602084013e61088c565b606091505b50915091508180156108a057506020815110155b80156108c757508051630b135d3f60e11b906108c59083016020908101908401610d50565b145b9695505050505050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561090c5750600091506003905082610996565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610960573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661098c57506000925060019150829050610996565b9250600091508190505b9450945094915050565b6000602082840312156109b257600080fd5b81356001600160e01b0319811681146105ab57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080604083850312156109f357600080fd5b82359150602083013567ffffffffffffffff811115610a1157600080fd5b8301601f81018513610a2257600080fd5b803567ffffffffffffffff811115610a3c57610a3c6109ca565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610a6b57610a6b6109ca565b604052818152828201602001871015610a8357600080fd5b816020840160208301376000602083830101528093505050509250929050565b6001600160a01b0381168114610ab857600080fd5b50565b60008083601f840112610acd57600080fd5b50813567ffffffffffffffff811115610ae557600080fd5b602083019150836020828501011115610afd57600080fd5b9250929050565b600080600080600060808688031215610b1c57600080fd5b8535610b2781610aa3565b945060208601359350604086013567ffffffffffffffff811115610b4a57600080fd5b610b5688828901610abb565b909450925050606086013560ff81168114610b7057600080fd5b809150509295509295909350565b60005b83811015610b99578181015183820152602001610b81565b50506000910152565b60008151808452610bba816020860160208601610b7e565b601f01601f19169290920160200192915050565b6020815260006105ab6020830184610ba2565b600080600060408486031215610bf657600080fd5b8335610c0181610aa3565b9250602084013567ffffffffffffffff811115610c1d57600080fd5b610c2986828701610abb565b9497909650939450505050565b600080600060608486031215610c4b57600080fd5b833592506020840135610c5d81610aa3565b929592945050506040919091013590565b600080600060608486031215610c8357600080fd5b83516020850151909350610c9681610aa3565b6040949094015192959394509192915050565b600060208284031215610cbb57600080fd5b81516105ab81610aa3565b600060018201610ce657634e487b7160e01b600052601160045260246000fd5b5060010190565b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000610d2c6040830184610ba2565b949350505050565b60008251610d46818460208701610b7e565b9190910192915050565b600060208284031215610d6257600080fd5b505191905056fea264697066735822122053f83b5c2f31a20b1c092914a77c98c02135788dec899ae55b79c469826dca3964736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x74 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x523E3260 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x523E3260 EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0xC19D93FB EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x152 JUMPI DUP1 PUSH4 0xFFFB5183 EQ PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x51945447 EQ PUSH2 0xEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x7B JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA0 PUSH2 0x9B CALLDATASIZE PUSH1 0x4 PUSH2 0x9A0 JUMP JUMPDEST PUSH2 0x20A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD5 PUSH2 0xD0 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E0 JUMP JUMPDEST PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST PUSH2 0x101 PUSH2 0xFC CALLDATASIZE PUSH1 0x4 PUSH2 0xB04 JUMP JUMPDEST PUSH2 0x37D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAC SWAP2 SWAP1 PUSH2 0xBCE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD5 PUSH2 0x129 CALLDATASIZE PUSH1 0x4 PUSH2 0xBE1 JUMP JUMPDEST PUSH2 0x589 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x144 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F0 SLOAD PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F1 SLOAD PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F2 SLOAD PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0xAC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x208 PUSH2 0x203 CALLDATASIZE PUSH1 0x4 PUSH2 0xC36 JUMP JUMPDEST PUSH2 0x5B2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x23B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6FAFF5F1 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x256 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x51945447 PUSH1 0xE0 SHL EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C4 SWAP2 SWAP1 PUSH2 0xC6E JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x2DE JUMPI POP PUSH1 0x0 SWAP3 POP PUSH2 0x256 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x326 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x34A SWAP2 SWAP1 PUSH2 0xCA9 JUMP JUMPDEST SWAP1 POP PUSH2 0x357 DUP2 DUP9 DUP9 PUSH2 0x62D JUMP JUMPDEST ISZERO PUSH2 0x370 JUMPI POP PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP4 POP PUSH2 0x256 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x388 CALLER PUSH2 0x6A1 JUMP JUMPDEST PUSH2 0x3CA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B21039B4B3B732B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP2 SLOAD PUSH2 0x3D8 SWAP1 PUSH2 0xCC6 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0xFF DUP3 AND PUSH1 0x0 SUB PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x405 SWAP3 SWAP2 SWAP1 PUSH2 0xCED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x442 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x447 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x487 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH11 0x10D85B1B0819985A5B1959 PUSH1 0xAA SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3C1 JUMP JUMPDEST SWAP2 POP PUSH2 0x580 SWAP1 POP JUMP JUMPDEST DUP2 PUSH1 0xFF AND PUSH1 0x1 SUB PUSH2 0x540 JUMPI PUSH1 0x0 DUP1 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x4B8 SWAP3 SWAP2 SWAP1 PUSH2 0xCED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4F3 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4F8 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x487 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x11195B1959D85D1958D85B1B0819985A5B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3C1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x2AB739BAB83837B93A32B21037B832B930BA34B7B7 PUSH1 0x59 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3C1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x594 DUP5 PUSH2 0x6A1 JUMP JUMPDEST ISZERO PUSH2 0x5A7 JUMPI POP PUSH4 0x291F193 PUSH1 0xE5 SHL PUSH2 0x5AB JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4DA36CF5BD4FA8300864A3992CD656A1B3186220D4CB50422ACAB57E193BB9F0 DUP1 SLOAD DUP1 ISZERO PUSH2 0x619 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x105B1C9958591E481A5B9A5D1A585B1A5E9959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3C1 JUMP JUMPDEST POP SWAP3 DUP4 SSTORE PUSH1 0x1 DUP4 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x68F JUMPI PUSH1 0x0 DUP1 PUSH2 0x64E DUP6 DUP6 PUSH2 0x7A8 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x668 JUMPI PUSH2 0x668 PUSH2 0xCFD JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x686 JUMPI POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP3 POP POP POP PUSH2 0x5AB JUMP JUMPDEST PUSH2 0x69A DUP5 DUP5 DUP5 PUSH2 0x7F5 JUMP JUMPDEST SWAP1 POP PUSH2 0x5AB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x709 SWAP2 SWAP1 PUSH2 0xC6E JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP CHAINID DUP4 EQ PUSH2 0x721 JUMPI POP PUSH1 0x0 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x766 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x78A SWAP2 SWAP1 PUSH2 0xCA9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x7E2 JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x7D4 DUP9 DUP3 DUP6 DUP6 PUSH2 0x8D1 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x7EE JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x817 SWAP3 SWAP2 SWAP1 PUSH2 0xD13 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xB135D3F PUSH1 0xE1 SHL OR SWAP1 MSTORE MLOAD PUSH2 0x84C SWAP2 SWAP1 PUSH2 0xD34 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x887 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x88C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x8A0 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x8C7 JUMPI POP DUP1 MLOAD PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP1 PUSH2 0x8C5 SWAP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP5 ADD PUSH2 0xD50 JUMP JUMPDEST EQ JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT ISZERO PUSH2 0x90C JUMPI POP PUSH1 0x0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0x996 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x960 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x98C JUMPI POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0x996 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x5AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0xA22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA3C JUMPI PUSH2 0xA3C PUSH2 0x9CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xA6B JUMPI PUSH2 0xA6B PUSH2 0x9CA JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0xA83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xAB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xACD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xAFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xB1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xB27 DUP2 PUSH2 0xAA3 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB56 DUP9 DUP3 DUP10 ADD PUSH2 0xABB JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xB70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB99 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xB81 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xBBA DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xB7E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x5AB PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xBA2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xBF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xC01 DUP2 PUSH2 0xAA3 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC29 DUP7 DUP3 DUP8 ADD PUSH2 0xABB JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xC4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0xC5D DUP2 PUSH2 0xAA3 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xC83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0xC96 DUP2 PUSH2 0xAA3 JUMP JUMPDEST PUSH1 0x40 SWAP5 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP6 SWAP4 SWAP5 POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x5AB DUP2 PUSH2 0xAA3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0xCE6 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xD2C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xBA2 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xD46 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xB7E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 0xF8 EXTCODESIZE TLOAD 0x2F BALANCE LOG2 SIGNEXTEND SHR MULMOD 0x29 EQ 0xA7 PUSH29 0x98C02135788DEC899AE55B79C469826DCA3964736F6C634300081C0033 ","sourceMap":"488:4236:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4064:287;;;;;;;;;;-1:-1:-1;4064:287:56;;;;;:::i;:::-;;:::i;:::-;;;470:14:66;;463:22;445:41;;433:2;418:18;4064:287:56;;;;;;;;3477:522;;;;;;;;;;-1:-1:-1;3477:522:56;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;1808:33:66;;;1790:52;;1778:2;1763:18;3477:522:56;1646:202:66;1158:735:56;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3151:249::-;;;;;;;;;;-1:-1:-1;3151:249:56;;;;;:::i;:::-;;:::i;673:20::-;;;;;;;;;;;;;;;;;;;4623:25:66;;;4611:2;4596:18;673:20:56;4477:177:66;1967:372:56;;;;;;;;;;-1:-1:-1;948:34:56;2220:11;2267:12;2261:19;2310:12;2304:19;1967:372;;;4861:25:66;;;-1:-1:-1;;;;;4922:32:66;;;4917:2;4902:18;;4895:60;4971:18;;;4964:34;4849:2;4834:18;1967:372:56;4659:345:66;2482:580:56;;;;;;;;;;-1:-1:-1;2482:580:56;;;;;:::i;:::-;;:::i;:::-;;4064:287;4148:4;-1:-1:-1;;;;;;4172:40:56;;-1:-1:-1;;;4172:40:56;;:104;;-1:-1:-1;;;;;;;4228:48:56;;-1:-1:-1;;;4228:48:56;4172:104;:171;;;-1:-1:-1;;;;;;;4292:51:56;;-1:-1:-1;;;4292:51:56;4172:171;4164:180;4064:287;-1:-1:-1;;4064:287:56:o;3477:522::-;3586:17;3616:15;3633:21;3656:15;3675:4;-1:-1:-1;;;;;3675:23:56;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3615:85;;;;;;3726:13;3715:7;:24;3711:46;;-1:-1:-1;3755:1:56;;-1:-1:-1;3741:16:56;;-1:-1:-1;;3741:16:56;3711:46;3784:39;;-1:-1:-1;;;3784:39:56;;;;;4623:25:66;;;3768:13:56;;-1:-1:-1;;;;;3784:30:56;;;;;4596:18:66;;3784:39:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3768:55;;3838:60;3875:5;3882:4;3888:9;3838:36;:60::i;:::-;3834:132;;;-1:-1:-1;;;;3921:34:56;-1:-1:-1;3914:41:56;;-1:-1:-1;;;3914:41:56;3834:132;-1:-1:-1;3990:1:56;;3477:522;-1:-1:-1;;;;;;3477:522:56:o;1158:735::-;1304:19;1343:26;1358:10;1343:14;:26::i;:::-;1335:53;;;;-1:-1:-1;;;1335:53:56;;6441:2:66;1335:53:56;;;6423:21:66;6480:2;6460:18;;;6453:30;-1:-1:-1;;;6499:18:66;;;6492:44;6553:18;;1335:53:56;;;;;;;;;1401:5;;1399:7;;;;;:::i;:::-;;;;-1:-1:-1;1421:14:56;;;1434:1;1421:14;1417:470;;1472:12;1486:16;1506:2;-1:-1:-1;;;;;1506:7:56;1521:5;1528:4;;1506:27;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1471:62;;;;1555:7;1547:31;;;;-1:-1:-1;;;1547:31:56;;7297:2:66;1547:31:56;;;7279:21:66;7336:2;7316:18;;;7309:30;-1:-1:-1;;;7355:18:66;;;7348:41;7406:18;;1547:31:56;7095:335:66;1547:31:56;1599:3;-1:-1:-1;1592:10:56;;-1:-1:-1;1592:10:56;1417:470;1623:9;:14;;1636:1;1623:14;1619:268;;1682:12;1696:16;1716:2;-1:-1:-1;;;;;1716:15:56;1732:4;;1716:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1681:56;;;;1759:7;1751:39;;;;-1:-1:-1;;;1751:39:56;;7637:2:66;1751:39:56;;;7619:21:66;7676:2;7656:18;;;7649:30;-1:-1:-1;;;7695:18:66;;;7688:49;7754:18;;1751:39:56;7435:343:66;1619:268:56;1845:31;;-1:-1:-1;;;1845:31:56;;7985:2:66;1845:31:56;;;7967:21:66;8024:2;8004:18;;;7997:30;-1:-1:-1;;;8043:18:66;;;8036:51;8104:18;;1845:31:56;7783:345:66;1619:268:56;1158:735;;;;;;;:::o;3151:249::-;3251:6;3273:22;3288:6;3273:14;:22::i;:::-;3269:98;;;-1:-1:-1;;;;3311:45:56;;3269:98;-1:-1:-1;3391:1:56;3151:249;;;;;;:::o;2482:580::-;948:34;2782:11;;2820:18;;2812:50;;;;-1:-1:-1;;;2812:50:56;;8335:2:66;2812:50:56;;;8317:21:66;8374:2;8354:18;;;8347:30;-1:-1:-1;;;8393:18:66;;;8386:49;8452:18;;2812:50:56;8133:343:66;2812:50:56;-1:-1:-1;2935:21:56;;;2986:1;2976:12;;2969:35;;;;3034:1;3024:12;;;3017:29;2482:580::o;1041:429:50:-;1147:4;1167:6;-1:-1:-1;;;;;1167:18:50;;1189:1;1167:23;1163:301;;1207:17;1226:22;1254:33;1271:4;1277:9;1254:16;:33::i;:::-;-1:-1:-1;1206:81:50;;-1:-1:-1;1206:81:50;-1:-1:-1;1315:26:50;1308:3;:33;;;;;;;;:::i;:::-;;:56;;;;;1358:6;-1:-1:-1;;;;;1345:19:50;:9;-1:-1:-1;;;;;1345:19:50;;1308:56;1301:63;;;;;;1163:301;1402:51;1429:6;1437:4;1443:9;1402:26;:51::i;:::-;1395:58;;;;4431:291:56;4494:4;4511:15;4528:21;4551:15;4570:4;-1:-1:-1;;;;;4570:23:56;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4510:85;;;;;;4621:13;4610:7;:24;4606:42;;-1:-1:-1;4643:5:56;;4431:291;-1:-1:-1;;;;4431:291:56:o;4606:42::-;4676:39;;-1:-1:-1;;;4676:39:56;;;;;4623:25:66;;;-1:-1:-1;;;;;4676:30:56;;;;;4596:18:66;;4676:39:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4666:49:56;:6;-1:-1:-1;;;;;4666:49:56;;4659:56;;;;;4431:291;;;:::o;2129:778:49:-;2232:17;2251:16;2269:14;2299:9;:16;2319:2;2299:22;2295:606;;2604:4;2589:20;;2583:27;2653:4;2638:20;;2632:27;2710:4;2695:20;;2689:27;2337:9;2681:36;2751:25;2762:4;2681:36;2583:27;2632;2751:10;:25::i;:::-;2744:32;;;;;;;;;;;2295:606;-1:-1:-1;;2872:16:49;;2823:1;;-1:-1:-1;2827:35:49;;2295:606;2129:778;;;;;:::o;1877:458:50:-;2020:4;2037:12;2051:19;2074:6;-1:-1:-1;;;;;2074:17:50;2148:4;2154:9;2105:60;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2105:60:50;;;;;;;;;;;;;;-1:-1:-1;;;;;2105:60:50;-1:-1:-1;;;2105:60:50;;;2074:101;;;2105:60;2074:101;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2036:139;;;;2193:7;:42;;;;;2233:2;2216:6;:13;:19;;2193:42;:134;;;;-1:-1:-1;2251:29:50;;-1:-1:-1;;;2292:34:50;2251:29;;;;;;;;;;;;:::i;:::-;:76;2193:134;2185:143;1877:458;-1:-1:-1;;;;;;1877:458:50:o;5203:1551:49:-;5329:17;;;6283:66;6270:79;;6266:164;;;-1:-1:-1;6381:1:49;;-1:-1:-1;6385:30:49;;-1:-1:-1;6417:1:49;6365:54;;6266:164;6541:24;;;6524:14;6541:24;;;;;;;;;9614:25:66;;;9687:4;9675:17;;9655:18;;;9648:45;;;;9709:18;;;9702:34;;;9752:18;;;9745:34;;;6541:24:49;;9586:19:66;;6541:24:49;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6541:24:49;;-1:-1:-1;;6541:24:49;;;-1:-1:-1;;;;;;;6579:20:49;;6575:113;;-1:-1:-1;6631:1:49;;-1:-1:-1;6635:29:49;;-1:-1:-1;6631:1:49;;-1:-1:-1;6615:62:49;;6575:113;6706:6;-1:-1:-1;6714:20:49;;-1:-1:-1;6714:20:49;;-1:-1:-1;5203:1551:49;;;;;;;;;:::o;14:286:66:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:66;;209:43;;199:71;;266:1;263;256:12;497:127;558:10;553:3;549:20;546:1;539:31;589:4;586:1;579:15;613:4;610:1;603:15;629:1012;706:6;714;767:2;755:9;746:7;742:23;738:32;735:52;;;783:1;780;773:12;735:52;819:9;806:23;796:33;;880:2;869:9;865:18;852:32;907:18;899:6;896:30;893:50;;;939:1;936;929:12;893:50;962:22;;1015:4;1007:13;;1003:27;-1:-1:-1;993:55:66;;1044:1;1041;1034:12;993:55;1084:2;1071:16;1110:18;1102:6;1099:30;1096:56;;;1132:18;;:::i;:::-;1181:2;1175:9;1273:2;1235:17;;-1:-1:-1;;1231:31:66;;;1264:2;1227:40;1223:54;1211:67;;1308:18;1293:34;;1329:22;;;1290:62;1287:88;;;1355:18;;:::i;:::-;1391:2;1384:22;1415;;;1456:15;;;1473:2;1452:24;1449:37;-1:-1:-1;1446:57:66;;;1499:1;1496;1489:12;1446:57;1555:6;1550:2;1546;1542:11;1537:2;1529:6;1525:15;1512:50;1608:1;1603:2;1594:6;1586;1582:19;1578:28;1571:39;1629:6;1619:16;;;;;629:1012;;;;;:::o;1853:131::-;-1:-1:-1;;;;;1928:31:66;;1918:42;;1908:70;;1974:1;1971;1964:12;1908:70;1853:131;:::o;1989:347::-;2040:8;2050:6;2104:3;2097:4;2089:6;2085:17;2081:27;2071:55;;2122:1;2119;2112:12;2071:55;-1:-1:-1;2145:20:66;;2188:18;2177:30;;2174:50;;;2220:1;2217;2210:12;2174:50;2257:4;2249:6;2245:17;2233:29;;2309:3;2302:4;2293:6;2285;2281:19;2277:30;2274:39;2271:59;;;2326:1;2323;2316:12;2271:59;1989:347;;;;;:::o;2341:830::-;2436:6;2444;2452;2460;2468;2521:3;2509:9;2500:7;2496:23;2492:33;2489:53;;;2538:1;2535;2528:12;2489:53;2577:9;2564:23;2596:31;2621:5;2596:31;:::i;:::-;2646:5;-1:-1:-1;2724:2:66;2709:18;;2696:32;;-1:-1:-1;2805:2:66;2790:18;;2777:32;2832:18;2821:30;;2818:50;;;2864:1;2861;2854:12;2818:50;2903:58;2953:7;2944:6;2933:9;2929:22;2903:58;:::i;:::-;2980:8;;-1:-1:-1;2877:84:66;-1:-1:-1;;3067:2:66;3052:18;;3039:32;3115:4;3102:18;;3090:31;;3080:59;;3135:1;3132;3125:12;3080:59;3158:7;3148:17;;;2341:830;;;;;;;;:::o;3176:250::-;3261:1;3271:113;3285:6;3282:1;3279:13;3271:113;;;3361:11;;;3355:18;3342:11;;;3335:39;3307:2;3300:10;3271:113;;;-1:-1:-1;;3418:1:66;3400:16;;3393:27;3176:250::o;3431:270::-;3472:3;3510:5;3504:12;3537:6;3532:3;3525:19;3553:76;3622:6;3615:4;3610:3;3606:14;3599:4;3592:5;3588:16;3553:76;:::i;:::-;3683:2;3662:15;-1:-1:-1;;3658:29:66;3649:39;;;;3690:4;3645:50;;3431:270;-1:-1:-1;;3431:270:66:o;3706:217::-;3853:2;3842:9;3835:21;3816:4;3873:44;3913:2;3902:9;3898:18;3890:6;3873:44;:::i;3928:544::-;4007:6;4015;4023;4076:2;4064:9;4055:7;4051:23;4047:32;4044:52;;;4092:1;4089;4082:12;4044:52;4131:9;4118:23;4150:31;4175:5;4150:31;:::i;:::-;4200:5;-1:-1:-1;4256:2:66;4241:18;;4228:32;4283:18;4272:30;;4269:50;;;4315:1;4312;4305:12;4269:50;4354:58;4404:7;4395:6;4384:9;4380:22;4354:58;:::i;:::-;3928:544;;4431:8;;-1:-1:-1;4328:84:66;;-1:-1:-1;;;;3928:544:66:o;5009:487::-;5086:6;5094;5102;5155:2;5143:9;5134:7;5130:23;5126:32;5123:52;;;5171:1;5168;5161:12;5123:52;5216:23;;;-1:-1:-1;5315:2:66;5300:18;;5287:32;5328:33;5287:32;5328:33;:::i;:::-;5009:487;;5380:7;;-1:-1:-1;;;5460:2:66;5445:18;;;;5432:32;;5009:487::o;5501:477::-;5589:6;5597;5605;5658:2;5646:9;5637:7;5633:23;5629:32;5626:52;;;5674:1;5671;5664:12;5626:52;5719:16;;5804:2;5789:18;;5783:25;5719:16;;-1:-1:-1;5817:33:66;5783:25;5817:33;:::i;:::-;5942:2;5927:18;;;;5921:25;5501:477;;5869:7;;-1:-1:-1;5921:25:66;;5501:477;-1:-1:-1;;5501:477:66:o;5983:251::-;6053:6;6106:2;6094:9;6085:7;6081:23;6077:32;6074:52;;;6122:1;6119;6112:12;6074:52;6154:9;6148:16;6173:31;6198:5;6173:31;:::i;6582:232::-;6621:3;6642:17;;;6639:140;;6701:10;6696:3;6692:20;6689:1;6682:31;6736:4;6733:1;6726:15;6764:4;6761:1;6754:15;6639:140;-1:-1:-1;6806:1:66;6795:13;;6582:232::o;6819:271::-;7002:6;6994;6989:3;6976:33;6958:3;7028:16;;7053:13;;;7028:16;6819:271;-1:-1:-1;6819:271:66:o;8481:127::-;8542:10;8537:3;8533:20;8530:1;8523:31;8573:4;8570:1;8563:15;8597:4;8594:1;8587:15;8613:288;8788:6;8777:9;8770:25;8831:2;8826;8815:9;8811:18;8804:30;8751:4;8851:44;8891:2;8880:9;8876:18;8868:6;8851:44;:::i;:::-;8843:52;8613:288;-1:-1:-1;;;;8613:288:66:o;8906:287::-;9035:3;9073:6;9067:13;9089:66;9148:6;9143:3;9136:4;9128:6;9124:17;9089:66;:::i;:::-;9171:16;;;;;8906:287;-1:-1:-1;;8906:287:66:o;9198:184::-;9268:6;9321:2;9309:9;9300:7;9296:23;9292:32;9289:52;;;9337:1;9334;9327:12;9289:52;-1:-1:-1;9360:16:66;;9198:184;-1:-1:-1;9198:184:66:o"},"gasEstimates":{"creation":{"codeDepositCost":"697400","executionCost":"728","totalCost":"698128"},"external":{"execute(address,uint256,bytes,uint8)":"infinite","initialize(uint256,address,uint256)":"68876","isValidSignature(bytes32,bytes)":"infinite","isValidSigner(address,bytes)":"infinite","state()":"2317","supportsInterface(bytes4)":"482","token()":"6587"},"internal":{"_isValidSigner(address)":"infinite"}},"methodIdentifiers":{"execute(address,uint256,bytes,uint8)":"51945447","initialize(uint256,address,uint256)":"fffb5183","isValidSignature(bytes32,bytes)":"1626ba7e","isValidSigner(address,bytes)":"523e3260","state()":"c19d93fb","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"operation\",\"type\":\"uint8\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"isValidSigner\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"ERC6551 Team\",\"kind\":\"dev\",\"methods\":{\"execute(address,uint256,bytes,uint8)\":{\"details\":\"Executes a transaction from the token owner\"},\"initialize(uint256,address,uint256)\":{\"details\":\"Initialization function that stores token data This is called by the registry during account creation\"},\"isValidSignature(bytes32,bytes)\":{\"details\":\"Validates signatures according to ERC-1271\"},\"isValidSigner(address,bytes)\":{\"details\":\"Validates if a signer is authorized to perform actions\"},\"supportsInterface(bytes4)\":{\"details\":\"Implements interface detection\"},\"token()\":{\"details\":\"Returns the token bound to this account\"}},\"stateVariables\":{\"TOKEN_DATA_SLOT\":{\"details\":\"Storage slot for token data This is written during initialization by the registry Structure: chainId (uint256), tokenContract (address), tokenId (uint256)\"},\"state\":{\"details\":\"Account state nonce, incremented on each transaction\"}},\"title\":\"A simple implementation of ERC6551Account\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC6551Account.sol\":\"ERC6551Account\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (interfaces/IERC1271.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-1271 standard signature validation method for\\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\\n */\\ninterface IERC1271 {\\n    /**\\n     * @dev Should return whether the signature provided is valid for the provided data\\n     * @param hash      Hash of the data to be signed\\n     * @param signature Signature byte array associated with `hash`\\n     */\\n    function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0x3d4cd07258d675b6dfa3d9dfd623a77b38fb9935f4a5381ff4bc969948720976\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\\n     *   {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/ECDSA.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\\n *\\n * These functions can be used to verify that a message was signed by the holder\\n * of the private keys of a given address.\\n */\\nlibrary ECDSA {\\n    enum RecoverError {\\n        NoError,\\n        InvalidSignature,\\n        InvalidSignatureLength,\\n        InvalidSignatureS\\n    }\\n\\n    /**\\n     * @dev The signature derives the `address(0)`.\\n     */\\n    error ECDSAInvalidSignature();\\n\\n    /**\\n     * @dev The signature has an invalid length.\\n     */\\n    error ECDSAInvalidSignatureLength(uint256 length);\\n\\n    /**\\n     * @dev The signature has an S value that is in the upper half order.\\n     */\\n    error ECDSAInvalidSignatureS(bytes32 s);\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\\n     * return address(0) without also returning an error description. Errors are documented using an enum (error type)\\n     * and a bytes32 providing additional information about the error.\\n     *\\n     * If no error is returned, then the address can be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\n     *\\n     * Documentation for signature generation:\\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes memory signature\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        if (signature.length == 65) {\\n            bytes32 r;\\n            bytes32 s;\\n            uint8 v;\\n            // ecrecover takes the signature parameters, and the only way to get them\\n            // currently is to use assembly.\\n            assembly (\\\"memory-safe\\\") {\\n                r := mload(add(signature, 0x20))\\n                s := mload(add(signature, 0x40))\\n                v := byte(0, mload(add(signature, 0x60)))\\n            }\\n            return tryRecover(hash, v, r, s);\\n        } else {\\n            return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the address that signed a hashed message (`hash`) with\\n     * `signature`. This address can then be used for verification purposes.\\n     *\\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\\n     * this function rejects them by requiring the `s` value to be in the lower\\n     * half order, and the `v` value to be either 27 or 28.\\n     *\\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\\n     * verification to be secure: it is possible to craft signatures that\\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\\n     * this is by receiving a hash of the original message (which may otherwise\\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\\n     */\\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\\n     *\\n     * See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        bytes32 r,\\n        bytes32 vs\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        unchecked {\\n            bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\\n            // We do not check for an overflow here since the shift operation results in 0 or 1.\\n            uint8 v = uint8((uint256(vs) >> 255) + 27);\\n            return tryRecover(hash, v, r, s);\\n        }\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\\n     */\\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function tryRecover(\\n        bytes32 hash,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\\n        // the valid range for s in (301): 0 < s < secp256k1n \\u00f7 2 + 1, and for v in (302): v \\u2208 {27, 28}. Most\\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\\n        //\\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\\n        // these malleable signatures as well.\\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\\n            return (address(0), RecoverError.InvalidSignatureS, s);\\n        }\\n\\n        // If the signature is valid (and not malleable), return the signer address\\n        address signer = ecrecover(hash, v, r, s);\\n        if (signer == address(0)) {\\n            return (address(0), RecoverError.InvalidSignature, bytes32(0));\\n        }\\n\\n        return (signer, RecoverError.NoError, bytes32(0));\\n    }\\n\\n    /**\\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\\n     * `r` and `s` signature fields separately.\\n     */\\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\\n        _throwError(error, errorArg);\\n        return recovered;\\n    }\\n\\n    /**\\n     * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\\n     */\\n    function _throwError(RecoverError error, bytes32 errorArg) private pure {\\n        if (error == RecoverError.NoError) {\\n            return; // no error: do nothing\\n        } else if (error == RecoverError.InvalidSignature) {\\n            revert ECDSAInvalidSignature();\\n        } else if (error == RecoverError.InvalidSignatureLength) {\\n            revert ECDSAInvalidSignatureLength(uint256(errorArg));\\n        } else if (error == RecoverError.InvalidSignatureS) {\\n            revert ECDSAInvalidSignatureS(errorArg);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/SignatureChecker.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ECDSA} from \\\"./ECDSA.sol\\\";\\nimport {IERC1271} from \\\"../../interfaces/IERC1271.sol\\\";\\n\\n/**\\n * @dev Signature verification helper that can be used instead of `ECDSA.recover` to seamlessly support both ECDSA\\n * signatures from externally owned accounts (EOAs) as well as ERC-1271 signatures from smart contract wallets like\\n * Argent and Safe Wallet (previously Gnosis Safe).\\n */\\nlibrary SignatureChecker {\\n    /**\\n     * @dev Checks if a signature is valid for a given signer and data hash. If the signer is a smart contract, the\\n     * signature is validated against that smart contract using ERC-1271, otherwise it's validated using `ECDSA.recover`.\\n     *\\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\\n     */\\n    function isValidSignatureNow(address signer, bytes32 hash, bytes memory signature) internal view returns (bool) {\\n        if (signer.code.length == 0) {\\n            (address recovered, ECDSA.RecoverError err, ) = ECDSA.tryRecover(hash, signature);\\n            return err == ECDSA.RecoverError.NoError && recovered == signer;\\n        } else {\\n            return isValidERC1271SignatureNow(signer, hash, signature);\\n        }\\n    }\\n\\n    /**\\n     * @dev Checks if a signature is valid for a given signer and data hash. The signature is validated\\n     * against the signer smart contract using ERC-1271.\\n     *\\n     * NOTE: Unlike ECDSA signatures, contract signatures are revocable, and the outcome of this function can thus\\n     * change through time. It could return true at block N and false at block N+1 (or the opposite).\\n     */\\n    function isValidERC1271SignatureNow(\\n        address signer,\\n        bytes32 hash,\\n        bytes memory signature\\n    ) internal view returns (bool) {\\n        (bool success, bytes memory result) = signer.staticcall(\\n            abi.encodeCall(IERC1271.isValidSignature, (hash, signature))\\n        );\\n        return (success &&\\n            result.length >= 32 &&\\n            abi.decode(result, (bytes32)) == bytes32(IERC1271.isValidSignature.selector));\\n    }\\n}\\n\",\"keccak256\":\"0xbdc3bb48ccedb818cd75a6d74a16df55a822e9f6d3cc54c59f576f10aab67b5f\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"},\"contracts/ERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/interfaces/IERC1271.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol\\\";\\nimport \\\"./interfaces/IERC6551Account.sol\\\";\\nimport \\\"./interfaces/IERC6551Executable.sol\\\";\\n\\n/**\\n * @title A simple implementation of ERC6551Account\\n * @author ERC6551 Team\\n */\\ncontract ERC6551Account is\\n    IERC165,\\n    IERC1271,\\n    IERC6551Account,\\n    IERC6551Executable\\n{\\n    /**\\n     * @dev Account state nonce, incremented on each transaction\\n     */\\n    uint256 public state;\\n\\n    /**\\n     * @dev Storage slot for token data\\n     * This is written during initialization by the registry\\n     * Structure: chainId (uint256), tokenContract (address), tokenId (uint256)\\n     */\\n    bytes32 private constant TOKEN_DATA_SLOT =\\n        keccak256(\\\"erc6551.account.token\\\");\\n\\n    /**\\n     * @dev Allows the account to receive ETH\\n     */\\n    receive() external payable {}\\n\\n    /**\\n     * @dev Executes a transaction from the token owner\\n     */\\n    function execute(\\n        address to,\\n        uint256 value,\\n        bytes calldata data,\\n        uint8 operation\\n    ) external payable returns (bytes memory result) {\\n        require(_isValidSigner(msg.sender), \\\"Invalid signer\\\");\\n\\n        ++state;\\n\\n        if (operation == 0) {\\n            // Call\\n            (bool success, bytes memory ret) = to.call{value: value}(data);\\n            require(success, \\\"Call failed\\\");\\n            return ret;\\n        } else if (operation == 1) {\\n            // Delegatecall\\n            (bool success, bytes memory ret) = to.delegatecall(data);\\n            require(success, \\\"Delegatecall failed\\\");\\n            return ret;\\n        } else {\\n            revert(\\\"Unsupported operation\\\");\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the token bound to this account\\n     */\\n    function token()\\n        external\\n        view\\n        returns (uint256 chainId, address tokenContract, uint256 tokenId)\\n    {\\n        // Read the token data from storage\\n        bytes32 slot = TOKEN_DATA_SLOT;\\n        assembly {\\n            chainId := sload(slot)\\n            tokenContract := sload(add(slot, 1))\\n            tokenId := sload(add(slot, 2))\\n        }\\n    }\\n\\n    /**\\n     * @dev Initialization function that stores token data\\n     * This is called by the registry during account creation\\n     */\\n    function initialize(\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) external {\\n        // Ensure this can only be called once during creation\\n        bytes32 slot = TOKEN_DATA_SLOT;\\n        uint256 storedChainId;\\n        assembly {\\n            storedChainId := sload(slot)\\n        }\\n        require(storedChainId == 0, \\\"Already initialized\\\");\\n\\n        // Store token data in storage\\n        assembly {\\n            sstore(slot, chainId)\\n            sstore(add(slot, 1), tokenContract)\\n            sstore(add(slot, 2), tokenId)\\n        }\\n    }\\n\\n    /**\\n     * @dev Validates if a signer is authorized to perform actions\\n     */\\n    function isValidSigner(\\n        address signer,\\n        bytes calldata\\n    ) external view returns (bytes4) {\\n        if (_isValidSigner(signer)) {\\n            return IERC6551Account.isValidSigner.selector;\\n        }\\n\\n        return bytes4(0);\\n    }\\n\\n    /**\\n     * @dev Validates signatures according to ERC-1271\\n     */\\n    function isValidSignature(\\n        bytes32 hash,\\n        bytes memory signature\\n    ) external view returns (bytes4 magicValue) {\\n        (uint256 chainId, address tokenContract, uint256 tokenId) = this\\n            .token();\\n\\n        if (chainId != block.chainid) return bytes4(0);\\n\\n        address owner = IERC721(tokenContract).ownerOf(tokenId);\\n\\n        if (SignatureChecker.isValidSignatureNow(owner, hash, signature)) {\\n            return IERC1271.isValidSignature.selector;\\n        }\\n\\n        return bytes4(0);\\n    }\\n\\n    /**\\n     * @dev Implements interface detection\\n     */\\n    function supportsInterface(\\n        bytes4 interfaceId\\n    ) external pure returns (bool) {\\n        return (interfaceId == type(IERC165).interfaceId ||\\n            interfaceId == type(IERC6551Account).interfaceId ||\\n            interfaceId == type(IERC6551Executable).interfaceId);\\n    }\\n\\n    /**\\n     * @dev Internal helper to check if a signer is valid\\n     */\\n    function _isValidSigner(address signer) internal view returns (bool) {\\n        (uint256 chainId, address tokenContract, uint256 tokenId) = this\\n            .token();\\n\\n        if (chainId != block.chainid) return false;\\n\\n        return signer == IERC721(tokenContract).ownerOf(tokenId);\\n    }\\n}\\n\",\"keccak256\":\"0xfdc25b4ac59e57aa45fefd961630c81d40018233a1ee8fde77d2bef97adadbcb\",\"license\":\"MIT\"},\"contracts/interfaces/IERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/// @dev the ERC-165 identifier for this interface is `0x6faff5f1`\\ninterface IERC6551Account {\\n    /**\\n     * @dev Allows the account to receive Ether.\\n     *\\n     * Accounts MUST implement a `receive` function.\\n     *\\n     * Accounts MAY perform arbitrary logic to restrict conditions\\n     * under which Ether can be received.\\n     */\\n    receive() external payable;\\n\\n    /**\\n     * @dev Returns the identifier of the non-fungible token which owns the account.\\n     *\\n     * The return value of this function MUST be constant - it MUST NOT change over time.\\n     *\\n     * @return chainId       The EIP-155 ID of the chain the token exists on\\n     * @return tokenContract The contract address of the token\\n     * @return tokenId       The ID of the token\\n     */\\n    function token()\\n        external\\n        view\\n        returns (uint256 chainId, address tokenContract, uint256 tokenId);\\n\\n    /**\\n     * @dev Returns a value that SHOULD be modified each time the account changes state.\\n     *\\n     * @return The current account state\\n     */\\n    function state() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns a magic value indicating whether a given signer is authorized to act on behalf\\n     * of the account.\\n     *\\n     * MUST return the bytes4 magic value 0x523e3260 if the given signer is valid.\\n     *\\n     * By default, the holder of the non-fungible token the account is bound to MUST be considered\\n     * a valid signer.\\n     *\\n     * Accounts MAY implement additional authorization logic which invalidates the holder as a\\n     * signer or grants signing permissions to other non-holder accounts.\\n     *\\n     * @param  signer     The address to check signing authorization for\\n     * @param  context    Additional data used to determine whether the signer is valid\\n     * @return magicValue Magic value indicating whether the signer is valid\\n     */\\n    function isValidSigner(address signer, bytes calldata context)\\n        external\\n        view\\n        returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0xda097894cc052f451ad669c5a07a9eda3f53a948f8080714850dc68cc1040b42\",\"license\":\"MIT\"},\"contracts/interfaces/IERC6551Executable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/// @dev the ERC-165 identifier for this interface is `0x51945447`\\ninterface IERC6551Executable {\\n    /**\\n     * @dev Executes a low-level operation if the caller is a valid signer on the account.\\n     *\\n     * Reverts and bubbles up error if operation fails.\\n     *\\n     * Accounts implementing this interface MUST accept the following operation parameter values:\\n     * - 0 = CALL\\n     * - 1 = DELEGATECALL\\n     * - 2 = CREATE\\n     * - 3 = CREATE2\\n     *\\n     * Accounts implementing this interface MAY support additional operations or restrict a signer's\\n     * ability to execute certain operations.\\n     *\\n     * @param to        The target address of the operation\\n     * @param value     The Ether value to be sent to the target\\n     * @param data      The encoded operation calldata\\n     * @param operation A value indicating the type of operation to perform\\n     * @return The result of the operation\\n     */\\n    function execute(address to, uint256 value, bytes calldata data, uint8 operation)\\n        external\\n        payable\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x9bdb7a7e324bf36203ec6ff68c454446cae3993c1054b0356a081fa52ec43a29\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":12181,"contract":"contracts/ERC6551Account.sol:ERC6551Account","label":"state","offset":0,"slot":"0","type":"t_uint256"}],"types":{"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/ERC6551Registry.sol":{"ERC6551Registry":{"abi":[{"inputs":[],"name":"AccountCreationFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"implementation","type":"address"},{"indexed":false,"internalType":"bytes32","name":"salt","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"chainId","type":"uint256"},{"indexed":true,"internalType":"address","name":"tokenContract","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC6551AccountCreated","type":"event"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"account","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"createAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"errors":{"AccountCreationFailed()":[{"details":"The registry MUST revert with AccountCreationFailed error if the create2 operation fails."}]},"events":{"ERC6551AccountCreated(address,address,bytes32,uint256,address,uint256)":{"details":"The registry MUST emit the ERC6551AccountCreated event upon successful account creation."}},"kind":"dev","methods":{"account(address,bytes32,uint256,address,uint256)":{"details":"Returns the deterministic address for a TBA"},"createAccount(address,bytes32,uint256,address,uint256)":{"details":"Creates an ERC6551 account"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b506103a88061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063246a00211461003b5780638a54c52f1461006a575b600080fd5b61004e610049366004610324565b61007d565b6040516001600160a01b03909116815260200160405180910390f35b61004e610078366004610324565b6100a5565b60008061008c868686866101e7565b9050610098878261022e565b9150505b95945050505050565b6000806100b4868686866101e7565b905060006100c2888361022e565b9050803b80156100d65750915061009c9050565b60006100e18a61029d565b90506000848251602084016000f590506001600160a01b038116610118576040516320188a5960e01b815260040160405180910390fd5b60405160016204ae7d60e01b03198152600481018a90526001600160a01b0389811660248301526044820189905282169063fffb518390606401600060405180830381600087803b15801561016c57600080fd5b505af1158015610180573d6000803e3d6000fd5b5050604080516001600160a01b038581168252602082018f90529181018d90528a9350818c169250908e16907f79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf887229060600160405180910390a49a9950505050505050505050565b60408051602080820196909652808201949094526001600160a01b039290921660608401526080808401919091528151808403909101815260a09092019052805191012090565b60008061023a8461029d565b8051602091820120604080516001600160f81b0319818501523060601b6bffffffffffffffffffffffff19166021820152603581019690965260558087019290925280518087039092018252607590950190945283519301929092209392505050565b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b6020820152606082811b6bffffffffffffffffffffffff191660348301526e5af43d82803e903d91602b57fd5bf360881b6048830152906057016040516020818303038152906040529050919050565b80356001600160a01b038116811461031f57600080fd5b919050565b600080600080600060a0868803121561033c57600080fd5b61034586610308565b9450602086013593506040860135925061036160608701610308565b94979396509194608001359291505056fea26469706673582212203eb8d39ac2055d12b890fab8768f85121d268d34fab33ece3885ffdd174f535164736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A8 DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x246A0021 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8A54C52F EQ PUSH2 0x6A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x324 JUMP JUMPDEST PUSH2 0x7D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4E PUSH2 0x78 CALLDATASIZE PUSH1 0x4 PUSH2 0x324 JUMP JUMPDEST PUSH2 0xA5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8C DUP7 DUP7 DUP7 DUP7 PUSH2 0x1E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x98 DUP8 DUP3 PUSH2 0x22E JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB4 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1E7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC2 DUP9 DUP4 PUSH2 0x22E JUMP JUMPDEST SWAP1 POP DUP1 EXTCODESIZE DUP1 ISZERO PUSH2 0xD6 JUMPI POP SWAP2 POP PUSH2 0x9C SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE1 DUP11 PUSH2 0x29D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 CREATE2 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x118 JUMPI PUSH1 0x40 MLOAD PUSH4 0x20188A59 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x4AE7D PUSH1 0xE0 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP10 SWAP1 MSTORE DUP3 AND SWAP1 PUSH4 0xFFFB5183 SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x180 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP16 SWAP1 MSTORE SWAP2 DUP2 ADD DUP14 SWAP1 MSTORE DUP11 SWAP4 POP DUP2 DUP13 AND SWAP3 POP SWAP1 DUP15 AND SWAP1 PUSH32 0x79F19B3655EE38B1CE526556B7731A20C8F218FBDA4A3990B6CC4172FDF88722 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA0 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23A DUP5 PUSH2 0x29D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT DUP2 DUP6 ADD MSTORE ADDRESS PUSH1 0x60 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x21 DUP3 ADD MSTORE PUSH1 0x35 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x55 DUP1 DUP8 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP8 SUB SWAP1 SWAP3 ADD DUP3 MSTORE PUSH1 0x75 SWAP1 SWAP6 ADD SWAP1 SWAP5 MSTORE DUP4 MLOAD SWAP4 ADD SWAP3 SWAP1 SWAP3 KECCAK256 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0x3D602D80600A3D3981F3363D3D373D3D3D363D73 PUSH1 0x60 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 DUP2 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x34 DUP4 ADD MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 PUSH1 0x88 SHL PUSH1 0x48 DUP4 ADD MSTORE SWAP1 PUSH1 0x57 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x345 DUP7 PUSH2 0x308 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH2 0x361 PUSH1 0x60 DUP8 ADD PUSH2 0x308 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY 0xB8 0xD3 SWAP11 0xC2 SDIV TSTORE SLT 0xB8 SWAP1 STATICCALL 0xB8 PUSH23 0x8F85121D268D34FAB33ECE3885FFDD174F535164736F6C PUSH4 0x4300081C STOP CALLER ","sourceMap":"1702:3999:57:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_computeAccountAddress_12729":{"entryPoint":558,"id":12729,"parameterSlots":2,"returnSlots":1},"@_getCombinedSalt_12665":{"entryPoint":487,"id":12665,"parameterSlots":4,"returnSlots":1},"@_getCreationBytecode_12681":{"entryPoint":669,"id":12681,"parameterSlots":1,"returnSlots":1},"@account_12640":{"entryPoint":125,"id":12640,"parameterSlots":5,"returnSlots":1},"@createAccount_12609":{"entryPoint":165,"id":12609,"parameterSlots":5,"returnSlots":1},"abi_decode_address":{"entryPoint":776,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes32t_uint256t_addresst_uint256":{"entryPoint":804,"id":null,"parameterSlots":2,"returnSlots":5},"abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_72307939328b75c6e301a012c75e0a4e690a99036b95f6e6f4f1b5aba02a9ce4_t_address_t_stringliteral_11a195f66c9175f46895bae2006d40848a680c7068b9fc4af248ff9a54a47e45__to_t_string_memory_ptr_t_address_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes32_t_uint256__to_t_address_t_bytes32_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_uint256_t_address_t_uint256__to_t_bytes32_t_uint256_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:3125:66","nodeType":"YulBlock","src":"0:3125:66","statements":[{"nativeSrc":"6:3:66","nodeType":"YulBlock","src":"6:3:66","statements":[]},{"body":{"nativeSrc":"63:124:66","nodeType":"YulBlock","src":"63:124:66","statements":[{"nativeSrc":"73:29:66","nodeType":"YulAssignment","src":"73:29:66","value":{"arguments":[{"name":"offset","nativeSrc":"95:6:66","nodeType":"YulIdentifier","src":"95:6:66"}],"functionName":{"name":"calldataload","nativeSrc":"82:12:66","nodeType":"YulIdentifier","src":"82:12:66"},"nativeSrc":"82:20:66","nodeType":"YulFunctionCall","src":"82:20:66"},"variableNames":[{"name":"value","nativeSrc":"73:5:66","nodeType":"YulIdentifier","src":"73:5:66"}]},{"body":{"nativeSrc":"165:16:66","nodeType":"YulBlock","src":"165:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"174:1:66","nodeType":"YulLiteral","src":"174:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"177:1:66","nodeType":"YulLiteral","src":"177:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"167:6:66","nodeType":"YulIdentifier","src":"167:6:66"},"nativeSrc":"167:12:66","nodeType":"YulFunctionCall","src":"167:12:66"},"nativeSrc":"167:12:66","nodeType":"YulExpressionStatement","src":"167:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"124:5:66","nodeType":"YulIdentifier","src":"124:5:66"},{"arguments":[{"name":"value","nativeSrc":"135:5:66","nodeType":"YulIdentifier","src":"135:5:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"150:3:66","nodeType":"YulLiteral","src":"150:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"155:1:66","nodeType":"YulLiteral","src":"155:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"146:3:66","nodeType":"YulIdentifier","src":"146:3:66"},"nativeSrc":"146:11:66","nodeType":"YulFunctionCall","src":"146:11:66"},{"kind":"number","nativeSrc":"159:1:66","nodeType":"YulLiteral","src":"159:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"142:3:66","nodeType":"YulIdentifier","src":"142:3:66"},"nativeSrc":"142:19:66","nodeType":"YulFunctionCall","src":"142:19:66"}],"functionName":{"name":"and","nativeSrc":"131:3:66","nodeType":"YulIdentifier","src":"131:3:66"},"nativeSrc":"131:31:66","nodeType":"YulFunctionCall","src":"131:31:66"}],"functionName":{"name":"eq","nativeSrc":"121:2:66","nodeType":"YulIdentifier","src":"121:2:66"},"nativeSrc":"121:42:66","nodeType":"YulFunctionCall","src":"121:42:66"}],"functionName":{"name":"iszero","nativeSrc":"114:6:66","nodeType":"YulIdentifier","src":"114:6:66"},"nativeSrc":"114:50:66","nodeType":"YulFunctionCall","src":"114:50:66"},"nativeSrc":"111:70:66","nodeType":"YulIf","src":"111:70:66"}]},"name":"abi_decode_address","nativeSrc":"14:173:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"42:6:66","nodeType":"YulTypedName","src":"42:6:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"53:5:66","nodeType":"YulTypedName","src":"53:5:66","type":""}],"src":"14:173:66"},{"body":{"nativeSrc":"330:426:66","nodeType":"YulBlock","src":"330:426:66","statements":[{"body":{"nativeSrc":"377:16:66","nodeType":"YulBlock","src":"377:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"386:1:66","nodeType":"YulLiteral","src":"386:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"389:1:66","nodeType":"YulLiteral","src":"389:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"379:6:66","nodeType":"YulIdentifier","src":"379:6:66"},"nativeSrc":"379:12:66","nodeType":"YulFunctionCall","src":"379:12:66"},"nativeSrc":"379:12:66","nodeType":"YulExpressionStatement","src":"379:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"351:7:66","nodeType":"YulIdentifier","src":"351:7:66"},{"name":"headStart","nativeSrc":"360:9:66","nodeType":"YulIdentifier","src":"360:9:66"}],"functionName":{"name":"sub","nativeSrc":"347:3:66","nodeType":"YulIdentifier","src":"347:3:66"},"nativeSrc":"347:23:66","nodeType":"YulFunctionCall","src":"347:23:66"},{"kind":"number","nativeSrc":"372:3:66","nodeType":"YulLiteral","src":"372:3:66","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"343:3:66","nodeType":"YulIdentifier","src":"343:3:66"},"nativeSrc":"343:33:66","nodeType":"YulFunctionCall","src":"343:33:66"},"nativeSrc":"340:53:66","nodeType":"YulIf","src":"340:53:66"},{"nativeSrc":"402:39:66","nodeType":"YulAssignment","src":"402:39:66","value":{"arguments":[{"name":"headStart","nativeSrc":"431:9:66","nodeType":"YulIdentifier","src":"431:9:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"412:18:66","nodeType":"YulIdentifier","src":"412:18:66"},"nativeSrc":"412:29:66","nodeType":"YulFunctionCall","src":"412:29:66"},"variableNames":[{"name":"value0","nativeSrc":"402:6:66","nodeType":"YulIdentifier","src":"402:6:66"}]},{"nativeSrc":"450:42:66","nodeType":"YulAssignment","src":"450:42:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"477:9:66","nodeType":"YulIdentifier","src":"477:9:66"},{"kind":"number","nativeSrc":"488:2:66","nodeType":"YulLiteral","src":"488:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"473:3:66","nodeType":"YulIdentifier","src":"473:3:66"},"nativeSrc":"473:18:66","nodeType":"YulFunctionCall","src":"473:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"460:12:66","nodeType":"YulIdentifier","src":"460:12:66"},"nativeSrc":"460:32:66","nodeType":"YulFunctionCall","src":"460:32:66"},"variableNames":[{"name":"value1","nativeSrc":"450:6:66","nodeType":"YulIdentifier","src":"450:6:66"}]},{"nativeSrc":"501:14:66","nodeType":"YulVariableDeclaration","src":"501:14:66","value":{"kind":"number","nativeSrc":"514:1:66","nodeType":"YulLiteral","src":"514:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"505:5:66","nodeType":"YulTypedName","src":"505:5:66","type":""}]},{"nativeSrc":"524:41:66","nodeType":"YulAssignment","src":"524:41:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"550:9:66","nodeType":"YulIdentifier","src":"550:9:66"},{"kind":"number","nativeSrc":"561:2:66","nodeType":"YulLiteral","src":"561:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"546:3:66","nodeType":"YulIdentifier","src":"546:3:66"},"nativeSrc":"546:18:66","nodeType":"YulFunctionCall","src":"546:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"533:12:66","nodeType":"YulIdentifier","src":"533:12:66"},"nativeSrc":"533:32:66","nodeType":"YulFunctionCall","src":"533:32:66"},"variableNames":[{"name":"value","nativeSrc":"524:5:66","nodeType":"YulIdentifier","src":"524:5:66"}]},{"nativeSrc":"574:15:66","nodeType":"YulAssignment","src":"574:15:66","value":{"name":"value","nativeSrc":"584:5:66","nodeType":"YulIdentifier","src":"584:5:66"},"variableNames":[{"name":"value2","nativeSrc":"574:6:66","nodeType":"YulIdentifier","src":"574:6:66"}]},{"nativeSrc":"598:48:66","nodeType":"YulAssignment","src":"598:48:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"631:9:66","nodeType":"YulIdentifier","src":"631:9:66"},{"kind":"number","nativeSrc":"642:2:66","nodeType":"YulLiteral","src":"642:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"627:3:66","nodeType":"YulIdentifier","src":"627:3:66"},"nativeSrc":"627:18:66","nodeType":"YulFunctionCall","src":"627:18:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"608:18:66","nodeType":"YulIdentifier","src":"608:18:66"},"nativeSrc":"608:38:66","nodeType":"YulFunctionCall","src":"608:38:66"},"variableNames":[{"name":"value3","nativeSrc":"598:6:66","nodeType":"YulIdentifier","src":"598:6:66"}]},{"nativeSrc":"655:16:66","nodeType":"YulVariableDeclaration","src":"655:16:66","value":{"kind":"number","nativeSrc":"670:1:66","nodeType":"YulLiteral","src":"670:1:66","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"659:7:66","nodeType":"YulTypedName","src":"659:7:66","type":""}]},{"nativeSrc":"680:44:66","nodeType":"YulAssignment","src":"680:44:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"708:9:66","nodeType":"YulIdentifier","src":"708:9:66"},{"kind":"number","nativeSrc":"719:3:66","nodeType":"YulLiteral","src":"719:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"704:3:66","nodeType":"YulIdentifier","src":"704:3:66"},"nativeSrc":"704:19:66","nodeType":"YulFunctionCall","src":"704:19:66"}],"functionName":{"name":"calldataload","nativeSrc":"691:12:66","nodeType":"YulIdentifier","src":"691:12:66"},"nativeSrc":"691:33:66","nodeType":"YulFunctionCall","src":"691:33:66"},"variableNames":[{"name":"value_1","nativeSrc":"680:7:66","nodeType":"YulIdentifier","src":"680:7:66"}]},{"nativeSrc":"733:17:66","nodeType":"YulAssignment","src":"733:17:66","value":{"name":"value_1","nativeSrc":"743:7:66","nodeType":"YulIdentifier","src":"743:7:66"},"variableNames":[{"name":"value4","nativeSrc":"733:6:66","nodeType":"YulIdentifier","src":"733:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_bytes32t_uint256t_addresst_uint256","nativeSrc":"192:564:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"264:9:66","nodeType":"YulTypedName","src":"264:9:66","type":""},{"name":"dataEnd","nativeSrc":"275:7:66","nodeType":"YulTypedName","src":"275:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"287:6:66","nodeType":"YulTypedName","src":"287:6:66","type":""},{"name":"value1","nativeSrc":"295:6:66","nodeType":"YulTypedName","src":"295:6:66","type":""},{"name":"value2","nativeSrc":"303:6:66","nodeType":"YulTypedName","src":"303:6:66","type":""},{"name":"value3","nativeSrc":"311:6:66","nodeType":"YulTypedName","src":"311:6:66","type":""},{"name":"value4","nativeSrc":"319:6:66","nodeType":"YulTypedName","src":"319:6:66","type":""}],"src":"192:564:66"},{"body":{"nativeSrc":"862:102:66","nodeType":"YulBlock","src":"862:102:66","statements":[{"nativeSrc":"872:26:66","nodeType":"YulAssignment","src":"872:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"884:9:66","nodeType":"YulIdentifier","src":"884:9:66"},{"kind":"number","nativeSrc":"895:2:66","nodeType":"YulLiteral","src":"895:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"880:3:66","nodeType":"YulIdentifier","src":"880:3:66"},"nativeSrc":"880:18:66","nodeType":"YulFunctionCall","src":"880:18:66"},"variableNames":[{"name":"tail","nativeSrc":"872:4:66","nodeType":"YulIdentifier","src":"872:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"914:9:66","nodeType":"YulIdentifier","src":"914:9:66"},{"arguments":[{"name":"value0","nativeSrc":"929:6:66","nodeType":"YulIdentifier","src":"929:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"945:3:66","nodeType":"YulLiteral","src":"945:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"950:1:66","nodeType":"YulLiteral","src":"950:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"941:3:66","nodeType":"YulIdentifier","src":"941:3:66"},"nativeSrc":"941:11:66","nodeType":"YulFunctionCall","src":"941:11:66"},{"kind":"number","nativeSrc":"954:1:66","nodeType":"YulLiteral","src":"954:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"937:3:66","nodeType":"YulIdentifier","src":"937:3:66"},"nativeSrc":"937:19:66","nodeType":"YulFunctionCall","src":"937:19:66"}],"functionName":{"name":"and","nativeSrc":"925:3:66","nodeType":"YulIdentifier","src":"925:3:66"},"nativeSrc":"925:32:66","nodeType":"YulFunctionCall","src":"925:32:66"}],"functionName":{"name":"mstore","nativeSrc":"907:6:66","nodeType":"YulIdentifier","src":"907:6:66"},"nativeSrc":"907:51:66","nodeType":"YulFunctionCall","src":"907:51:66"},"nativeSrc":"907:51:66","nodeType":"YulExpressionStatement","src":"907:51:66"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"761:203:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"831:9:66","nodeType":"YulTypedName","src":"831:9:66","type":""},{"name":"value0","nativeSrc":"842:6:66","nodeType":"YulTypedName","src":"842:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"853:4:66","nodeType":"YulTypedName","src":"853:4:66","type":""}],"src":"761:203:66"},{"body":{"nativeSrc":"1126:188:66","nodeType":"YulBlock","src":"1126:188:66","statements":[{"nativeSrc":"1136:26:66","nodeType":"YulAssignment","src":"1136:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1148:9:66","nodeType":"YulIdentifier","src":"1148:9:66"},{"kind":"number","nativeSrc":"1159:2:66","nodeType":"YulLiteral","src":"1159:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1144:3:66","nodeType":"YulIdentifier","src":"1144:3:66"},"nativeSrc":"1144:18:66","nodeType":"YulFunctionCall","src":"1144:18:66"},"variableNames":[{"name":"tail","nativeSrc":"1136:4:66","nodeType":"YulIdentifier","src":"1136:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1178:9:66","nodeType":"YulIdentifier","src":"1178:9:66"},{"name":"value0","nativeSrc":"1189:6:66","nodeType":"YulIdentifier","src":"1189:6:66"}],"functionName":{"name":"mstore","nativeSrc":"1171:6:66","nodeType":"YulIdentifier","src":"1171:6:66"},"nativeSrc":"1171:25:66","nodeType":"YulFunctionCall","src":"1171:25:66"},"nativeSrc":"1171:25:66","nodeType":"YulExpressionStatement","src":"1171:25:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1216:9:66","nodeType":"YulIdentifier","src":"1216:9:66"},{"kind":"number","nativeSrc":"1227:2:66","nodeType":"YulLiteral","src":"1227:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1212:3:66","nodeType":"YulIdentifier","src":"1212:3:66"},"nativeSrc":"1212:18:66","nodeType":"YulFunctionCall","src":"1212:18:66"},{"arguments":[{"name":"value1","nativeSrc":"1236:6:66","nodeType":"YulIdentifier","src":"1236:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1252:3:66","nodeType":"YulLiteral","src":"1252:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"1257:1:66","nodeType":"YulLiteral","src":"1257:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1248:3:66","nodeType":"YulIdentifier","src":"1248:3:66"},"nativeSrc":"1248:11:66","nodeType":"YulFunctionCall","src":"1248:11:66"},{"kind":"number","nativeSrc":"1261:1:66","nodeType":"YulLiteral","src":"1261:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1244:3:66","nodeType":"YulIdentifier","src":"1244:3:66"},"nativeSrc":"1244:19:66","nodeType":"YulFunctionCall","src":"1244:19:66"}],"functionName":{"name":"and","nativeSrc":"1232:3:66","nodeType":"YulIdentifier","src":"1232:3:66"},"nativeSrc":"1232:32:66","nodeType":"YulFunctionCall","src":"1232:32:66"}],"functionName":{"name":"mstore","nativeSrc":"1205:6:66","nodeType":"YulIdentifier","src":"1205:6:66"},"nativeSrc":"1205:60:66","nodeType":"YulFunctionCall","src":"1205:60:66"},"nativeSrc":"1205:60:66","nodeType":"YulExpressionStatement","src":"1205:60:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1285:9:66","nodeType":"YulIdentifier","src":"1285:9:66"},{"kind":"number","nativeSrc":"1296:2:66","nodeType":"YulLiteral","src":"1296:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1281:3:66","nodeType":"YulIdentifier","src":"1281:3:66"},"nativeSrc":"1281:18:66","nodeType":"YulFunctionCall","src":"1281:18:66"},{"name":"value2","nativeSrc":"1301:6:66","nodeType":"YulIdentifier","src":"1301:6:66"}],"functionName":{"name":"mstore","nativeSrc":"1274:6:66","nodeType":"YulIdentifier","src":"1274:6:66"},"nativeSrc":"1274:34:66","nodeType":"YulFunctionCall","src":"1274:34:66"},"nativeSrc":"1274:34:66","nodeType":"YulExpressionStatement","src":"1274:34:66"}]},"name":"abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed","nativeSrc":"969:345:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1079:9:66","nodeType":"YulTypedName","src":"1079:9:66","type":""},{"name":"value2","nativeSrc":"1090:6:66","nodeType":"YulTypedName","src":"1090:6:66","type":""},{"name":"value1","nativeSrc":"1098:6:66","nodeType":"YulTypedName","src":"1098:6:66","type":""},{"name":"value0","nativeSrc":"1106:6:66","nodeType":"YulTypedName","src":"1106:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1117:4:66","nodeType":"YulTypedName","src":"1117:4:66","type":""}],"src":"969:345:66"},{"body":{"nativeSrc":"1476:188:66","nodeType":"YulBlock","src":"1476:188:66","statements":[{"nativeSrc":"1486:26:66","nodeType":"YulAssignment","src":"1486:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1498:9:66","nodeType":"YulIdentifier","src":"1498:9:66"},{"kind":"number","nativeSrc":"1509:2:66","nodeType":"YulLiteral","src":"1509:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1494:3:66","nodeType":"YulIdentifier","src":"1494:3:66"},"nativeSrc":"1494:18:66","nodeType":"YulFunctionCall","src":"1494:18:66"},"variableNames":[{"name":"tail","nativeSrc":"1486:4:66","nodeType":"YulIdentifier","src":"1486:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1528:9:66","nodeType":"YulIdentifier","src":"1528:9:66"},{"arguments":[{"name":"value0","nativeSrc":"1543:6:66","nodeType":"YulIdentifier","src":"1543:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1559:3:66","nodeType":"YulLiteral","src":"1559:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"1564:1:66","nodeType":"YulLiteral","src":"1564:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1555:3:66","nodeType":"YulIdentifier","src":"1555:3:66"},"nativeSrc":"1555:11:66","nodeType":"YulFunctionCall","src":"1555:11:66"},{"kind":"number","nativeSrc":"1568:1:66","nodeType":"YulLiteral","src":"1568:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1551:3:66","nodeType":"YulIdentifier","src":"1551:3:66"},"nativeSrc":"1551:19:66","nodeType":"YulFunctionCall","src":"1551:19:66"}],"functionName":{"name":"and","nativeSrc":"1539:3:66","nodeType":"YulIdentifier","src":"1539:3:66"},"nativeSrc":"1539:32:66","nodeType":"YulFunctionCall","src":"1539:32:66"}],"functionName":{"name":"mstore","nativeSrc":"1521:6:66","nodeType":"YulIdentifier","src":"1521:6:66"},"nativeSrc":"1521:51:66","nodeType":"YulFunctionCall","src":"1521:51:66"},"nativeSrc":"1521:51:66","nodeType":"YulExpressionStatement","src":"1521:51:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1592:9:66","nodeType":"YulIdentifier","src":"1592:9:66"},{"kind":"number","nativeSrc":"1603:2:66","nodeType":"YulLiteral","src":"1603:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1588:3:66","nodeType":"YulIdentifier","src":"1588:3:66"},"nativeSrc":"1588:18:66","nodeType":"YulFunctionCall","src":"1588:18:66"},{"name":"value1","nativeSrc":"1608:6:66","nodeType":"YulIdentifier","src":"1608:6:66"}],"functionName":{"name":"mstore","nativeSrc":"1581:6:66","nodeType":"YulIdentifier","src":"1581:6:66"},"nativeSrc":"1581:34:66","nodeType":"YulFunctionCall","src":"1581:34:66"},"nativeSrc":"1581:34:66","nodeType":"YulExpressionStatement","src":"1581:34:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1635:9:66","nodeType":"YulIdentifier","src":"1635:9:66"},{"kind":"number","nativeSrc":"1646:2:66","nodeType":"YulLiteral","src":"1646:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1631:3:66","nodeType":"YulIdentifier","src":"1631:3:66"},"nativeSrc":"1631:18:66","nodeType":"YulFunctionCall","src":"1631:18:66"},{"name":"value2","nativeSrc":"1651:6:66","nodeType":"YulIdentifier","src":"1651:6:66"}],"functionName":{"name":"mstore","nativeSrc":"1624:6:66","nodeType":"YulIdentifier","src":"1624:6:66"},"nativeSrc":"1624:34:66","nodeType":"YulFunctionCall","src":"1624:34:66"},"nativeSrc":"1624:34:66","nodeType":"YulExpressionStatement","src":"1624:34:66"}]},"name":"abi_encode_tuple_t_address_t_bytes32_t_uint256__to_t_address_t_bytes32_t_uint256__fromStack_reversed","nativeSrc":"1319:345:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1429:9:66","nodeType":"YulTypedName","src":"1429:9:66","type":""},{"name":"value2","nativeSrc":"1440:6:66","nodeType":"YulTypedName","src":"1440:6:66","type":""},{"name":"value1","nativeSrc":"1448:6:66","nodeType":"YulTypedName","src":"1448:6:66","type":""},{"name":"value0","nativeSrc":"1456:6:66","nodeType":"YulTypedName","src":"1456:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1467:4:66","nodeType":"YulTypedName","src":"1467:4:66","type":""}],"src":"1319:345:66"},{"body":{"nativeSrc":"1854:232:66","nodeType":"YulBlock","src":"1854:232:66","statements":[{"nativeSrc":"1864:27:66","nodeType":"YulAssignment","src":"1864:27:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1876:9:66","nodeType":"YulIdentifier","src":"1876:9:66"},{"kind":"number","nativeSrc":"1887:3:66","nodeType":"YulLiteral","src":"1887:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"1872:3:66","nodeType":"YulIdentifier","src":"1872:3:66"},"nativeSrc":"1872:19:66","nodeType":"YulFunctionCall","src":"1872:19:66"},"variableNames":[{"name":"tail","nativeSrc":"1864:4:66","nodeType":"YulIdentifier","src":"1864:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1907:9:66","nodeType":"YulIdentifier","src":"1907:9:66"},{"name":"value0","nativeSrc":"1918:6:66","nodeType":"YulIdentifier","src":"1918:6:66"}],"functionName":{"name":"mstore","nativeSrc":"1900:6:66","nodeType":"YulIdentifier","src":"1900:6:66"},"nativeSrc":"1900:25:66","nodeType":"YulFunctionCall","src":"1900:25:66"},"nativeSrc":"1900:25:66","nodeType":"YulExpressionStatement","src":"1900:25:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1945:9:66","nodeType":"YulIdentifier","src":"1945:9:66"},{"kind":"number","nativeSrc":"1956:2:66","nodeType":"YulLiteral","src":"1956:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1941:3:66","nodeType":"YulIdentifier","src":"1941:3:66"},"nativeSrc":"1941:18:66","nodeType":"YulFunctionCall","src":"1941:18:66"},{"name":"value1","nativeSrc":"1961:6:66","nodeType":"YulIdentifier","src":"1961:6:66"}],"functionName":{"name":"mstore","nativeSrc":"1934:6:66","nodeType":"YulIdentifier","src":"1934:6:66"},"nativeSrc":"1934:34:66","nodeType":"YulFunctionCall","src":"1934:34:66"},"nativeSrc":"1934:34:66","nodeType":"YulExpressionStatement","src":"1934:34:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1988:9:66","nodeType":"YulIdentifier","src":"1988:9:66"},{"kind":"number","nativeSrc":"1999:2:66","nodeType":"YulLiteral","src":"1999:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1984:3:66","nodeType":"YulIdentifier","src":"1984:3:66"},"nativeSrc":"1984:18:66","nodeType":"YulFunctionCall","src":"1984:18:66"},{"arguments":[{"name":"value2","nativeSrc":"2008:6:66","nodeType":"YulIdentifier","src":"2008:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2024:3:66","nodeType":"YulLiteral","src":"2024:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"2029:1:66","nodeType":"YulLiteral","src":"2029:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2020:3:66","nodeType":"YulIdentifier","src":"2020:3:66"},"nativeSrc":"2020:11:66","nodeType":"YulFunctionCall","src":"2020:11:66"},{"kind":"number","nativeSrc":"2033:1:66","nodeType":"YulLiteral","src":"2033:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2016:3:66","nodeType":"YulIdentifier","src":"2016:3:66"},"nativeSrc":"2016:19:66","nodeType":"YulFunctionCall","src":"2016:19:66"}],"functionName":{"name":"and","nativeSrc":"2004:3:66","nodeType":"YulIdentifier","src":"2004:3:66"},"nativeSrc":"2004:32:66","nodeType":"YulFunctionCall","src":"2004:32:66"}],"functionName":{"name":"mstore","nativeSrc":"1977:6:66","nodeType":"YulIdentifier","src":"1977:6:66"},"nativeSrc":"1977:60:66","nodeType":"YulFunctionCall","src":"1977:60:66"},"nativeSrc":"1977:60:66","nodeType":"YulExpressionStatement","src":"1977:60:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2057:9:66","nodeType":"YulIdentifier","src":"2057:9:66"},{"kind":"number","nativeSrc":"2068:2:66","nodeType":"YulLiteral","src":"2068:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2053:3:66","nodeType":"YulIdentifier","src":"2053:3:66"},"nativeSrc":"2053:18:66","nodeType":"YulFunctionCall","src":"2053:18:66"},{"name":"value3","nativeSrc":"2073:6:66","nodeType":"YulIdentifier","src":"2073:6:66"}],"functionName":{"name":"mstore","nativeSrc":"2046:6:66","nodeType":"YulIdentifier","src":"2046:6:66"},"nativeSrc":"2046:34:66","nodeType":"YulFunctionCall","src":"2046:34:66"},"nativeSrc":"2046:34:66","nodeType":"YulExpressionStatement","src":"2046:34:66"}]},"name":"abi_encode_tuple_t_bytes32_t_uint256_t_address_t_uint256__to_t_bytes32_t_uint256_t_address_t_uint256__fromStack_reversed","nativeSrc":"1669:417:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1799:9:66","nodeType":"YulTypedName","src":"1799:9:66","type":""},{"name":"value3","nativeSrc":"1810:6:66","nodeType":"YulTypedName","src":"1810:6:66","type":""},{"name":"value2","nativeSrc":"1818:6:66","nodeType":"YulTypedName","src":"1818:6:66","type":""},{"name":"value1","nativeSrc":"1826:6:66","nodeType":"YulTypedName","src":"1826:6:66","type":""},{"name":"value0","nativeSrc":"1834:6:66","nodeType":"YulTypedName","src":"1834:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1845:4:66","nodeType":"YulTypedName","src":"1845:4:66","type":""}],"src":"1669:417:66"},{"body":{"nativeSrc":"2292:240:66","nodeType":"YulBlock","src":"2292:240:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"2309:3:66","nodeType":"YulIdentifier","src":"2309:3:66"},{"arguments":[{"name":"value0","nativeSrc":"2318:6:66","nodeType":"YulIdentifier","src":"2318:6:66"},{"arguments":[{"kind":"number","nativeSrc":"2330:3:66","nodeType":"YulLiteral","src":"2330:3:66","type":"","value":"248"},{"kind":"number","nativeSrc":"2335:3:66","nodeType":"YulLiteral","src":"2335:3:66","type":"","value":"255"}],"functionName":{"name":"shl","nativeSrc":"2326:3:66","nodeType":"YulIdentifier","src":"2326:3:66"},"nativeSrc":"2326:13:66","nodeType":"YulFunctionCall","src":"2326:13:66"}],"functionName":{"name":"and","nativeSrc":"2314:3:66","nodeType":"YulIdentifier","src":"2314:3:66"},"nativeSrc":"2314:26:66","nodeType":"YulFunctionCall","src":"2314:26:66"}],"functionName":{"name":"mstore","nativeSrc":"2302:6:66","nodeType":"YulIdentifier","src":"2302:6:66"},"nativeSrc":"2302:39:66","nodeType":"YulFunctionCall","src":"2302:39:66"},"nativeSrc":"2302:39:66","nodeType":"YulExpressionStatement","src":"2302:39:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2361:3:66","nodeType":"YulIdentifier","src":"2361:3:66"},{"kind":"number","nativeSrc":"2366:1:66","nodeType":"YulLiteral","src":"2366:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2357:3:66","nodeType":"YulIdentifier","src":"2357:3:66"},"nativeSrc":"2357:11:66","nodeType":"YulFunctionCall","src":"2357:11:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2378:2:66","nodeType":"YulLiteral","src":"2378:2:66","type":"","value":"96"},{"name":"value1","nativeSrc":"2382:6:66","nodeType":"YulIdentifier","src":"2382:6:66"}],"functionName":{"name":"shl","nativeSrc":"2374:3:66","nodeType":"YulIdentifier","src":"2374:3:66"},"nativeSrc":"2374:15:66","nodeType":"YulFunctionCall","src":"2374:15:66"},{"arguments":[{"kind":"number","nativeSrc":"2395:26:66","nodeType":"YulLiteral","src":"2395:26:66","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"not","nativeSrc":"2391:3:66","nodeType":"YulIdentifier","src":"2391:3:66"},"nativeSrc":"2391:31:66","nodeType":"YulFunctionCall","src":"2391:31:66"}],"functionName":{"name":"and","nativeSrc":"2370:3:66","nodeType":"YulIdentifier","src":"2370:3:66"},"nativeSrc":"2370:53:66","nodeType":"YulFunctionCall","src":"2370:53:66"}],"functionName":{"name":"mstore","nativeSrc":"2350:6:66","nodeType":"YulIdentifier","src":"2350:6:66"},"nativeSrc":"2350:74:66","nodeType":"YulFunctionCall","src":"2350:74:66"},"nativeSrc":"2350:74:66","nodeType":"YulExpressionStatement","src":"2350:74:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2444:3:66","nodeType":"YulIdentifier","src":"2444:3:66"},{"kind":"number","nativeSrc":"2449:2:66","nodeType":"YulLiteral","src":"2449:2:66","type":"","value":"21"}],"functionName":{"name":"add","nativeSrc":"2440:3:66","nodeType":"YulIdentifier","src":"2440:3:66"},"nativeSrc":"2440:12:66","nodeType":"YulFunctionCall","src":"2440:12:66"},{"name":"value2","nativeSrc":"2454:6:66","nodeType":"YulIdentifier","src":"2454:6:66"}],"functionName":{"name":"mstore","nativeSrc":"2433:6:66","nodeType":"YulIdentifier","src":"2433:6:66"},"nativeSrc":"2433:28:66","nodeType":"YulFunctionCall","src":"2433:28:66"},"nativeSrc":"2433:28:66","nodeType":"YulExpressionStatement","src":"2433:28:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2481:3:66","nodeType":"YulIdentifier","src":"2481:3:66"},{"kind":"number","nativeSrc":"2486:2:66","nodeType":"YulLiteral","src":"2486:2:66","type":"","value":"53"}],"functionName":{"name":"add","nativeSrc":"2477:3:66","nodeType":"YulIdentifier","src":"2477:3:66"},"nativeSrc":"2477:12:66","nodeType":"YulFunctionCall","src":"2477:12:66"},{"name":"value3","nativeSrc":"2491:6:66","nodeType":"YulIdentifier","src":"2491:6:66"}],"functionName":{"name":"mstore","nativeSrc":"2470:6:66","nodeType":"YulIdentifier","src":"2470:6:66"},"nativeSrc":"2470:28:66","nodeType":"YulFunctionCall","src":"2470:28:66"},"nativeSrc":"2470:28:66","nodeType":"YulExpressionStatement","src":"2470:28:66"},{"nativeSrc":"2507:19:66","nodeType":"YulAssignment","src":"2507:19:66","value":{"arguments":[{"name":"pos","nativeSrc":"2518:3:66","nodeType":"YulIdentifier","src":"2518:3:66"},{"kind":"number","nativeSrc":"2523:2:66","nodeType":"YulLiteral","src":"2523:2:66","type":"","value":"85"}],"functionName":{"name":"add","nativeSrc":"2514:3:66","nodeType":"YulIdentifier","src":"2514:3:66"},"nativeSrc":"2514:12:66","nodeType":"YulFunctionCall","src":"2514:12:66"},"variableNames":[{"name":"end","nativeSrc":"2507:3:66","nodeType":"YulIdentifier","src":"2507:3:66"}]}]},"name":"abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed","nativeSrc":"2091:441:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"2244:3:66","nodeType":"YulTypedName","src":"2244:3:66","type":""},{"name":"value3","nativeSrc":"2249:6:66","nodeType":"YulTypedName","src":"2249:6:66","type":""},{"name":"value2","nativeSrc":"2257:6:66","nodeType":"YulTypedName","src":"2257:6:66","type":""},{"name":"value1","nativeSrc":"2265:6:66","nodeType":"YulTypedName","src":"2265:6:66","type":""},{"name":"value0","nativeSrc":"2273:6:66","nodeType":"YulTypedName","src":"2273:6:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"2284:3:66","nodeType":"YulTypedName","src":"2284:3:66","type":""}],"src":"2091:441:66"},{"body":{"nativeSrc":"2858:265:66","nodeType":"YulBlock","src":"2858:265:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"2875:3:66","nodeType":"YulIdentifier","src":"2875:3:66"},{"arguments":[{"kind":"number","nativeSrc":"2884:2:66","nodeType":"YulLiteral","src":"2884:2:66","type":"","value":"96"},{"kind":"number","nativeSrc":"2888:42:66","nodeType":"YulLiteral","src":"2888:42:66","type":"","value":"0x3d602d80600a3d3981f3363d3d373d3d3d363d73"}],"functionName":{"name":"shl","nativeSrc":"2880:3:66","nodeType":"YulIdentifier","src":"2880:3:66"},"nativeSrc":"2880:51:66","nodeType":"YulFunctionCall","src":"2880:51:66"}],"functionName":{"name":"mstore","nativeSrc":"2868:6:66","nodeType":"YulIdentifier","src":"2868:6:66"},"nativeSrc":"2868:64:66","nodeType":"YulFunctionCall","src":"2868:64:66"},"nativeSrc":"2868:64:66","nodeType":"YulExpressionStatement","src":"2868:64:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2952:3:66","nodeType":"YulIdentifier","src":"2952:3:66"},{"kind":"number","nativeSrc":"2957:2:66","nodeType":"YulLiteral","src":"2957:2:66","type":"","value":"20"}],"functionName":{"name":"add","nativeSrc":"2948:3:66","nodeType":"YulIdentifier","src":"2948:3:66"},"nativeSrc":"2948:12:66","nodeType":"YulFunctionCall","src":"2948:12:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2970:2:66","nodeType":"YulLiteral","src":"2970:2:66","type":"","value":"96"},{"name":"value0","nativeSrc":"2974:6:66","nodeType":"YulIdentifier","src":"2974:6:66"}],"functionName":{"name":"shl","nativeSrc":"2966:3:66","nodeType":"YulIdentifier","src":"2966:3:66"},"nativeSrc":"2966:15:66","nodeType":"YulFunctionCall","src":"2966:15:66"},{"arguments":[{"kind":"number","nativeSrc":"2987:26:66","nodeType":"YulLiteral","src":"2987:26:66","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"not","nativeSrc":"2983:3:66","nodeType":"YulIdentifier","src":"2983:3:66"},"nativeSrc":"2983:31:66","nodeType":"YulFunctionCall","src":"2983:31:66"}],"functionName":{"name":"and","nativeSrc":"2962:3:66","nodeType":"YulIdentifier","src":"2962:3:66"},"nativeSrc":"2962:53:66","nodeType":"YulFunctionCall","src":"2962:53:66"}],"functionName":{"name":"mstore","nativeSrc":"2941:6:66","nodeType":"YulIdentifier","src":"2941:6:66"},"nativeSrc":"2941:75:66","nodeType":"YulFunctionCall","src":"2941:75:66"},"nativeSrc":"2941:75:66","nodeType":"YulExpressionStatement","src":"2941:75:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"3036:3:66","nodeType":"YulIdentifier","src":"3036:3:66"},{"kind":"number","nativeSrc":"3041:2:66","nodeType":"YulLiteral","src":"3041:2:66","type":"","value":"40"}],"functionName":{"name":"add","nativeSrc":"3032:3:66","nodeType":"YulIdentifier","src":"3032:3:66"},"nativeSrc":"3032:12:66","nodeType":"YulFunctionCall","src":"3032:12:66"},{"arguments":[{"kind":"number","nativeSrc":"3050:3:66","nodeType":"YulLiteral","src":"3050:3:66","type":"","value":"136"},{"kind":"number","nativeSrc":"3055:32:66","nodeType":"YulLiteral","src":"3055:32:66","type":"","value":"0x5af43d82803e903d91602b57fd5bf3"}],"functionName":{"name":"shl","nativeSrc":"3046:3:66","nodeType":"YulIdentifier","src":"3046:3:66"},"nativeSrc":"3046:42:66","nodeType":"YulFunctionCall","src":"3046:42:66"}],"functionName":{"name":"mstore","nativeSrc":"3025:6:66","nodeType":"YulIdentifier","src":"3025:6:66"},"nativeSrc":"3025:64:66","nodeType":"YulFunctionCall","src":"3025:64:66"},"nativeSrc":"3025:64:66","nodeType":"YulExpressionStatement","src":"3025:64:66"},{"nativeSrc":"3098:19:66","nodeType":"YulAssignment","src":"3098:19:66","value":{"arguments":[{"name":"pos","nativeSrc":"3109:3:66","nodeType":"YulIdentifier","src":"3109:3:66"},{"kind":"number","nativeSrc":"3114:2:66","nodeType":"YulLiteral","src":"3114:2:66","type":"","value":"55"}],"functionName":{"name":"add","nativeSrc":"3105:3:66","nodeType":"YulIdentifier","src":"3105:3:66"},"nativeSrc":"3105:12:66","nodeType":"YulFunctionCall","src":"3105:12:66"},"variableNames":[{"name":"end","nativeSrc":"3098:3:66","nodeType":"YulIdentifier","src":"3098:3:66"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_72307939328b75c6e301a012c75e0a4e690a99036b95f6e6f4f1b5aba02a9ce4_t_address_t_stringliteral_11a195f66c9175f46895bae2006d40848a680c7068b9fc4af248ff9a54a47e45__to_t_string_memory_ptr_t_address_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"2537:586:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"2834:3:66","nodeType":"YulTypedName","src":"2834:3:66","type":""},{"name":"value0","nativeSrc":"2839:6:66","nodeType":"YulTypedName","src":"2839:6:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"2850:3:66","nodeType":"YulTypedName","src":"2850:3:66","type":""}],"src":"2537:586:66"}]},"contents":"{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bytes32t_uint256t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let value := 0\n        value := calldataload(add(headStart, 64))\n        value2 := value\n        value3 := abi_decode_address(add(headStart, 96))\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 128))\n        value4 := value_1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_uint256_t_address_t_uint256__to_t_uint256_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_t_bytes32_t_uint256__to_t_address_t_bytes32_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint256_t_address_t_uint256__to_t_bytes32_t_uint256_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, and(value0, shl(248, 255)))\n        mstore(add(pos, 1), and(shl(96, value1), not(0xffffffffffffffffffffffff)))\n        mstore(add(pos, 21), value2)\n        mstore(add(pos, 53), value3)\n        end := add(pos, 85)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_72307939328b75c6e301a012c75e0a4e690a99036b95f6e6f4f1b5aba02a9ce4_t_address_t_stringliteral_11a195f66c9175f46895bae2006d40848a680c7068b9fc4af248ff9a54a47e45__to_t_string_memory_ptr_t_address_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        mstore(pos, shl(96, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73))\n        mstore(add(pos, 20), and(shl(96, value0), not(0xffffffffffffffffffffffff)))\n        mstore(add(pos, 40), shl(136, 0x5af43d82803e903d91602b57fd5bf3))\n        end := add(pos, 55)\n    }\n}","id":66,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c8063246a00211461003b5780638a54c52f1461006a575b600080fd5b61004e610049366004610324565b61007d565b6040516001600160a01b03909116815260200160405180910390f35b61004e610078366004610324565b6100a5565b60008061008c868686866101e7565b9050610098878261022e565b9150505b95945050505050565b6000806100b4868686866101e7565b905060006100c2888361022e565b9050803b80156100d65750915061009c9050565b60006100e18a61029d565b90506000848251602084016000f590506001600160a01b038116610118576040516320188a5960e01b815260040160405180910390fd5b60405160016204ae7d60e01b03198152600481018a90526001600160a01b0389811660248301526044820189905282169063fffb518390606401600060405180830381600087803b15801561016c57600080fd5b505af1158015610180573d6000803e3d6000fd5b5050604080516001600160a01b038581168252602082018f90529181018d90528a9350818c169250908e16907f79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf887229060600160405180910390a49a9950505050505050505050565b60408051602080820196909652808201949094526001600160a01b039290921660608401526080808401919091528151808403909101815260a09092019052805191012090565b60008061023a8461029d565b8051602091820120604080516001600160f81b0319818501523060601b6bffffffffffffffffffffffff19166021820152603581019690965260558087019290925280518087039092018252607590950190945283519301929092209392505050565b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b6020820152606082811b6bffffffffffffffffffffffff191660348301526e5af43d82803e903d91602b57fd5bf360881b6048830152906057016040516020818303038152906040529050919050565b80356001600160a01b038116811461031f57600080fd5b919050565b600080600080600060a0868803121561033c57600080fd5b61034586610308565b9450602086013593506040860135925061036160608701610308565b94979396509194608001359291505056fea26469706673582212203eb8d39ac2055d12b890fab8768f85121d268d34fab33ece3885ffdd174f535164736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x246A0021 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8A54C52F EQ PUSH2 0x6A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x324 JUMP JUMPDEST PUSH2 0x7D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4E PUSH2 0x78 CALLDATASIZE PUSH1 0x4 PUSH2 0x324 JUMP JUMPDEST PUSH2 0xA5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8C DUP7 DUP7 DUP7 DUP7 PUSH2 0x1E7 JUMP JUMPDEST SWAP1 POP PUSH2 0x98 DUP8 DUP3 PUSH2 0x22E JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xB4 DUP7 DUP7 DUP7 DUP7 PUSH2 0x1E7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xC2 DUP9 DUP4 PUSH2 0x22E JUMP JUMPDEST SWAP1 POP DUP1 EXTCODESIZE DUP1 ISZERO PUSH2 0xD6 JUMPI POP SWAP2 POP PUSH2 0x9C SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE1 DUP11 PUSH2 0x29D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 DUP3 MLOAD PUSH1 0x20 DUP5 ADD PUSH1 0x0 CREATE2 SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x118 JUMPI PUSH1 0x40 MLOAD PUSH4 0x20188A59 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x4AE7D PUSH1 0xE0 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP10 SWAP1 MSTORE DUP3 AND SWAP1 PUSH4 0xFFFB5183 SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x180 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP16 SWAP1 MSTORE SWAP2 DUP2 ADD DUP14 SWAP1 MSTORE DUP11 SWAP4 POP DUP2 DUP13 AND SWAP3 POP SWAP1 DUP15 AND SWAP1 PUSH32 0x79F19B3655EE38B1CE526556B7731A20C8F218FBDA4A3990B6CC4172FDF88722 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA0 SWAP1 SWAP3 ADD SWAP1 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23A DUP5 PUSH2 0x29D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT DUP2 DUP6 ADD MSTORE ADDRESS PUSH1 0x60 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x21 DUP3 ADD MSTORE PUSH1 0x35 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0x55 DUP1 DUP8 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP1 MLOAD DUP1 DUP8 SUB SWAP1 SWAP3 ADD DUP3 MSTORE PUSH1 0x75 SWAP1 SWAP6 ADD SWAP1 SWAP5 MSTORE DUP4 MLOAD SWAP4 ADD SWAP3 SWAP1 SWAP3 KECCAK256 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0x3D602D80600A3D3981F3363D3D373D3D3D363D73 PUSH1 0x60 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 DUP2 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x34 DUP4 ADD MSTORE PUSH15 0x5AF43D82803E903D91602B57FD5BF3 PUSH1 0x88 SHL PUSH1 0x48 DUP4 ADD MSTORE SWAP1 PUSH1 0x57 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x345 DUP7 PUSH2 0x308 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH2 0x361 PUSH1 0x60 DUP8 ADD PUSH2 0x308 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY 0xB8 0xD3 SWAP11 0xC2 SDIV TSTORE SLT 0xB8 SWAP1 STATICCALL 0xB8 PUSH23 0x8F85121D268D34FAB33ECE3885FFDD174F535164736F6C PUSH4 0x4300081C STOP CALLER ","sourceMap":"1702:3999:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3701:410;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;925:32:66;;;907:51;;895:2;880:18;3701:410:57;;;;;;;1808:1815;;;;;;:::i;:::-;;:::i;3701:410::-;3880:7;3899:20;3922:113;3952:4;3970:7;3991:13;4018:7;3922:16;:113::i;:::-;3899:136;;4052:52;4075:14;4091:12;4052:22;:52::i;:::-;4045:59;;;3701:410;;;;;;;;:::o;1808:1815::-;1990:7;2048:20;2071:113;2101:4;2119:7;2140:13;2167:7;2071:16;:113::i;:::-;2048:136;;2194:24;2221:86;2257:14;2285:12;2221:22;:86::i;:::-;2194:113;-1:-1:-1;2426:29:57;;2528:12;;2524:66;;-1:-1:-1;2563:16:57;-1:-1:-1;2556:23:57;;-1:-1:-1;2556:23:57;2524:66;2655:21;2679:36;2700:14;2679:20;:36::i;:::-;2655:60;;2725:23;2979:12;2926:8;2920:15;2874:2;2864:8;2860:17;2826:1;2801:204;2782:223;-1:-1:-1;;;;;;3075:29:57;;3071:90;;3127:23;;-1:-1:-1;;;3127:23:57;;;;;;;;;;;3071:90;3219:135;;-1:-1:-1;;;;;;3219:135:57;;;;;1171:25:66;;;-1:-1:-1;;;;;1232:32:66;;;1212:18;;;1205:60;1281:18;;;1274:34;;;3219:56:57;;;;;1144:18:66;;3219:135:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3408:175:57;;;-1:-1:-1;;;;;1539:32:66;;;1521:51;;1603:2;1588:18;;1581:34;;;1631:18;;;1624:34;;;3566:7:57;;-1:-1:-1;3408:175:57;;;;-1:-1:-1;3408:175:57;;;;;;1509:2:66;1494:18;3408:175:57;;;;;;;3601:15;1808:1815;-1:-1:-1;;;;;;;;;;1808:1815:57:o;4188:251::-;4382:49;;;;;;;1900:25:66;;;;1941:18;;;1934:34;;;;-1:-1:-1;;;;;2004:32:66;;;;1984:18;;;1977:60;2053:18;;;;2046:34;;;;4382:49:57;;;;;;;;;;1872:19:66;;;;4382:49:57;;4372:60;;;;;;4188:251::o;4970:729::-;5093:7;5112:21;5136:36;5157:14;5136:20;:36::i;:::-;5206:19;;;;;;;5381:231;;;-1:-1:-1;;;;;;5381:231:57;;;2302:39:66;5485:4:57;2378:2:66;2374:15;-1:-1:-1;;2370:53:66;2357:11;;;2350:74;2440:12;;;2433:28;;;;2477:12;;;;2470:28;;;;5381:231:57;;;;;;;;;;2514:12:66;;;;5381:231:57;;;5342:296;;;;;;;;;;-1:-1:-1;;;4970:729:57:o;4523:370::-;4657:229;;-1:-1:-1;;;4657:229:57;;;2868:64:66;4614:12:57;2966:15:66;;;-1:-1:-1;;2962:53:66;2948:12;;;2941:75;-1:-1:-1;;;3032:12:66;;;3025:64;4614:12:57;3105::66;;4657:229:57;;;;;;;;;;;;4638:248;;4523:370;;;:::o;14:173:66:-;82:20;;-1:-1:-1;;;;;131:31:66;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:564::-;287:6;295;303;311;319;372:3;360:9;351:7;347:23;343:33;340:53;;;389:1;386;379:12;340:53;412:29;431:9;412:29;:::i;:::-;402:39;-1:-1:-1;488:2:66;473:18;;460:32;;-1:-1:-1;561:2:66;546:18;;533:32;;-1:-1:-1;608:38:66;642:2;627:18;;608:38;:::i;:::-;192:564;;;;-1:-1:-1;192:564:66;;719:3;704:19;691:33;;192:564;-1:-1:-1;;192:564:66:o"},"gasEstimates":{"creation":{"codeDepositCost":"187200","executionCost":"232","totalCost":"187432"},"external":{"account(address,bytes32,uint256,address,uint256)":"infinite","createAccount(address,bytes32,uint256,address,uint256)":"infinite"},"internal":{"_computeAccountAddress(address,bytes32)":"infinite","_getCombinedSalt(bytes32,uint256,address,uint256)":"infinite","_getCreationBytecode(address)":"infinite"}},"methodIdentifiers":{"account(address,bytes32,uint256,address,uint256)":"246a0021","createAccount(address,bytes32,uint256,address,uint256)":"8a54c52f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccountCreationFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC6551AccountCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"account\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"createAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccountCreationFailed()\":[{\"details\":\"The registry MUST revert with AccountCreationFailed error if the create2 operation fails.\"}]},\"events\":{\"ERC6551AccountCreated(address,address,bytes32,uint256,address,uint256)\":{\"details\":\"The registry MUST emit the ERC6551AccountCreated event upon successful account creation.\"}},\"kind\":\"dev\",\"methods\":{\"account(address,bytes32,uint256,address,uint256)\":{\"details\":\"Returns the deterministic address for a TBA\"},\"createAccount(address,bytes32,uint256,address,uint256)\":{\"details\":\"Creates an ERC6551 account\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC6551Registry.sol\":\"ERC6551Registry\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/ERC6551Registry.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\ninterface IERC6551Registry {\\n    /**\\n     * @dev The registry MUST emit the ERC6551AccountCreated event upon successful account creation.\\n     */\\n    event ERC6551AccountCreated(\\n        address account,\\n        address indexed implementation,\\n        bytes32 salt,\\n        uint256 chainId,\\n        address indexed tokenContract,\\n        uint256 indexed tokenId\\n    );\\n\\n    /**\\n     * @dev The registry MUST revert with AccountCreationFailed error if the create2 operation fails.\\n     */\\n    error AccountCreationFailed();\\n\\n    /**\\n     * @dev Creates a token bound account for a non-fungible token.\\n     *\\n     * If account has already been created, returns the account address without calling create2.\\n     *\\n     * Emits ERC6551AccountCreated event.\\n     *\\n     * @return account The address of the token bound account\\n     */\\n    function createAccount(\\n        address implementation,\\n        bytes32 salt,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) external returns (address account);\\n\\n    /**\\n     * @dev Returns the computed token bound account address for a non-fungible token.\\n     *\\n     * @return account The address of the token bound account\\n     */\\n    function account(\\n        address implementation,\\n        bytes32 salt,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) external view returns (address account);\\n}\\n\\n// Interface to call the initialize method on the account contract\\ninterface IERC6551AccountInitializable {\\n    function initialize(\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) external;\\n}\\n\\ncontract ERC6551Registry is IERC6551Registry {\\n    /**\\n     * @dev Creates an ERC6551 account\\n     */\\n    function createAccount(\\n        address implementation,\\n        bytes32 salt,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) external returns (address) {\\n        // Compute the account address\\n        bytes32 combinedSalt = _getCombinedSalt(\\n            salt,\\n            chainId,\\n            tokenContract,\\n            tokenId\\n        );\\n        address predictedAddress = _computeAccountAddress(\\n            implementation,\\n            combinedSalt\\n        );\\n\\n        // Check if the account already exists\\n        uint256 codeSize;\\n        assembly {\\n            codeSize := extcodesize(predictedAddress)\\n        }\\n\\n        // If account exists, return its address\\n        if (codeSize > 0) {\\n            return predictedAddress;\\n        }\\n\\n        // Create the ERC-1167 proxy to implementation\\n        bytes memory bytecode = _getCreationBytecode(implementation);\\n        address deployedAddress;\\n\\n        assembly {\\n            deployedAddress := create2(\\n                0, // No ETH sent\\n                add(bytecode, 32), // Skip the length field\\n                mload(bytecode), // Length of the bytecode\\n                combinedSalt\\n            )\\n        }\\n\\n        // Check if deployment was successful\\n        if (deployedAddress == address(0)) {\\n            revert AccountCreationFailed();\\n        }\\n\\n        // Initialize the account with NFT data\\n        IERC6551AccountInitializable(deployedAddress).initialize(\\n            chainId,\\n            tokenContract,\\n            tokenId\\n        );\\n\\n        // Emit account created event\\n        emit ERC6551AccountCreated(\\n            deployedAddress,\\n            implementation,\\n            salt,\\n            chainId,\\n            tokenContract,\\n            tokenId\\n        );\\n\\n        return deployedAddress;\\n    }\\n\\n    /**\\n     * @dev Returns the deterministic address for a TBA\\n     */\\n    function account(\\n        address implementation,\\n        bytes32 salt,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) public view returns (address) {\\n        bytes32 combinedSalt = _getCombinedSalt(\\n            salt,\\n            chainId,\\n            tokenContract,\\n            tokenId\\n        );\\n        return _computeAccountAddress(implementation, combinedSalt);\\n    }\\n\\n    /**\\n     * @dev Combines all parameters into a single salt\\n     */\\n    function _getCombinedSalt(\\n        bytes32 salt,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) internal pure returns (bytes32) {\\n        return keccak256(abi.encode(salt, chainId, tokenContract, tokenId));\\n    }\\n\\n    /**\\n     * @dev Returns the creation bytecode for a minimal proxy\\n     */\\n    function _getCreationBytecode(\\n        address implementation\\n    ) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                // ERC-1167 minimal proxy bytecode\\n                hex\\\"3d602d80600a3d3981f3363d3d373d3d3d363d73\\\",\\n                implementation,\\n                hex\\\"5af43d82803e903d91602b57fd5bf3\\\"\\n            );\\n    }\\n\\n    /**\\n     * @dev Computes the account address using CREATE2\\n     */\\n    function _computeAccountAddress(\\n        address implementation,\\n        bytes32 combinedSalt\\n    ) internal view returns (address) {\\n        bytes memory bytecode = _getCreationBytecode(implementation);\\n\\n        bytes32 bytecodeHash = keccak256(bytecode);\\n\\n        return\\n            address(\\n                uint160(\\n                    uint256(\\n                        keccak256(\\n                            abi.encodePacked(\\n                                bytes1(0xff),\\n                                address(this),\\n                                combinedSalt,\\n                                bytecodeHash\\n                            )\\n                        )\\n                    )\\n                )\\n            );\\n    }\\n}\\n\",\"keccak256\":\"0x69c8665384130ecd4fef1aec3dc7e371c649c3997b56eff259f04a6bebbac525\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IERC6551AccountInitializable":{"abi":[{"inputs":[{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"initialize(uint256,address,uint256)":"fffb5183"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC6551Registry.sol\":\"IERC6551AccountInitializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/ERC6551Registry.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\ninterface IERC6551Registry {\\n    /**\\n     * @dev The registry MUST emit the ERC6551AccountCreated event upon successful account creation.\\n     */\\n    event ERC6551AccountCreated(\\n        address account,\\n        address indexed implementation,\\n        bytes32 salt,\\n        uint256 chainId,\\n        address indexed tokenContract,\\n        uint256 indexed tokenId\\n    );\\n\\n    /**\\n     * @dev The registry MUST revert with AccountCreationFailed error if the create2 operation fails.\\n     */\\n    error AccountCreationFailed();\\n\\n    /**\\n     * @dev Creates a token bound account for a non-fungible token.\\n     *\\n     * If account has already been created, returns the account address without calling create2.\\n     *\\n     * Emits ERC6551AccountCreated event.\\n     *\\n     * @return account The address of the token bound account\\n     */\\n    function createAccount(\\n        address implementation,\\n        bytes32 salt,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) external returns (address account);\\n\\n    /**\\n     * @dev Returns the computed token bound account address for a non-fungible token.\\n     *\\n     * @return account The address of the token bound account\\n     */\\n    function account(\\n        address implementation,\\n        bytes32 salt,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) external view returns (address account);\\n}\\n\\n// Interface to call the initialize method on the account contract\\ninterface IERC6551AccountInitializable {\\n    function initialize(\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) external;\\n}\\n\\ncontract ERC6551Registry is IERC6551Registry {\\n    /**\\n     * @dev Creates an ERC6551 account\\n     */\\n    function createAccount(\\n        address implementation,\\n        bytes32 salt,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) external returns (address) {\\n        // Compute the account address\\n        bytes32 combinedSalt = _getCombinedSalt(\\n            salt,\\n            chainId,\\n            tokenContract,\\n            tokenId\\n        );\\n        address predictedAddress = _computeAccountAddress(\\n            implementation,\\n            combinedSalt\\n        );\\n\\n        // Check if the account already exists\\n        uint256 codeSize;\\n        assembly {\\n            codeSize := extcodesize(predictedAddress)\\n        }\\n\\n        // If account exists, return its address\\n        if (codeSize > 0) {\\n            return predictedAddress;\\n        }\\n\\n        // Create the ERC-1167 proxy to implementation\\n        bytes memory bytecode = _getCreationBytecode(implementation);\\n        address deployedAddress;\\n\\n        assembly {\\n            deployedAddress := create2(\\n                0, // No ETH sent\\n                add(bytecode, 32), // Skip the length field\\n                mload(bytecode), // Length of the bytecode\\n                combinedSalt\\n            )\\n        }\\n\\n        // Check if deployment was successful\\n        if (deployedAddress == address(0)) {\\n            revert AccountCreationFailed();\\n        }\\n\\n        // Initialize the account with NFT data\\n        IERC6551AccountInitializable(deployedAddress).initialize(\\n            chainId,\\n            tokenContract,\\n            tokenId\\n        );\\n\\n        // Emit account created event\\n        emit ERC6551AccountCreated(\\n            deployedAddress,\\n            implementation,\\n            salt,\\n            chainId,\\n            tokenContract,\\n            tokenId\\n        );\\n\\n        return deployedAddress;\\n    }\\n\\n    /**\\n     * @dev Returns the deterministic address for a TBA\\n     */\\n    function account(\\n        address implementation,\\n        bytes32 salt,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) public view returns (address) {\\n        bytes32 combinedSalt = _getCombinedSalt(\\n            salt,\\n            chainId,\\n            tokenContract,\\n            tokenId\\n        );\\n        return _computeAccountAddress(implementation, combinedSalt);\\n    }\\n\\n    /**\\n     * @dev Combines all parameters into a single salt\\n     */\\n    function _getCombinedSalt(\\n        bytes32 salt,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) internal pure returns (bytes32) {\\n        return keccak256(abi.encode(salt, chainId, tokenContract, tokenId));\\n    }\\n\\n    /**\\n     * @dev Returns the creation bytecode for a minimal proxy\\n     */\\n    function _getCreationBytecode(\\n        address implementation\\n    ) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                // ERC-1167 minimal proxy bytecode\\n                hex\\\"3d602d80600a3d3981f3363d3d373d3d3d363d73\\\",\\n                implementation,\\n                hex\\\"5af43d82803e903d91602b57fd5bf3\\\"\\n            );\\n    }\\n\\n    /**\\n     * @dev Computes the account address using CREATE2\\n     */\\n    function _computeAccountAddress(\\n        address implementation,\\n        bytes32 combinedSalt\\n    ) internal view returns (address) {\\n        bytes memory bytecode = _getCreationBytecode(implementation);\\n\\n        bytes32 bytecodeHash = keccak256(bytecode);\\n\\n        return\\n            address(\\n                uint160(\\n                    uint256(\\n                        keccak256(\\n                            abi.encodePacked(\\n                                bytes1(0xff),\\n                                address(this),\\n                                combinedSalt,\\n                                bytecodeHash\\n                            )\\n                        )\\n                    )\\n                )\\n            );\\n    }\\n}\\n\",\"keccak256\":\"0x69c8665384130ecd4fef1aec3dc7e371c649c3997b56eff259f04a6bebbac525\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"IERC6551Registry":{"abi":[{"inputs":[],"name":"AccountCreationFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"implementation","type":"address"},{"indexed":false,"internalType":"bytes32","name":"salt","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"chainId","type":"uint256"},{"indexed":true,"internalType":"address","name":"tokenContract","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC6551AccountCreated","type":"event"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"account","outputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"createAccount","outputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"errors":{"AccountCreationFailed()":[{"details":"The registry MUST revert with AccountCreationFailed error if the create2 operation fails."}]},"events":{"ERC6551AccountCreated(address,address,bytes32,uint256,address,uint256)":{"details":"The registry MUST emit the ERC6551AccountCreated event upon successful account creation."}},"kind":"dev","methods":{"account(address,bytes32,uint256,address,uint256)":{"details":"Returns the computed token bound account address for a non-fungible token.","returns":{"account":"The address of the token bound account"}},"createAccount(address,bytes32,uint256,address,uint256)":{"details":"Creates a token bound account for a non-fungible token. If account has already been created, returns the account address without calling create2. Emits ERC6551AccountCreated event.","returns":{"account":"The address of the token bound account"}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"account(address,bytes32,uint256,address,uint256)":"246a0021","createAccount(address,bytes32,uint256,address,uint256)":"8a54c52f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccountCreationFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC6551AccountCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"account\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"createAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccountCreationFailed()\":[{\"details\":\"The registry MUST revert with AccountCreationFailed error if the create2 operation fails.\"}]},\"events\":{\"ERC6551AccountCreated(address,address,bytes32,uint256,address,uint256)\":{\"details\":\"The registry MUST emit the ERC6551AccountCreated event upon successful account creation.\"}},\"kind\":\"dev\",\"methods\":{\"account(address,bytes32,uint256,address,uint256)\":{\"details\":\"Returns the computed token bound account address for a non-fungible token.\",\"returns\":{\"account\":\"The address of the token bound account\"}},\"createAccount(address,bytes32,uint256,address,uint256)\":{\"details\":\"Creates a token bound account for a non-fungible token. If account has already been created, returns the account address without calling create2. Emits ERC6551AccountCreated event.\",\"returns\":{\"account\":\"The address of the token bound account\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ERC6551Registry.sol\":\"IERC6551Registry\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/ERC6551Registry.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.4;\\n\\ninterface IERC6551Registry {\\n    /**\\n     * @dev The registry MUST emit the ERC6551AccountCreated event upon successful account creation.\\n     */\\n    event ERC6551AccountCreated(\\n        address account,\\n        address indexed implementation,\\n        bytes32 salt,\\n        uint256 chainId,\\n        address indexed tokenContract,\\n        uint256 indexed tokenId\\n    );\\n\\n    /**\\n     * @dev The registry MUST revert with AccountCreationFailed error if the create2 operation fails.\\n     */\\n    error AccountCreationFailed();\\n\\n    /**\\n     * @dev Creates a token bound account for a non-fungible token.\\n     *\\n     * If account has already been created, returns the account address without calling create2.\\n     *\\n     * Emits ERC6551AccountCreated event.\\n     *\\n     * @return account The address of the token bound account\\n     */\\n    function createAccount(\\n        address implementation,\\n        bytes32 salt,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) external returns (address account);\\n\\n    /**\\n     * @dev Returns the computed token bound account address for a non-fungible token.\\n     *\\n     * @return account The address of the token bound account\\n     */\\n    function account(\\n        address implementation,\\n        bytes32 salt,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) external view returns (address account);\\n}\\n\\n// Interface to call the initialize method on the account contract\\ninterface IERC6551AccountInitializable {\\n    function initialize(\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) external;\\n}\\n\\ncontract ERC6551Registry is IERC6551Registry {\\n    /**\\n     * @dev Creates an ERC6551 account\\n     */\\n    function createAccount(\\n        address implementation,\\n        bytes32 salt,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) external returns (address) {\\n        // Compute the account address\\n        bytes32 combinedSalt = _getCombinedSalt(\\n            salt,\\n            chainId,\\n            tokenContract,\\n            tokenId\\n        );\\n        address predictedAddress = _computeAccountAddress(\\n            implementation,\\n            combinedSalt\\n        );\\n\\n        // Check if the account already exists\\n        uint256 codeSize;\\n        assembly {\\n            codeSize := extcodesize(predictedAddress)\\n        }\\n\\n        // If account exists, return its address\\n        if (codeSize > 0) {\\n            return predictedAddress;\\n        }\\n\\n        // Create the ERC-1167 proxy to implementation\\n        bytes memory bytecode = _getCreationBytecode(implementation);\\n        address deployedAddress;\\n\\n        assembly {\\n            deployedAddress := create2(\\n                0, // No ETH sent\\n                add(bytecode, 32), // Skip the length field\\n                mload(bytecode), // Length of the bytecode\\n                combinedSalt\\n            )\\n        }\\n\\n        // Check if deployment was successful\\n        if (deployedAddress == address(0)) {\\n            revert AccountCreationFailed();\\n        }\\n\\n        // Initialize the account with NFT data\\n        IERC6551AccountInitializable(deployedAddress).initialize(\\n            chainId,\\n            tokenContract,\\n            tokenId\\n        );\\n\\n        // Emit account created event\\n        emit ERC6551AccountCreated(\\n            deployedAddress,\\n            implementation,\\n            salt,\\n            chainId,\\n            tokenContract,\\n            tokenId\\n        );\\n\\n        return deployedAddress;\\n    }\\n\\n    /**\\n     * @dev Returns the deterministic address for a TBA\\n     */\\n    function account(\\n        address implementation,\\n        bytes32 salt,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) public view returns (address) {\\n        bytes32 combinedSalt = _getCombinedSalt(\\n            salt,\\n            chainId,\\n            tokenContract,\\n            tokenId\\n        );\\n        return _computeAccountAddress(implementation, combinedSalt);\\n    }\\n\\n    /**\\n     * @dev Combines all parameters into a single salt\\n     */\\n    function _getCombinedSalt(\\n        bytes32 salt,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId\\n    ) internal pure returns (bytes32) {\\n        return keccak256(abi.encode(salt, chainId, tokenContract, tokenId));\\n    }\\n\\n    /**\\n     * @dev Returns the creation bytecode for a minimal proxy\\n     */\\n    function _getCreationBytecode(\\n        address implementation\\n    ) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                // ERC-1167 minimal proxy bytecode\\n                hex\\\"3d602d80600a3d3981f3363d3d373d3d3d363d73\\\",\\n                implementation,\\n                hex\\\"5af43d82803e903d91602b57fd5bf3\\\"\\n            );\\n    }\\n\\n    /**\\n     * @dev Computes the account address using CREATE2\\n     */\\n    function _computeAccountAddress(\\n        address implementation,\\n        bytes32 combinedSalt\\n    ) internal view returns (address) {\\n        bytes memory bytecode = _getCreationBytecode(implementation);\\n\\n        bytes32 bytecodeHash = keccak256(bytecode);\\n\\n        return\\n            address(\\n                uint160(\\n                    uint256(\\n                        keccak256(\\n                            abi.encodePacked(\\n                                bytes1(0xff),\\n                                address(this),\\n                                combinedSalt,\\n                                bytecodeHash\\n                            )\\n                        )\\n                    )\\n                )\\n            );\\n    }\\n}\\n\",\"keccak256\":\"0x69c8665384130ecd4fef1aec3dc7e371c649c3997b56eff259f04a6bebbac525\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/IPNFT.sol":{"IPNFT":{"abi":[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"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":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"enum IPNFT.IPType","name":"ipType","type":"uint8"},{"indexed":false,"internalType":"string","name":"title","type":"string"}],"name":"IPNFTMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"MetadataUpdate","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getIPInfo","outputs":[{"components":[{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"enum IPNFT.IPType","name":"ipType","type":"uint8"},{"internalType":"uint256","name":"createdAt","type":"uint256"}],"internalType":"struct IPNFT.IPInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"uri","type":"string"},{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"description","type":"string"},{"internalType":"enum IPNFT.IPType","name":"ipType","type":"uint8"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"This contract is used to create and manage intellectual property NFTs","errors":{"ERC721IncorrectOwner(address,uint256,address)":[{"details":"Indicates an error related to the ownership over a particular token. Used in transfers.","params":{"owner":"Address of the current owner of a token.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC721InsufficientApproval(address,uint256)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","tokenId":"Identifier number of a token."}}],"ERC721InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC721InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC721InvalidOwner(address)":[{"details":"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.","params":{"owner":"Address of the current owner of a token."}}],"ERC721InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC721InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC721NonexistentToken(uint256)":[{"details":"Indicates a `tokenId` whose `owner` is the zero address.","params":{"tokenId":"Identifier number of a token."}}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"BatchMetadataUpdate(uint256,uint256)":{"details":"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs."},"MetadataUpdate(uint256)":{"details":"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"getIPInfo(uint256)":{"details":"Gets the intellectual property information","params":{"tokenId":"Token ID"}},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"mint(address,string,string,string,uint8)":{"details":"Mints a new intellectual property NFT","params":{"description":"The IP description","ipType":"The IP type","title":"The IP title","to":"The receiver address of the token","uri":"The token metadata URI"},"returns":{"_0":"The newly minted token ID"}},"name()":{"details":"See {IERC721Metadata-name}."},"owner()":{"details":"Returns the address of the current owner."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"renounceOwnership()":{"details":"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."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}"},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenOfOwnerByIndex(address,uint256)":{"details":"Returns the token ID at a given index of an owner's token list","params":{"index":"The index in the owner's token list","owner":"The owner address"}},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"tokensOfOwner(address)":{"details":"Gets all tokens owned by a specific address","params":{"owner":"The owner address"}},"totalSupply()":{"details":"Gets the total number of minted NFTs"},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"title":"IPNFT","version":1},"evm":{"bytecode":{"functionDebugData":{"@_12786":{"entryPoint":null,"id":12786,"parameterSlots":1,"returnSlots":0},"@_3883":{"entryPoint":null,"id":3883,"parameterSlots":1,"returnSlots":0},"@_5402":{"entryPoint":null,"id":5402,"parameterSlots":2,"returnSlots":0},"@_transferOwnership_3979":{"entryPoint":225,"id":3979,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":307,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":435,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":514,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":377,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":355,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:3155:66","nodeType":"YulBlock","src":"0:3155:66","statements":[{"nativeSrc":"6:3:66","nodeType":"YulBlock","src":"6:3:66","statements":[]},{"body":{"nativeSrc":"95:209:66","nodeType":"YulBlock","src":"95:209:66","statements":[{"body":{"nativeSrc":"141:16:66","nodeType":"YulBlock","src":"141:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"150:1:66","nodeType":"YulLiteral","src":"150:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"153:1:66","nodeType":"YulLiteral","src":"153:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"143:6:66","nodeType":"YulIdentifier","src":"143:6:66"},"nativeSrc":"143:12:66","nodeType":"YulFunctionCall","src":"143:12:66"},"nativeSrc":"143:12:66","nodeType":"YulExpressionStatement","src":"143:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"116:7:66","nodeType":"YulIdentifier","src":"116:7:66"},{"name":"headStart","nativeSrc":"125:9:66","nodeType":"YulIdentifier","src":"125:9:66"}],"functionName":{"name":"sub","nativeSrc":"112:3:66","nodeType":"YulIdentifier","src":"112:3:66"},"nativeSrc":"112:23:66","nodeType":"YulFunctionCall","src":"112:23:66"},{"kind":"number","nativeSrc":"137:2:66","nodeType":"YulLiteral","src":"137:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"108:3:66","nodeType":"YulIdentifier","src":"108:3:66"},"nativeSrc":"108:32:66","nodeType":"YulFunctionCall","src":"108:32:66"},"nativeSrc":"105:52:66","nodeType":"YulIf","src":"105:52:66"},{"nativeSrc":"166:29:66","nodeType":"YulVariableDeclaration","src":"166:29:66","value":{"arguments":[{"name":"headStart","nativeSrc":"185:9:66","nodeType":"YulIdentifier","src":"185:9:66"}],"functionName":{"name":"mload","nativeSrc":"179:5:66","nodeType":"YulIdentifier","src":"179:5:66"},"nativeSrc":"179:16:66","nodeType":"YulFunctionCall","src":"179:16:66"},"variables":[{"name":"value","nativeSrc":"170:5:66","nodeType":"YulTypedName","src":"170:5:66","type":""}]},{"body":{"nativeSrc":"258:16:66","nodeType":"YulBlock","src":"258:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"267:1:66","nodeType":"YulLiteral","src":"267:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"270:1:66","nodeType":"YulLiteral","src":"270:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"260:6:66","nodeType":"YulIdentifier","src":"260:6:66"},"nativeSrc":"260:12:66","nodeType":"YulFunctionCall","src":"260:12:66"},"nativeSrc":"260:12:66","nodeType":"YulExpressionStatement","src":"260:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"217:5:66","nodeType":"YulIdentifier","src":"217:5:66"},{"arguments":[{"name":"value","nativeSrc":"228:5:66","nodeType":"YulIdentifier","src":"228:5:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"243:3:66","nodeType":"YulLiteral","src":"243:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"248:1:66","nodeType":"YulLiteral","src":"248:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"239:3:66","nodeType":"YulIdentifier","src":"239:3:66"},"nativeSrc":"239:11:66","nodeType":"YulFunctionCall","src":"239:11:66"},{"kind":"number","nativeSrc":"252:1:66","nodeType":"YulLiteral","src":"252:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"235:3:66","nodeType":"YulIdentifier","src":"235:3:66"},"nativeSrc":"235:19:66","nodeType":"YulFunctionCall","src":"235:19:66"}],"functionName":{"name":"and","nativeSrc":"224:3:66","nodeType":"YulIdentifier","src":"224:3:66"},"nativeSrc":"224:31:66","nodeType":"YulFunctionCall","src":"224:31:66"}],"functionName":{"name":"eq","nativeSrc":"214:2:66","nodeType":"YulIdentifier","src":"214:2:66"},"nativeSrc":"214:42:66","nodeType":"YulFunctionCall","src":"214:42:66"}],"functionName":{"name":"iszero","nativeSrc":"207:6:66","nodeType":"YulIdentifier","src":"207:6:66"},"nativeSrc":"207:50:66","nodeType":"YulFunctionCall","src":"207:50:66"},"nativeSrc":"204:70:66","nodeType":"YulIf","src":"204:70:66"},{"nativeSrc":"283:15:66","nodeType":"YulAssignment","src":"283:15:66","value":{"name":"value","nativeSrc":"293:5:66","nodeType":"YulIdentifier","src":"293:5:66"},"variableNames":[{"name":"value0","nativeSrc":"283:6:66","nodeType":"YulIdentifier","src":"283:6:66"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"14:290:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"61:9:66","nodeType":"YulTypedName","src":"61:9:66","type":""},{"name":"dataEnd","nativeSrc":"72:7:66","nodeType":"YulTypedName","src":"72:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"84:6:66","nodeType":"YulTypedName","src":"84:6:66","type":""}],"src":"14:290:66"},{"body":{"nativeSrc":"341:95:66","nodeType":"YulBlock","src":"341:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"358:1:66","nodeType":"YulLiteral","src":"358:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"365:3:66","nodeType":"YulLiteral","src":"365:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"370:10:66","nodeType":"YulLiteral","src":"370:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"361:3:66","nodeType":"YulIdentifier","src":"361:3:66"},"nativeSrc":"361:20:66","nodeType":"YulFunctionCall","src":"361:20:66"}],"functionName":{"name":"mstore","nativeSrc":"351:6:66","nodeType":"YulIdentifier","src":"351:6:66"},"nativeSrc":"351:31:66","nodeType":"YulFunctionCall","src":"351:31:66"},"nativeSrc":"351:31:66","nodeType":"YulExpressionStatement","src":"351:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"398:1:66","nodeType":"YulLiteral","src":"398:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"401:4:66","nodeType":"YulLiteral","src":"401:4:66","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"391:6:66","nodeType":"YulIdentifier","src":"391:6:66"},"nativeSrc":"391:15:66","nodeType":"YulFunctionCall","src":"391:15:66"},"nativeSrc":"391:15:66","nodeType":"YulExpressionStatement","src":"391:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"422:1:66","nodeType":"YulLiteral","src":"422:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"425:4:66","nodeType":"YulLiteral","src":"425:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"415:6:66","nodeType":"YulIdentifier","src":"415:6:66"},"nativeSrc":"415:15:66","nodeType":"YulFunctionCall","src":"415:15:66"},"nativeSrc":"415:15:66","nodeType":"YulExpressionStatement","src":"415:15:66"}]},"name":"panic_error_0x41","nativeSrc":"309:127:66","nodeType":"YulFunctionDefinition","src":"309:127:66"},{"body":{"nativeSrc":"496:325:66","nodeType":"YulBlock","src":"496:325:66","statements":[{"nativeSrc":"506:22:66","nodeType":"YulAssignment","src":"506:22:66","value":{"arguments":[{"kind":"number","nativeSrc":"520:1:66","nodeType":"YulLiteral","src":"520:1:66","type":"","value":"1"},{"name":"data","nativeSrc":"523:4:66","nodeType":"YulIdentifier","src":"523:4:66"}],"functionName":{"name":"shr","nativeSrc":"516:3:66","nodeType":"YulIdentifier","src":"516:3:66"},"nativeSrc":"516:12:66","nodeType":"YulFunctionCall","src":"516:12:66"},"variableNames":[{"name":"length","nativeSrc":"506:6:66","nodeType":"YulIdentifier","src":"506:6:66"}]},{"nativeSrc":"537:38:66","nodeType":"YulVariableDeclaration","src":"537:38:66","value":{"arguments":[{"name":"data","nativeSrc":"567:4:66","nodeType":"YulIdentifier","src":"567:4:66"},{"kind":"number","nativeSrc":"573:1:66","nodeType":"YulLiteral","src":"573:1:66","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"563:3:66","nodeType":"YulIdentifier","src":"563:3:66"},"nativeSrc":"563:12:66","nodeType":"YulFunctionCall","src":"563:12:66"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"541:18:66","nodeType":"YulTypedName","src":"541:18:66","type":""}]},{"body":{"nativeSrc":"614:31:66","nodeType":"YulBlock","src":"614:31:66","statements":[{"nativeSrc":"616:27:66","nodeType":"YulAssignment","src":"616:27:66","value":{"arguments":[{"name":"length","nativeSrc":"630:6:66","nodeType":"YulIdentifier","src":"630:6:66"},{"kind":"number","nativeSrc":"638:4:66","nodeType":"YulLiteral","src":"638:4:66","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"626:3:66","nodeType":"YulIdentifier","src":"626:3:66"},"nativeSrc":"626:17:66","nodeType":"YulFunctionCall","src":"626:17:66"},"variableNames":[{"name":"length","nativeSrc":"616:6:66","nodeType":"YulIdentifier","src":"616:6:66"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"594:18:66","nodeType":"YulIdentifier","src":"594:18:66"}],"functionName":{"name":"iszero","nativeSrc":"587:6:66","nodeType":"YulIdentifier","src":"587:6:66"},"nativeSrc":"587:26:66","nodeType":"YulFunctionCall","src":"587:26:66"},"nativeSrc":"584:61:66","nodeType":"YulIf","src":"584:61:66"},{"body":{"nativeSrc":"704:111:66","nodeType":"YulBlock","src":"704:111:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"725:1:66","nodeType":"YulLiteral","src":"725:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"732:3:66","nodeType":"YulLiteral","src":"732:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"737:10:66","nodeType":"YulLiteral","src":"737:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"728:3:66","nodeType":"YulIdentifier","src":"728:3:66"},"nativeSrc":"728:20:66","nodeType":"YulFunctionCall","src":"728:20:66"}],"functionName":{"name":"mstore","nativeSrc":"718:6:66","nodeType":"YulIdentifier","src":"718:6:66"},"nativeSrc":"718:31:66","nodeType":"YulFunctionCall","src":"718:31:66"},"nativeSrc":"718:31:66","nodeType":"YulExpressionStatement","src":"718:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"769:1:66","nodeType":"YulLiteral","src":"769:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"772:4:66","nodeType":"YulLiteral","src":"772:4:66","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"762:6:66","nodeType":"YulIdentifier","src":"762:6:66"},"nativeSrc":"762:15:66","nodeType":"YulFunctionCall","src":"762:15:66"},"nativeSrc":"762:15:66","nodeType":"YulExpressionStatement","src":"762:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"797:1:66","nodeType":"YulLiteral","src":"797:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"800:4:66","nodeType":"YulLiteral","src":"800:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"790:6:66","nodeType":"YulIdentifier","src":"790:6:66"},"nativeSrc":"790:15:66","nodeType":"YulFunctionCall","src":"790:15:66"},"nativeSrc":"790:15:66","nodeType":"YulExpressionStatement","src":"790:15:66"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"660:18:66","nodeType":"YulIdentifier","src":"660:18:66"},{"arguments":[{"name":"length","nativeSrc":"683:6:66","nodeType":"YulIdentifier","src":"683:6:66"},{"kind":"number","nativeSrc":"691:2:66","nodeType":"YulLiteral","src":"691:2:66","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"680:2:66","nodeType":"YulIdentifier","src":"680:2:66"},"nativeSrc":"680:14:66","nodeType":"YulFunctionCall","src":"680:14:66"}],"functionName":{"name":"eq","nativeSrc":"657:2:66","nodeType":"YulIdentifier","src":"657:2:66"},"nativeSrc":"657:38:66","nodeType":"YulFunctionCall","src":"657:38:66"},"nativeSrc":"654:161:66","nodeType":"YulIf","src":"654:161:66"}]},"name":"extract_byte_array_length","nativeSrc":"441:380:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"476:4:66","nodeType":"YulTypedName","src":"476:4:66","type":""}],"returnVariables":[{"name":"length","nativeSrc":"485:6:66","nodeType":"YulTypedName","src":"485:6:66","type":""}],"src":"441:380:66"},{"body":{"nativeSrc":"882:65:66","nodeType":"YulBlock","src":"882:65:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"899:1:66","nodeType":"YulLiteral","src":"899:1:66","type":"","value":"0"},{"name":"ptr","nativeSrc":"902:3:66","nodeType":"YulIdentifier","src":"902:3:66"}],"functionName":{"name":"mstore","nativeSrc":"892:6:66","nodeType":"YulIdentifier","src":"892:6:66"},"nativeSrc":"892:14:66","nodeType":"YulFunctionCall","src":"892:14:66"},"nativeSrc":"892:14:66","nodeType":"YulExpressionStatement","src":"892:14:66"},{"nativeSrc":"915:26:66","nodeType":"YulAssignment","src":"915:26:66","value":{"arguments":[{"kind":"number","nativeSrc":"933:1:66","nodeType":"YulLiteral","src":"933:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"936:4:66","nodeType":"YulLiteral","src":"936:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"923:9:66","nodeType":"YulIdentifier","src":"923:9:66"},"nativeSrc":"923:18:66","nodeType":"YulFunctionCall","src":"923:18:66"},"variableNames":[{"name":"data","nativeSrc":"915:4:66","nodeType":"YulIdentifier","src":"915:4:66"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"826:121:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"865:3:66","nodeType":"YulTypedName","src":"865:3:66","type":""}],"returnVariables":[{"name":"data","nativeSrc":"873:4:66","nodeType":"YulTypedName","src":"873:4:66","type":""}],"src":"826:121:66"},{"body":{"nativeSrc":"1033:437:66","nodeType":"YulBlock","src":"1033:437:66","statements":[{"body":{"nativeSrc":"1066:398:66","nodeType":"YulBlock","src":"1066:398:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1087:1:66","nodeType":"YulLiteral","src":"1087:1:66","type":"","value":"0"},{"name":"array","nativeSrc":"1090:5:66","nodeType":"YulIdentifier","src":"1090:5:66"}],"functionName":{"name":"mstore","nativeSrc":"1080:6:66","nodeType":"YulIdentifier","src":"1080:6:66"},"nativeSrc":"1080:16:66","nodeType":"YulFunctionCall","src":"1080:16:66"},"nativeSrc":"1080:16:66","nodeType":"YulExpressionStatement","src":"1080:16:66"},{"nativeSrc":"1109:30:66","nodeType":"YulVariableDeclaration","src":"1109:30:66","value":{"arguments":[{"kind":"number","nativeSrc":"1131:1:66","nodeType":"YulLiteral","src":"1131:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1134:4:66","nodeType":"YulLiteral","src":"1134:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"1121:9:66","nodeType":"YulIdentifier","src":"1121:9:66"},"nativeSrc":"1121:18:66","nodeType":"YulFunctionCall","src":"1121:18:66"},"variables":[{"name":"data","nativeSrc":"1113:4:66","nodeType":"YulTypedName","src":"1113:4:66","type":""}]},{"nativeSrc":"1152:57:66","nodeType":"YulVariableDeclaration","src":"1152:57:66","value":{"arguments":[{"name":"data","nativeSrc":"1175:4:66","nodeType":"YulIdentifier","src":"1175:4:66"},{"arguments":[{"kind":"number","nativeSrc":"1185:1:66","nodeType":"YulLiteral","src":"1185:1:66","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"1192:10:66","nodeType":"YulIdentifier","src":"1192:10:66"},{"kind":"number","nativeSrc":"1204:2:66","nodeType":"YulLiteral","src":"1204:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1188:3:66","nodeType":"YulIdentifier","src":"1188:3:66"},"nativeSrc":"1188:19:66","nodeType":"YulFunctionCall","src":"1188:19:66"}],"functionName":{"name":"shr","nativeSrc":"1181:3:66","nodeType":"YulIdentifier","src":"1181:3:66"},"nativeSrc":"1181:27:66","nodeType":"YulFunctionCall","src":"1181:27:66"}],"functionName":{"name":"add","nativeSrc":"1171:3:66","nodeType":"YulIdentifier","src":"1171:3:66"},"nativeSrc":"1171:38:66","nodeType":"YulFunctionCall","src":"1171:38:66"},"variables":[{"name":"deleteStart","nativeSrc":"1156:11:66","nodeType":"YulTypedName","src":"1156:11:66","type":""}]},{"body":{"nativeSrc":"1246:23:66","nodeType":"YulBlock","src":"1246:23:66","statements":[{"nativeSrc":"1248:19:66","nodeType":"YulAssignment","src":"1248:19:66","value":{"name":"data","nativeSrc":"1263:4:66","nodeType":"YulIdentifier","src":"1263:4:66"},"variableNames":[{"name":"deleteStart","nativeSrc":"1248:11:66","nodeType":"YulIdentifier","src":"1248:11:66"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"1228:10:66","nodeType":"YulIdentifier","src":"1228:10:66"},{"kind":"number","nativeSrc":"1240:4:66","nodeType":"YulLiteral","src":"1240:4:66","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"1225:2:66","nodeType":"YulIdentifier","src":"1225:2:66"},"nativeSrc":"1225:20:66","nodeType":"YulFunctionCall","src":"1225:20:66"},"nativeSrc":"1222:47:66","nodeType":"YulIf","src":"1222:47:66"},{"nativeSrc":"1282:41:66","nodeType":"YulVariableDeclaration","src":"1282:41:66","value":{"arguments":[{"name":"data","nativeSrc":"1296:4:66","nodeType":"YulIdentifier","src":"1296:4:66"},{"arguments":[{"kind":"number","nativeSrc":"1306:1:66","nodeType":"YulLiteral","src":"1306:1:66","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"1313:3:66","nodeType":"YulIdentifier","src":"1313:3:66"},{"kind":"number","nativeSrc":"1318:2:66","nodeType":"YulLiteral","src":"1318:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1309:3:66","nodeType":"YulIdentifier","src":"1309:3:66"},"nativeSrc":"1309:12:66","nodeType":"YulFunctionCall","src":"1309:12:66"}],"functionName":{"name":"shr","nativeSrc":"1302:3:66","nodeType":"YulIdentifier","src":"1302:3:66"},"nativeSrc":"1302:20:66","nodeType":"YulFunctionCall","src":"1302:20:66"}],"functionName":{"name":"add","nativeSrc":"1292:3:66","nodeType":"YulIdentifier","src":"1292:3:66"},"nativeSrc":"1292:31:66","nodeType":"YulFunctionCall","src":"1292:31:66"},"variables":[{"name":"_1","nativeSrc":"1286:2:66","nodeType":"YulTypedName","src":"1286:2:66","type":""}]},{"nativeSrc":"1336:24:66","nodeType":"YulVariableDeclaration","src":"1336:24:66","value":{"name":"deleteStart","nativeSrc":"1349:11:66","nodeType":"YulIdentifier","src":"1349:11:66"},"variables":[{"name":"start","nativeSrc":"1340:5:66","nodeType":"YulTypedName","src":"1340:5:66","type":""}]},{"body":{"nativeSrc":"1434:20:66","nodeType":"YulBlock","src":"1434:20:66","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"1443:5:66","nodeType":"YulIdentifier","src":"1443:5:66"},{"kind":"number","nativeSrc":"1450:1:66","nodeType":"YulLiteral","src":"1450:1:66","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"1436:6:66","nodeType":"YulIdentifier","src":"1436:6:66"},"nativeSrc":"1436:16:66","nodeType":"YulFunctionCall","src":"1436:16:66"},"nativeSrc":"1436:16:66","nodeType":"YulExpressionStatement","src":"1436:16:66"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"1384:5:66","nodeType":"YulIdentifier","src":"1384:5:66"},{"name":"_1","nativeSrc":"1391:2:66","nodeType":"YulIdentifier","src":"1391:2:66"}],"functionName":{"name":"lt","nativeSrc":"1381:2:66","nodeType":"YulIdentifier","src":"1381:2:66"},"nativeSrc":"1381:13:66","nodeType":"YulFunctionCall","src":"1381:13:66"},"nativeSrc":"1373:81:66","nodeType":"YulForLoop","post":{"nativeSrc":"1395:26:66","nodeType":"YulBlock","src":"1395:26:66","statements":[{"nativeSrc":"1397:22:66","nodeType":"YulAssignment","src":"1397:22:66","value":{"arguments":[{"name":"start","nativeSrc":"1410:5:66","nodeType":"YulIdentifier","src":"1410:5:66"},{"kind":"number","nativeSrc":"1417:1:66","nodeType":"YulLiteral","src":"1417:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"1406:3:66","nodeType":"YulIdentifier","src":"1406:3:66"},"nativeSrc":"1406:13:66","nodeType":"YulFunctionCall","src":"1406:13:66"},"variableNames":[{"name":"start","nativeSrc":"1397:5:66","nodeType":"YulIdentifier","src":"1397:5:66"}]}]},"pre":{"nativeSrc":"1377:3:66","nodeType":"YulBlock","src":"1377:3:66","statements":[]},"src":"1373:81:66"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"1049:3:66","nodeType":"YulIdentifier","src":"1049:3:66"},{"kind":"number","nativeSrc":"1054:2:66","nodeType":"YulLiteral","src":"1054:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"1046:2:66","nodeType":"YulIdentifier","src":"1046:2:66"},"nativeSrc":"1046:11:66","nodeType":"YulFunctionCall","src":"1046:11:66"},"nativeSrc":"1043:421:66","nodeType":"YulIf","src":"1043:421:66"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"952:518:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"1005:5:66","nodeType":"YulTypedName","src":"1005:5:66","type":""},{"name":"len","nativeSrc":"1012:3:66","nodeType":"YulTypedName","src":"1012:3:66","type":""},{"name":"startIndex","nativeSrc":"1017:10:66","nodeType":"YulTypedName","src":"1017:10:66","type":""}],"src":"952:518:66"},{"body":{"nativeSrc":"1560:81:66","nodeType":"YulBlock","src":"1560:81:66","statements":[{"nativeSrc":"1570:65:66","nodeType":"YulAssignment","src":"1570:65:66","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"1585:4:66","nodeType":"YulIdentifier","src":"1585:4:66"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1603:1:66","nodeType":"YulLiteral","src":"1603:1:66","type":"","value":"3"},{"name":"len","nativeSrc":"1606:3:66","nodeType":"YulIdentifier","src":"1606:3:66"}],"functionName":{"name":"shl","nativeSrc":"1599:3:66","nodeType":"YulIdentifier","src":"1599:3:66"},"nativeSrc":"1599:11:66","nodeType":"YulFunctionCall","src":"1599:11:66"},{"arguments":[{"kind":"number","nativeSrc":"1616:1:66","nodeType":"YulLiteral","src":"1616:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"1612:3:66","nodeType":"YulIdentifier","src":"1612:3:66"},"nativeSrc":"1612:6:66","nodeType":"YulFunctionCall","src":"1612:6:66"}],"functionName":{"name":"shr","nativeSrc":"1595:3:66","nodeType":"YulIdentifier","src":"1595:3:66"},"nativeSrc":"1595:24:66","nodeType":"YulFunctionCall","src":"1595:24:66"}],"functionName":{"name":"not","nativeSrc":"1591:3:66","nodeType":"YulIdentifier","src":"1591:3:66"},"nativeSrc":"1591:29:66","nodeType":"YulFunctionCall","src":"1591:29:66"}],"functionName":{"name":"and","nativeSrc":"1581:3:66","nodeType":"YulIdentifier","src":"1581:3:66"},"nativeSrc":"1581:40:66","nodeType":"YulFunctionCall","src":"1581:40:66"},{"arguments":[{"kind":"number","nativeSrc":"1627:1:66","nodeType":"YulLiteral","src":"1627:1:66","type":"","value":"1"},{"name":"len","nativeSrc":"1630:3:66","nodeType":"YulIdentifier","src":"1630:3:66"}],"functionName":{"name":"shl","nativeSrc":"1623:3:66","nodeType":"YulIdentifier","src":"1623:3:66"},"nativeSrc":"1623:11:66","nodeType":"YulFunctionCall","src":"1623:11:66"}],"functionName":{"name":"or","nativeSrc":"1578:2:66","nodeType":"YulIdentifier","src":"1578:2:66"},"nativeSrc":"1578:57:66","nodeType":"YulFunctionCall","src":"1578:57:66"},"variableNames":[{"name":"used","nativeSrc":"1570:4:66","nodeType":"YulIdentifier","src":"1570:4:66"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"1475:166:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"1537:4:66","nodeType":"YulTypedName","src":"1537:4:66","type":""},{"name":"len","nativeSrc":"1543:3:66","nodeType":"YulTypedName","src":"1543:3:66","type":""}],"returnVariables":[{"name":"used","nativeSrc":"1551:4:66","nodeType":"YulTypedName","src":"1551:4:66","type":""}],"src":"1475:166:66"},{"body":{"nativeSrc":"1742:1203:66","nodeType":"YulBlock","src":"1742:1203:66","statements":[{"nativeSrc":"1752:24:66","nodeType":"YulVariableDeclaration","src":"1752:24:66","value":{"arguments":[{"name":"src","nativeSrc":"1772:3:66","nodeType":"YulIdentifier","src":"1772:3:66"}],"functionName":{"name":"mload","nativeSrc":"1766:5:66","nodeType":"YulIdentifier","src":"1766:5:66"},"nativeSrc":"1766:10:66","nodeType":"YulFunctionCall","src":"1766:10:66"},"variables":[{"name":"newLen","nativeSrc":"1756:6:66","nodeType":"YulTypedName","src":"1756:6:66","type":""}]},{"body":{"nativeSrc":"1819:22:66","nodeType":"YulBlock","src":"1819:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1821:16:66","nodeType":"YulIdentifier","src":"1821:16:66"},"nativeSrc":"1821:18:66","nodeType":"YulFunctionCall","src":"1821:18:66"},"nativeSrc":"1821:18:66","nodeType":"YulExpressionStatement","src":"1821:18:66"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"1791:6:66","nodeType":"YulIdentifier","src":"1791:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1807:2:66","nodeType":"YulLiteral","src":"1807:2:66","type":"","value":"64"},{"kind":"number","nativeSrc":"1811:1:66","nodeType":"YulLiteral","src":"1811:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1803:3:66","nodeType":"YulIdentifier","src":"1803:3:66"},"nativeSrc":"1803:10:66","nodeType":"YulFunctionCall","src":"1803:10:66"},{"kind":"number","nativeSrc":"1815:1:66","nodeType":"YulLiteral","src":"1815:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1799:3:66","nodeType":"YulIdentifier","src":"1799:3:66"},"nativeSrc":"1799:18:66","nodeType":"YulFunctionCall","src":"1799:18:66"}],"functionName":{"name":"gt","nativeSrc":"1788:2:66","nodeType":"YulIdentifier","src":"1788:2:66"},"nativeSrc":"1788:30:66","nodeType":"YulFunctionCall","src":"1788:30:66"},"nativeSrc":"1785:56:66","nodeType":"YulIf","src":"1785:56:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"1894:4:66","nodeType":"YulIdentifier","src":"1894:4:66"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"1932:4:66","nodeType":"YulIdentifier","src":"1932:4:66"}],"functionName":{"name":"sload","nativeSrc":"1926:5:66","nodeType":"YulIdentifier","src":"1926:5:66"},"nativeSrc":"1926:11:66","nodeType":"YulFunctionCall","src":"1926:11:66"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"1900:25:66","nodeType":"YulIdentifier","src":"1900:25:66"},"nativeSrc":"1900:38:66","nodeType":"YulFunctionCall","src":"1900:38:66"},{"name":"newLen","nativeSrc":"1940:6:66","nodeType":"YulIdentifier","src":"1940:6:66"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"1850:43:66","nodeType":"YulIdentifier","src":"1850:43:66"},"nativeSrc":"1850:97:66","nodeType":"YulFunctionCall","src":"1850:97:66"},"nativeSrc":"1850:97:66","nodeType":"YulExpressionStatement","src":"1850:97:66"},{"nativeSrc":"1956:18:66","nodeType":"YulVariableDeclaration","src":"1956:18:66","value":{"kind":"number","nativeSrc":"1973:1:66","nodeType":"YulLiteral","src":"1973:1:66","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"1960:9:66","nodeType":"YulTypedName","src":"1960:9:66","type":""}]},{"nativeSrc":"1983:17:66","nodeType":"YulAssignment","src":"1983:17:66","value":{"kind":"number","nativeSrc":"1996:4:66","nodeType":"YulLiteral","src":"1996:4:66","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"1983:9:66","nodeType":"YulIdentifier","src":"1983:9:66"}]},{"cases":[{"body":{"nativeSrc":"2046:642:66","nodeType":"YulBlock","src":"2046:642:66","statements":[{"nativeSrc":"2060:35:66","nodeType":"YulVariableDeclaration","src":"2060:35:66","value":{"arguments":[{"name":"newLen","nativeSrc":"2079:6:66","nodeType":"YulIdentifier","src":"2079:6:66"},{"arguments":[{"kind":"number","nativeSrc":"2091:2:66","nodeType":"YulLiteral","src":"2091:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2087:3:66","nodeType":"YulIdentifier","src":"2087:3:66"},"nativeSrc":"2087:7:66","nodeType":"YulFunctionCall","src":"2087:7:66"}],"functionName":{"name":"and","nativeSrc":"2075:3:66","nodeType":"YulIdentifier","src":"2075:3:66"},"nativeSrc":"2075:20:66","nodeType":"YulFunctionCall","src":"2075:20:66"},"variables":[{"name":"loopEnd","nativeSrc":"2064:7:66","nodeType":"YulTypedName","src":"2064:7:66","type":""}]},{"nativeSrc":"2108:49:66","nodeType":"YulVariableDeclaration","src":"2108:49:66","value":{"arguments":[{"name":"slot","nativeSrc":"2152:4:66","nodeType":"YulIdentifier","src":"2152:4:66"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"2122:29:66","nodeType":"YulIdentifier","src":"2122:29:66"},"nativeSrc":"2122:35:66","nodeType":"YulFunctionCall","src":"2122:35:66"},"variables":[{"name":"dstPtr","nativeSrc":"2112:6:66","nodeType":"YulTypedName","src":"2112:6:66","type":""}]},{"nativeSrc":"2170:10:66","nodeType":"YulVariableDeclaration","src":"2170:10:66","value":{"kind":"number","nativeSrc":"2179:1:66","nodeType":"YulLiteral","src":"2179:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"2174:1:66","nodeType":"YulTypedName","src":"2174:1:66","type":""}]},{"body":{"nativeSrc":"2250:165:66","nodeType":"YulBlock","src":"2250:165:66","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"2275:6:66","nodeType":"YulIdentifier","src":"2275:6:66"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"2293:3:66","nodeType":"YulIdentifier","src":"2293:3:66"},{"name":"srcOffset","nativeSrc":"2298:9:66","nodeType":"YulIdentifier","src":"2298:9:66"}],"functionName":{"name":"add","nativeSrc":"2289:3:66","nodeType":"YulIdentifier","src":"2289:3:66"},"nativeSrc":"2289:19:66","nodeType":"YulFunctionCall","src":"2289:19:66"}],"functionName":{"name":"mload","nativeSrc":"2283:5:66","nodeType":"YulIdentifier","src":"2283:5:66"},"nativeSrc":"2283:26:66","nodeType":"YulFunctionCall","src":"2283:26:66"}],"functionName":{"name":"sstore","nativeSrc":"2268:6:66","nodeType":"YulIdentifier","src":"2268:6:66"},"nativeSrc":"2268:42:66","nodeType":"YulFunctionCall","src":"2268:42:66"},"nativeSrc":"2268:42:66","nodeType":"YulExpressionStatement","src":"2268:42:66"},{"nativeSrc":"2327:24:66","nodeType":"YulAssignment","src":"2327:24:66","value":{"arguments":[{"name":"dstPtr","nativeSrc":"2341:6:66","nodeType":"YulIdentifier","src":"2341:6:66"},{"kind":"number","nativeSrc":"2349:1:66","nodeType":"YulLiteral","src":"2349:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2337:3:66","nodeType":"YulIdentifier","src":"2337:3:66"},"nativeSrc":"2337:14:66","nodeType":"YulFunctionCall","src":"2337:14:66"},"variableNames":[{"name":"dstPtr","nativeSrc":"2327:6:66","nodeType":"YulIdentifier","src":"2327:6:66"}]},{"nativeSrc":"2368:33:66","nodeType":"YulAssignment","src":"2368:33:66","value":{"arguments":[{"name":"srcOffset","nativeSrc":"2385:9:66","nodeType":"YulIdentifier","src":"2385:9:66"},{"kind":"number","nativeSrc":"2396:4:66","nodeType":"YulLiteral","src":"2396:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2381:3:66","nodeType":"YulIdentifier","src":"2381:3:66"},"nativeSrc":"2381:20:66","nodeType":"YulFunctionCall","src":"2381:20:66"},"variableNames":[{"name":"srcOffset","nativeSrc":"2368:9:66","nodeType":"YulIdentifier","src":"2368:9:66"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"2204:1:66","nodeType":"YulIdentifier","src":"2204:1:66"},{"name":"loopEnd","nativeSrc":"2207:7:66","nodeType":"YulIdentifier","src":"2207:7:66"}],"functionName":{"name":"lt","nativeSrc":"2201:2:66","nodeType":"YulIdentifier","src":"2201:2:66"},"nativeSrc":"2201:14:66","nodeType":"YulFunctionCall","src":"2201:14:66"},"nativeSrc":"2193:222:66","nodeType":"YulForLoop","post":{"nativeSrc":"2216:21:66","nodeType":"YulBlock","src":"2216:21:66","statements":[{"nativeSrc":"2218:17:66","nodeType":"YulAssignment","src":"2218:17:66","value":{"arguments":[{"name":"i","nativeSrc":"2227:1:66","nodeType":"YulIdentifier","src":"2227:1:66"},{"kind":"number","nativeSrc":"2230:4:66","nodeType":"YulLiteral","src":"2230:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2223:3:66","nodeType":"YulIdentifier","src":"2223:3:66"},"nativeSrc":"2223:12:66","nodeType":"YulFunctionCall","src":"2223:12:66"},"variableNames":[{"name":"i","nativeSrc":"2218:1:66","nodeType":"YulIdentifier","src":"2218:1:66"}]}]},"pre":{"nativeSrc":"2197:3:66","nodeType":"YulBlock","src":"2197:3:66","statements":[]},"src":"2193:222:66"},{"body":{"nativeSrc":"2463:166:66","nodeType":"YulBlock","src":"2463:166:66","statements":[{"nativeSrc":"2481:43:66","nodeType":"YulVariableDeclaration","src":"2481:43:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"2508:3:66","nodeType":"YulIdentifier","src":"2508:3:66"},{"name":"srcOffset","nativeSrc":"2513:9:66","nodeType":"YulIdentifier","src":"2513:9:66"}],"functionName":{"name":"add","nativeSrc":"2504:3:66","nodeType":"YulIdentifier","src":"2504:3:66"},"nativeSrc":"2504:19:66","nodeType":"YulFunctionCall","src":"2504:19:66"}],"functionName":{"name":"mload","nativeSrc":"2498:5:66","nodeType":"YulIdentifier","src":"2498:5:66"},"nativeSrc":"2498:26:66","nodeType":"YulFunctionCall","src":"2498:26:66"},"variables":[{"name":"lastValue","nativeSrc":"2485:9:66","nodeType":"YulTypedName","src":"2485:9:66","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"2548:6:66","nodeType":"YulIdentifier","src":"2548:6:66"},{"arguments":[{"name":"lastValue","nativeSrc":"2560:9:66","nodeType":"YulIdentifier","src":"2560:9:66"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2587:1:66","nodeType":"YulLiteral","src":"2587:1:66","type":"","value":"3"},{"name":"newLen","nativeSrc":"2590:6:66","nodeType":"YulIdentifier","src":"2590:6:66"}],"functionName":{"name":"shl","nativeSrc":"2583:3:66","nodeType":"YulIdentifier","src":"2583:3:66"},"nativeSrc":"2583:14:66","nodeType":"YulFunctionCall","src":"2583:14:66"},{"kind":"number","nativeSrc":"2599:3:66","nodeType":"YulLiteral","src":"2599:3:66","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"2579:3:66","nodeType":"YulIdentifier","src":"2579:3:66"},"nativeSrc":"2579:24:66","nodeType":"YulFunctionCall","src":"2579:24:66"},{"arguments":[{"kind":"number","nativeSrc":"2609:1:66","nodeType":"YulLiteral","src":"2609:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"2605:3:66","nodeType":"YulIdentifier","src":"2605:3:66"},"nativeSrc":"2605:6:66","nodeType":"YulFunctionCall","src":"2605:6:66"}],"functionName":{"name":"shr","nativeSrc":"2575:3:66","nodeType":"YulIdentifier","src":"2575:3:66"},"nativeSrc":"2575:37:66","nodeType":"YulFunctionCall","src":"2575:37:66"}],"functionName":{"name":"not","nativeSrc":"2571:3:66","nodeType":"YulIdentifier","src":"2571:3:66"},"nativeSrc":"2571:42:66","nodeType":"YulFunctionCall","src":"2571:42:66"}],"functionName":{"name":"and","nativeSrc":"2556:3:66","nodeType":"YulIdentifier","src":"2556:3:66"},"nativeSrc":"2556:58:66","nodeType":"YulFunctionCall","src":"2556:58:66"}],"functionName":{"name":"sstore","nativeSrc":"2541:6:66","nodeType":"YulIdentifier","src":"2541:6:66"},"nativeSrc":"2541:74:66","nodeType":"YulFunctionCall","src":"2541:74:66"},"nativeSrc":"2541:74:66","nodeType":"YulExpressionStatement","src":"2541:74:66"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"2434:7:66","nodeType":"YulIdentifier","src":"2434:7:66"},{"name":"newLen","nativeSrc":"2443:6:66","nodeType":"YulIdentifier","src":"2443:6:66"}],"functionName":{"name":"lt","nativeSrc":"2431:2:66","nodeType":"YulIdentifier","src":"2431:2:66"},"nativeSrc":"2431:19:66","nodeType":"YulFunctionCall","src":"2431:19:66"},"nativeSrc":"2428:201:66","nodeType":"YulIf","src":"2428:201:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"2649:4:66","nodeType":"YulIdentifier","src":"2649:4:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2663:1:66","nodeType":"YulLiteral","src":"2663:1:66","type":"","value":"1"},{"name":"newLen","nativeSrc":"2666:6:66","nodeType":"YulIdentifier","src":"2666:6:66"}],"functionName":{"name":"shl","nativeSrc":"2659:3:66","nodeType":"YulIdentifier","src":"2659:3:66"},"nativeSrc":"2659:14:66","nodeType":"YulFunctionCall","src":"2659:14:66"},{"kind":"number","nativeSrc":"2675:1:66","nodeType":"YulLiteral","src":"2675:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2655:3:66","nodeType":"YulIdentifier","src":"2655:3:66"},"nativeSrc":"2655:22:66","nodeType":"YulFunctionCall","src":"2655:22:66"}],"functionName":{"name":"sstore","nativeSrc":"2642:6:66","nodeType":"YulIdentifier","src":"2642:6:66"},"nativeSrc":"2642:36:66","nodeType":"YulFunctionCall","src":"2642:36:66"},"nativeSrc":"2642:36:66","nodeType":"YulExpressionStatement","src":"2642:36:66"}]},"nativeSrc":"2039:649:66","nodeType":"YulCase","src":"2039:649:66","value":{"kind":"number","nativeSrc":"2044:1:66","nodeType":"YulLiteral","src":"2044:1:66","type":"","value":"1"}},{"body":{"nativeSrc":"2705:234:66","nodeType":"YulBlock","src":"2705:234:66","statements":[{"nativeSrc":"2719:14:66","nodeType":"YulVariableDeclaration","src":"2719:14:66","value":{"kind":"number","nativeSrc":"2732:1:66","nodeType":"YulLiteral","src":"2732:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2723:5:66","nodeType":"YulTypedName","src":"2723:5:66","type":""}]},{"body":{"nativeSrc":"2768:67:66","nodeType":"YulBlock","src":"2768:67:66","statements":[{"nativeSrc":"2786:35:66","nodeType":"YulAssignment","src":"2786:35:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"2805:3:66","nodeType":"YulIdentifier","src":"2805:3:66"},{"name":"srcOffset","nativeSrc":"2810:9:66","nodeType":"YulIdentifier","src":"2810:9:66"}],"functionName":{"name":"add","nativeSrc":"2801:3:66","nodeType":"YulIdentifier","src":"2801:3:66"},"nativeSrc":"2801:19:66","nodeType":"YulFunctionCall","src":"2801:19:66"}],"functionName":{"name":"mload","nativeSrc":"2795:5:66","nodeType":"YulIdentifier","src":"2795:5:66"},"nativeSrc":"2795:26:66","nodeType":"YulFunctionCall","src":"2795:26:66"},"variableNames":[{"name":"value","nativeSrc":"2786:5:66","nodeType":"YulIdentifier","src":"2786:5:66"}]}]},"condition":{"name":"newLen","nativeSrc":"2749:6:66","nodeType":"YulIdentifier","src":"2749:6:66"},"nativeSrc":"2746:89:66","nodeType":"YulIf","src":"2746:89:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"2855:4:66","nodeType":"YulIdentifier","src":"2855:4:66"},{"arguments":[{"name":"value","nativeSrc":"2914:5:66","nodeType":"YulIdentifier","src":"2914:5:66"},{"name":"newLen","nativeSrc":"2921:6:66","nodeType":"YulIdentifier","src":"2921:6:66"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"2861:52:66","nodeType":"YulIdentifier","src":"2861:52:66"},"nativeSrc":"2861:67:66","nodeType":"YulFunctionCall","src":"2861:67:66"}],"functionName":{"name":"sstore","nativeSrc":"2848:6:66","nodeType":"YulIdentifier","src":"2848:6:66"},"nativeSrc":"2848:81:66","nodeType":"YulFunctionCall","src":"2848:81:66"},"nativeSrc":"2848:81:66","nodeType":"YulExpressionStatement","src":"2848:81:66"}]},"nativeSrc":"2697:242:66","nodeType":"YulCase","src":"2697:242:66","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"2019:6:66","nodeType":"YulIdentifier","src":"2019:6:66"},{"kind":"number","nativeSrc":"2027:2:66","nodeType":"YulLiteral","src":"2027:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"2016:2:66","nodeType":"YulIdentifier","src":"2016:2:66"},"nativeSrc":"2016:14:66","nodeType":"YulFunctionCall","src":"2016:14:66"},"nativeSrc":"2009:930:66","nodeType":"YulSwitch","src":"2009:930:66"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"1646:1299:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"1727:4:66","nodeType":"YulTypedName","src":"1727:4:66","type":""},{"name":"src","nativeSrc":"1733:3:66","nodeType":"YulTypedName","src":"1733:3:66","type":""}],"src":"1646:1299:66"},{"body":{"nativeSrc":"3051:102:66","nodeType":"YulBlock","src":"3051:102:66","statements":[{"nativeSrc":"3061:26:66","nodeType":"YulAssignment","src":"3061:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"3073:9:66","nodeType":"YulIdentifier","src":"3073:9:66"},{"kind":"number","nativeSrc":"3084:2:66","nodeType":"YulLiteral","src":"3084:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3069:3:66","nodeType":"YulIdentifier","src":"3069:3:66"},"nativeSrc":"3069:18:66","nodeType":"YulFunctionCall","src":"3069:18:66"},"variableNames":[{"name":"tail","nativeSrc":"3061:4:66","nodeType":"YulIdentifier","src":"3061:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3103:9:66","nodeType":"YulIdentifier","src":"3103:9:66"},{"arguments":[{"name":"value0","nativeSrc":"3118:6:66","nodeType":"YulIdentifier","src":"3118:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3134:3:66","nodeType":"YulLiteral","src":"3134:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"3139:1:66","nodeType":"YulLiteral","src":"3139:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3130:3:66","nodeType":"YulIdentifier","src":"3130:3:66"},"nativeSrc":"3130:11:66","nodeType":"YulFunctionCall","src":"3130:11:66"},{"kind":"number","nativeSrc":"3143:1:66","nodeType":"YulLiteral","src":"3143:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3126:3:66","nodeType":"YulIdentifier","src":"3126:3:66"},"nativeSrc":"3126:19:66","nodeType":"YulFunctionCall","src":"3126:19:66"}],"functionName":{"name":"and","nativeSrc":"3114:3:66","nodeType":"YulIdentifier","src":"3114:3:66"},"nativeSrc":"3114:32:66","nodeType":"YulFunctionCall","src":"3114:32:66"}],"functionName":{"name":"mstore","nativeSrc":"3096:6:66","nodeType":"YulIdentifier","src":"3096:6:66"},"nativeSrc":"3096:51:66","nodeType":"YulFunctionCall","src":"3096:51:66"},"nativeSrc":"3096:51:66","nodeType":"YulExpressionStatement","src":"3096:51:66"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2950:203:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3020:9:66","nodeType":"YulTypedName","src":"3020:9:66","type":""},{"name":"value0","nativeSrc":"3031:6:66","nodeType":"YulTypedName","src":"3031:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3042:4:66","nodeType":"YulTypedName","src":"3042:4:66","type":""}],"src":"2950:203:66"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n}","id":66,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051611dc5380380611dc583398101604081905261002f91610133565b806040518060400160405280601981526020017f496e74656c6c65637475616c2050726f7065727479204e46540000000000000081525060405180604001604052806005815260200164125413919560da1b81525081600090816100939190610202565b5060016100a08282610202565b5050506001600160a01b0381166100d157604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100da816100e1565b50506102c0565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006020828403121561014557600080fd5b81516001600160a01b038116811461015c57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061018d57607f821691505b6020821081036101ad57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fd57806000526020600020601f840160051c810160208510156101da5750805b601f840160051c820191505b818110156101fa57600081556001016101e6565b50505b505050565b81516001600160401b0381111561021b5761021b610163565b61022f816102298454610179565b846101b3565b6020601f821160018114610263576000831561024b5750848201515b600019600385901b1c1916600184901b1784556101fa565b600084815260208120601f198516915b828110156102935787850151825560209485019460019092019101610273565b50848210156102b15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b611af6806102cf6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063979f52921161007c578063979f52921461028b578063a22cb4651461029e578063b88d4fde146102b1578063c87b56dd146102c4578063e985e9c5146102d7578063f2fde38b146102ea57600080fd5b806370a0823114610237578063715018a61461024a5780638462151c146102525780638da5cb5b1461027257806395d89b411461028357600080fd5b806323b872dd116100ff57806323b872dd146101cb5780632f745c59146101de57806342842e0e146101f15780634effbf20146102045780636352211e1461022457600080fd5b806301ffc9a71461013c57806306fdde0314610164578063081812fc14610179578063095ea7b3146101a457806318160ddd146101b9575b600080fd5b61014f61014a36600461142c565b6102fd565b60405190151581526020015b60405180910390f35b61016c610328565b60405161015b9190611499565b61018c6101873660046114ac565b6103ba565b6040516001600160a01b03909116815260200161015b565b6101b76101b23660046114e1565b6103e3565b005b6008545b60405190815260200161015b565b6101b76101d936600461150b565b6103f2565b6101bd6101ec3660046114e1565b610482565b6101b76101ff36600461150b565b61059c565b6102176102123660046114ac565b6105bc565b60405161015b9190611580565b61018c6102323660046114ac565b6107c9565b6101bd6102453660046115e3565b6107d4565b6101b761081c565b6102656102603660046115e3565b610830565b60405161015b91906115fe565b6007546001600160a01b031661018c565b61016c6108c8565b6101bd6102993660046116f1565b6108d7565b6101b76102ac3660046117af565b6109f3565b6101b76102bf3660046117eb565b6109fe565b61016c6102d23660046114ac565b610a16565b61014f6102e5366004611867565b610b27565b6101b76102f83660046115e3565b610b55565b60006001600160e01b03198216632483248360e11b1480610322575061032282610b93565b92915050565b6060600080546103379061189a565b80601f01602080910402602001604051908101604052809291908181526020018280546103639061189a565b80156103b05780601f10610385576101008083540402835291602001916103b0565b820191906000526020600020905b81548152906001019060200180831161039357829003601f168201915b5050505050905090565b60006103c582610be3565b506000828152600460205260409020546001600160a01b0316610322565b6103ee828233610c1c565b5050565b6001600160a01b03821661042157604051633250574960e11b8152600060048201526024015b60405180910390fd5b600061042e838333610c29565b9050836001600160a01b0316816001600160a01b03161461047c576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610418565b50505050565b600061048d836107d4565b82106104db5760405162461bcd60e51b815260206004820152601a60248201527f49504e46543a20696e646578206f7574206f6620626f756e64730000000000006044820152606401610418565b6000805b600854811015610553576000818152600260205260409020546001600160a01b0316151580156105285750846001600160a01b031661051d826107c9565b6001600160a01b0316145b1561054b5783820361053d5791506103229050565b81610547816118d4565b9250505b6001016104df565b5060405162461bcd60e51b815260206004820152601a60248201527f49504e46543a20696e646578206f7574206f6620626f756e64730000000000006044820152606401610418565b6105b7838383604051806020016040528060008152506109fe565b505050565b6105e5604080516080810182526060808252602082015290810160008152602001600081525090565b6000828152600260205260409020546001600160a01b03166106495760405162461bcd60e51b815260206004820152601b60248201527f49504e46543a20746f6b656e20646f6573206e6f7420657869737400000000006044820152606401610418565b600082815260096020526040908190208151608081019092528054829082906106719061189a565b80601f016020809104026020016040519081016040528092919081815260200182805461069d9061189a565b80156106ea5780601f106106bf576101008083540402835291602001916106ea565b820191906000526020600020905b8154815290600101906020018083116106cd57829003601f168201915b505050505081526020016001820180546107039061189a565b80601f016020809104026020016040519081016040528092919081815260200182805461072f9061189a565b801561077c5780601f106107515761010080835404028352916020019161077c565b820191906000526020600020905b81548152906001019060200180831161075f57829003601f168201915b5050509183525050600282015460209091019060ff1660038111156107a3576107a3611548565b60038111156107b4576107b4611548565b81526020016003820154815250509050919050565b600061032282610be3565b60006001600160a01b038216610800576040516322718ad960e21b815260006004820152602401610418565b506001600160a01b031660009081526003602052604090205490565b610824610c40565b61082e6000610c6d565b565b6060600061083d836107d4565b905060008167ffffffffffffffff81111561085a5761085a611641565b604051908082528060200260200182016040528015610883578160200160208202803683370190505b50905060005b828110156108c05761089b8582610482565b8282815181106108ad576108ad6118fb565b6020908102919091010152600101610889565b509392505050565b6060600180546103379061189a565b60006108e1610c40565b6008805490819060006108f3836118d4565b91905055506109028782610cbf565b61090c8187610cd9565b604051806080016040528086815260200185815260200184600381111561093557610935611548565b81524260209182015260008381526009909152604090208151819061095a9082611958565b506020820151600182019061096f9082611958565b50604082015160028201805460ff1916600183600381111561099357610993611548565b021790555060608201518160030155905050866001600160a01b0316817fa11168e0b0496738928286f747e505f139d6440da347cb53c2508178dcc2419b85886040516109e1929190611a17565b60405180910390a39695505050505050565b6103ee338383610d29565b610a098484846103f2565b61047c3385858585610dc8565b6060610a2182610be3565b5060008281526006602052604081208054610a3b9061189a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a679061189a565b8015610ab45780601f10610a8957610100808354040283529160200191610ab4565b820191906000526020600020905b815481529060010190602001808311610a9757829003601f168201915b505050505090506000610ad260408051602081019091526000815290565b90508051600003610ae4575092915050565b815115610b16578082604051602001610afe929190611a37565b60405160208183030381529060405292505050919050565b610b1f84610ef3565b949350505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610b5d610c40565b6001600160a01b038116610b8757604051631e4fbdf760e01b815260006004820152602401610418565b610b9081610c6d565b50565b60006001600160e01b031982166380ac58cd60e01b1480610bc457506001600160e01b03198216635b5e139f60e01b145b8061032257506301ffc9a760e01b6001600160e01b0319831614610322565b6000818152600260205260408120546001600160a01b03168061032257604051637e27328960e01b815260048101849052602401610418565b6105b78383836001610f68565b600080610c3785858561106e565b95945050505050565b6007546001600160a01b0316331461082e5760405163118cdaa760e01b8152336004820152602401610418565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6103ee828260405180602001604052806000815250611167565b6000828152600660205260409020610cf18282611958565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b6001600160a01b038216610d5b57604051630b61174360e31b81526001600160a01b0383166004820152602401610418565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610eec57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610e0a908890889087908790600401611a66565b6020604051808303816000875af1925050508015610e45575060408051601f3d908101601f19168201909252610e4291810190611aa3565b60015b610eae573d808015610e73576040519150601f19603f3d011682016040523d82523d6000602084013e610e78565b606091505b508051600003610ea657604051633250574960e11b81526001600160a01b0385166004820152602401610418565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610eea57604051633250574960e11b81526001600160a01b0385166004820152602401610418565b505b5050505050565b6060610efe82610be3565b506000610f1660408051602081019091526000815290565b90506000815111610f365760405180602001604052806000815250610f61565b80610f408461117f565b604051602001610f51929190611a37565b6040516020818303038152906040525b9392505050565b8080610f7c57506001600160a01b03821615155b1561103e576000610f8c84610be3565b90506001600160a01b03831615801590610fb85750826001600160a01b0316816001600160a01b031614155b8015610fcb5750610fc98184610b27565b155b15610ff45760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610418565b811561103c5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6000828152600260205260408120546001600160a01b039081169083161561109b5761109b818486611212565b6001600160a01b038116156110d9576110b8600085600080610f68565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615611108576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6111718383611276565b6105b7336000858585610dc8565b6060600061118c836112db565b600101905060008167ffffffffffffffff8111156111ac576111ac611641565b6040519080825280601f01601f1916602001820160405280156111d6576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846111e057509392505050565b61121d8383836113b3565b6105b7576001600160a01b03831661124b57604051637e27328960e01b815260048101829052602401610418565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610418565b6001600160a01b0382166112a057604051633250574960e11b815260006004820152602401610418565b60006112ae83836000610c29565b90506001600160a01b038116156105b7576040516339e3563760e11b815260006004820152602401610418565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061131a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611346576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061136457662386f26fc10000830492506010015b6305f5e100831061137c576305f5e100830492506008015b612710831061139057612710830492506004015b606483106113a2576064830492506002015b600a83106103225760010192915050565b60006001600160a01b03831615801590610b1f5750826001600160a01b0316846001600160a01b031614806113ed57506113ed8484610b27565b80610b1f5750506000908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b031981168114610b9057600080fd5b60006020828403121561143e57600080fd5b8135610f6181611416565b60005b8381101561146457818101518382015260200161144c565b50506000910152565b60008151808452611485816020860160208601611449565b601f01601f19169290920160200192915050565b602081526000610f61602083018461146d565b6000602082840312156114be57600080fd5b5035919050565b80356001600160a01b03811681146114dc57600080fd5b919050565b600080604083850312156114f457600080fd5b6114fd836114c5565b946020939093013593505050565b60008060006060848603121561152057600080fd5b611529846114c5565b9250611537602085016114c5565b929592945050506040919091013590565b634e487b7160e01b600052602160045260246000fd5b6004811061157c57634e487b7160e01b600052602160045260246000fd5b9052565b60208152600082516080602084015261159c60a084018261146d565b90506020840151601f198483030160408501526115b9828261146d565b91505060408401516115ce606085018261155e565b50606084015160808401528091505092915050565b6000602082840312156115f557600080fd5b610f61826114c5565b602080825282518282018190526000918401906040840190835b81811015611636578351835260209384019390920191600101611618565b509095945050505050565b634e487b7160e01b600052604160045260246000fd5b60008067ffffffffffffffff84111561167257611672611641565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156116a1576116a1611641565b6040528381529050808284018510156116b957600080fd5b83836020830137600060208583010152509392505050565b600082601f8301126116e257600080fd5b610f6183833560208501611657565b600080600080600060a0868803121561170957600080fd5b611712866114c5565b9450602086013567ffffffffffffffff81111561172e57600080fd5b61173a888289016116d1565b945050604086013567ffffffffffffffff81111561175757600080fd5b611763888289016116d1565b935050606086013567ffffffffffffffff81111561178057600080fd5b61178c888289016116d1565b9250506080860135600481106117a157600080fd5b809150509295509295909350565b600080604083850312156117c257600080fd5b6117cb836114c5565b9150602083013580151581146117e057600080fd5b809150509250929050565b6000806000806080858703121561180157600080fd5b61180a856114c5565b9350611818602086016114c5565b925060408501359150606085013567ffffffffffffffff81111561183b57600080fd5b8501601f8101871361184c57600080fd5b61185b87823560208401611657565b91505092959194509250565b6000806040838503121561187a57600080fd5b611883836114c5565b9150611891602084016114c5565b90509250929050565b600181811c908216806118ae57607f821691505b6020821081036118ce57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600182016118f457634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fd5b601f8211156105b757806000526020600020601f840160051c810160208510156119385750805b601f840160051c820191505b81811015610eec5760008155600101611944565b815167ffffffffffffffff81111561197257611972611641565b61198681611980845461189a565b84611911565b6020601f8211600181146119ba57600083156119a25750848201515b600019600385901b1c1916600184901b178455610eec565b600084815260208120601f198516915b828110156119ea57878501518255602094850194600190920191016119ca565b5084821015611a085786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b611a21818461155e565b604060208201526000610b1f604083018461146d565b60008351611a49818460208801611449565b835190830190611a5d818360208801611449565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611a999083018461146d565b9695505050505050565b600060208284031215611ab557600080fd5b8151610f618161141656fea2646970667358221220ad69675a6376761914c70ee81a6d89d7d29cf223e7ee01ad132dc8fd1536d8db64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1DC5 CODESIZE SUB DUP1 PUSH2 0x1DC5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x133 JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x496E74656C6C65637475616C2050726F7065727479204E465400000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x1254139195 PUSH1 0xDA SHL DUP2 MSTORE POP DUP2 PUSH1 0x0 SWAP1 DUP2 PUSH2 0x93 SWAP2 SWAP1 PUSH2 0x202 JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0xA0 DUP3 DUP3 PUSH2 0x202 JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xD1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDA DUP2 PUSH2 0xE1 JUMP JUMPDEST POP POP PUSH2 0x2C0 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x15C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x18D JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1AD JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1FD JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1DA JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1E6 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21B JUMPI PUSH2 0x21B PUSH2 0x163 JUMP JUMPDEST PUSH2 0x22F DUP2 PUSH2 0x229 DUP5 SLOAD PUSH2 0x179 JUMP JUMPDEST DUP5 PUSH2 0x1B3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x263 JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x24B JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x1FA JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x293 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x273 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x2B1 JUMPI DUP7 DUP5 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x1AF6 DUP1 PUSH2 0x2CF PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0x979F5292 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0x979F5292 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x237 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x8462151C EQ PUSH2 0x252 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x4EFFBF20 EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1B9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0x142C JUMP JUMPDEST PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH2 0x328 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15B SWAP2 SWAP1 PUSH2 0x1499 JUMP JUMPDEST PUSH2 0x18C PUSH2 0x187 CALLDATASIZE PUSH1 0x4 PUSH2 0x14AC JUMP JUMPDEST PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15B JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x1B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x14E1 JUMP JUMPDEST PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x8 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15B JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x1D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x150B JUMP JUMPDEST PUSH2 0x3F2 JUMP JUMPDEST PUSH2 0x1BD PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0x14E1 JUMP JUMPDEST PUSH2 0x482 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0x150B JUMP JUMPDEST PUSH2 0x59C JUMP JUMPDEST PUSH2 0x217 PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0x14AC JUMP JUMPDEST PUSH2 0x5BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15B SWAP2 SWAP1 PUSH2 0x1580 JUMP JUMPDEST PUSH2 0x18C PUSH2 0x232 CALLDATASIZE PUSH1 0x4 PUSH2 0x14AC JUMP JUMPDEST PUSH2 0x7C9 JUMP JUMPDEST PUSH2 0x1BD PUSH2 0x245 CALLDATASIZE PUSH1 0x4 PUSH2 0x15E3 JUMP JUMPDEST PUSH2 0x7D4 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x81C JUMP JUMPDEST PUSH2 0x265 PUSH2 0x260 CALLDATASIZE PUSH1 0x4 PUSH2 0x15E3 JUMP JUMPDEST PUSH2 0x830 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15B SWAP2 SWAP1 PUSH2 0x15FE JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18C JUMP JUMPDEST PUSH2 0x16C PUSH2 0x8C8 JUMP JUMPDEST PUSH2 0x1BD PUSH2 0x299 CALLDATASIZE PUSH1 0x4 PUSH2 0x16F1 JUMP JUMPDEST PUSH2 0x8D7 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x2AC CALLDATASIZE PUSH1 0x4 PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x9F3 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x17EB JUMP JUMPDEST PUSH2 0x9FE JUMP JUMPDEST PUSH2 0x16C PUSH2 0x2D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x14AC JUMP JUMPDEST PUSH2 0xA16 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x2E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1867 JUMP JUMPDEST PUSH2 0xB27 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x2F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x15E3 JUMP JUMPDEST PUSH2 0xB55 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x24832483 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x322 JUMPI POP PUSH2 0x322 DUP3 PUSH2 0xB93 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x337 SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x363 SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3B0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x385 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3B0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x393 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C5 DUP3 PUSH2 0xBE3 JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x322 JUMP JUMPDEST PUSH2 0x3EE DUP3 DUP3 CALLER PUSH2 0xC1C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x421 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x42E DUP4 DUP4 CALLER PUSH2 0xC29 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x47C JUMPI PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x418 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48D DUP4 PUSH2 0x7D4 JUMP JUMPDEST DUP3 LT PUSH2 0x4DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x49504E46543A20696E646578206F7574206F6620626F756E6473000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x8 SLOAD DUP2 LT ISZERO PUSH2 0x553 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO DUP1 ISZERO PUSH2 0x528 JUMPI POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x51D DUP3 PUSH2 0x7C9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x54B JUMPI DUP4 DUP3 SUB PUSH2 0x53D JUMPI SWAP2 POP PUSH2 0x322 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x547 DUP2 PUSH2 0x18D4 JUMP JUMPDEST SWAP3 POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x4DF JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x49504E46543A20696E646578206F7574206F6620626F756E6473000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x418 JUMP JUMPDEST PUSH2 0x5B7 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x9FE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x5E5 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x649 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x49504E46543A20746F6B656E20646F6573206E6F742065786973740000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP2 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP3 MSTORE DUP1 SLOAD DUP3 SWAP1 DUP3 SWAP1 PUSH2 0x671 SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x69D SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x6EA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6BF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6EA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6CD JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH2 0x703 SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x72F SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x77C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x751 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x77C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x75F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7A3 JUMPI PUSH2 0x7A3 PUSH2 0x1548 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7B4 JUMPI PUSH2 0x7B4 PUSH2 0x1548 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x322 DUP3 PUSH2 0xBE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x800 JUMPI PUSH1 0x40 MLOAD PUSH4 0x22718AD9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x824 PUSH2 0xC40 JUMP JUMPDEST PUSH2 0x82E PUSH1 0x0 PUSH2 0xC6D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x83D DUP4 PUSH2 0x7D4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x85A JUMPI PUSH2 0x85A PUSH2 0x1641 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x883 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x8C0 JUMPI PUSH2 0x89B DUP6 DUP3 PUSH2 0x482 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x8AD JUMPI PUSH2 0x8AD PUSH2 0x18FB JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x889 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x337 SWAP1 PUSH2 0x189A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8E1 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD SWAP1 DUP2 SWAP1 PUSH1 0x0 PUSH2 0x8F3 DUP4 PUSH2 0x18D4 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH2 0x902 DUP8 DUP3 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0x90C DUP2 DUP8 PUSH2 0xCD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x935 JUMPI PUSH2 0x935 PUSH2 0x1548 JUMP JUMPDEST DUP2 MSTORE TIMESTAMP PUSH1 0x20 SWAP2 DUP3 ADD MSTORE PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x9 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 MLOAD DUP2 SWAP1 PUSH2 0x95A SWAP1 DUP3 PUSH2 0x1958 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x1 DUP3 ADD SWAP1 PUSH2 0x96F SWAP1 DUP3 PUSH2 0x1958 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x993 JUMPI PUSH2 0x993 PUSH2 0x1548 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE SWAP1 POP POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0xA11168E0B0496738928286F747E505F139D6440DA347CB53C2508178DCC2419B DUP6 DUP9 PUSH1 0x40 MLOAD PUSH2 0x9E1 SWAP3 SWAP2 SWAP1 PUSH2 0x1A17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3EE CALLER DUP4 DUP4 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0xA09 DUP5 DUP5 DUP5 PUSH2 0x3F2 JUMP JUMPDEST PUSH2 0x47C CALLER DUP6 DUP6 DUP6 DUP6 PUSH2 0xDC8 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA21 DUP3 PUSH2 0xBE3 JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xA3B SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xA67 SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 ISZERO PUSH2 0xAB4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA89 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAB4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA97 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0xAD2 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xAE4 JUMPI POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xB16 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xAFE SWAP3 SWAP2 SWAP1 PUSH2 0x1A37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB1F DUP5 PUSH2 0xEF3 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xB5D PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB87 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST PUSH2 0xB90 DUP2 PUSH2 0xC6D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xBC4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x322 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x322 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST PUSH2 0x5B7 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0xF68 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xC37 DUP6 DUP6 DUP6 PUSH2 0x106E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x82E JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x3EE DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1167 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xCF1 DUP3 DUP3 PUSH2 0x1958 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH32 0xF8E1A15ABA9398E019F0B49DF1A4FDE98EE17AE345CB5F6B5E2C27F5033E8CE7 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xD5B JUMPI PUSH1 0x40 MLOAD PUSH4 0xB611743 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0xEEC JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xE0A SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1A66 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xE45 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xE42 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1AA3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xEAE JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xE73 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE78 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xEA6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ PUSH2 0xEEA JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEFE DUP3 PUSH2 0xBE3 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xF16 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0xF36 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xF61 JUMP JUMPDEST DUP1 PUSH2 0xF40 DUP5 PUSH2 0x117F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF51 SWAP3 SWAP2 SWAP1 PUSH2 0x1A37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP1 PUSH2 0xF7C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x103E JUMPI PUSH1 0x0 PUSH2 0xF8C DUP5 PUSH2 0xBE3 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xFB8 JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xFCB JUMPI POP PUSH2 0xFC9 DUP2 DUP5 PUSH2 0xB27 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xFF4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x103C JUMPI DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP1 DUP4 AND ISZERO PUSH2 0x109B JUMPI PUSH2 0x109B DUP2 DUP5 DUP7 PUSH2 0x1212 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x10D9 JUMPI PUSH2 0x10B8 PUSH1 0x0 DUP6 PUSH1 0x0 DUP1 PUSH2 0xF68 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x1108 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP8 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1171 DUP4 DUP4 PUSH2 0x1276 JUMP JUMPDEST PUSH2 0x5B7 CALLER PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0xDC8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x118C DUP4 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11AC JUMPI PUSH2 0x11AC PUSH2 0x1641 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x11D6 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0x11E0 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x121D DUP4 DUP4 DUP4 PUSH2 0x13B3 JUMP JUMPDEST PUSH2 0x5B7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x124B JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x177E802F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x12A0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12AE DUP4 DUP4 PUSH1 0x0 PUSH2 0xC29 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x5B7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x39E35637 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0x131A JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1346 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1364 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x137C JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x1390 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x13A2 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x322 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xB1F JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x13ED JUMPI POP PUSH2 0x13ED DUP5 DUP5 PUSH2 0xB27 JUMP JUMPDEST DUP1 PUSH2 0xB1F JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xB90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x143E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xF61 DUP2 PUSH2 0x1416 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1464 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x144C JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1485 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1449 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xF61 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x146D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x14DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x14F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14FD DUP4 PUSH2 0x14C5 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1529 DUP5 PUSH2 0x14C5 JUMP JUMPDEST SWAP3 POP PUSH2 0x1537 PUSH1 0x20 DUP6 ADD PUSH2 0x14C5 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x157C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH1 0x80 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x159C PUSH1 0xA0 DUP5 ADD DUP3 PUSH2 0x146D JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x1F NOT DUP5 DUP4 SUB ADD PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x15B9 DUP3 DUP3 PUSH2 0x146D JUMP JUMPDEST SWAP2 POP POP PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x15CE PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x155E JUMP JUMPDEST POP PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF61 DUP3 PUSH2 0x14C5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1636 JUMPI DUP4 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1618 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT ISZERO PUSH2 0x1672 JUMPI PUSH2 0x1672 PUSH2 0x1641 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x16A1 JUMPI PUSH2 0x16A1 PUSH2 0x1641 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE SWAP1 POP DUP1 DUP3 DUP5 ADD DUP6 LT ISZERO PUSH2 0x16B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP4 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x16E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF61 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x1657 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1712 DUP7 PUSH2 0x14C5 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x172E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x173A DUP9 DUP3 DUP10 ADD PUSH2 0x16D1 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1763 DUP9 DUP3 DUP10 ADD PUSH2 0x16D1 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x178C DUP9 DUP3 DUP10 ADD PUSH2 0x16D1 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0x17A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x17C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17CB DUP4 PUSH2 0x14C5 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x17E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1801 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x180A DUP6 PUSH2 0x14C5 JUMP JUMPDEST SWAP4 POP PUSH2 0x1818 PUSH1 0x20 DUP7 ADD PUSH2 0x14C5 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x183B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x184C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x185B DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x1657 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x187A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1883 DUP4 PUSH2 0x14C5 JUMP JUMPDEST SWAP2 POP PUSH2 0x1891 PUSH1 0x20 DUP5 ADD PUSH2 0x14C5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x18AE JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x18CE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x18F4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x5B7 JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1938 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xEEC JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1944 JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1972 JUMPI PUSH2 0x1972 PUSH2 0x1641 JUMP JUMPDEST PUSH2 0x1986 DUP2 PUSH2 0x1980 DUP5 SLOAD PUSH2 0x189A JUMP JUMPDEST DUP5 PUSH2 0x1911 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x19BA JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x19A2 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x19EA JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x19CA JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x1A08 JUMPI DUP7 DUP5 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x1A21 DUP2 DUP5 PUSH2 0x155E JUMP JUMPDEST PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xB1F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x146D JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1A49 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1449 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1A5D DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x1449 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1A99 SWAP1 DUP4 ADD DUP5 PUSH2 0x146D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF61 DUP2 PUSH2 0x1416 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD PUSH10 0x675A6376761914C70EE8 BYTE PUSH14 0x89D7D29CF223E7EE01AD132DC8FD ISZERO CALLDATASIZE 0xD8 0xDB PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"351:3900:58:-:0;;;1065:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1166:12;1380:113:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1380:113:40;;;1454:5;1446;:13;;;;;;:::i;:::-;-1:-1:-1;1469:7:40;:17;1479:7;1469;:17;:::i;:::-;-1:-1:-1;;;;;;;;1273:26:28;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:28;;1350:1;1322:31;;;3096:51:66;3069:18;;1322:31:28;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;1225:187;1065:117:58;351:3900;;2912:187:28;3004:6;;;-1:-1:-1;;;;;3020:17:28;;;-1:-1:-1;;;;;;3020:17:28;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;14:290:66:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:66;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:66:o;309:127::-;370:10;365:3;361:20;358:1;351:31;401:4;398:1;391:15;425:4;422:1;415:15;441:380;520:1;516:12;;;;563;;;584:61;;638:4;630:6;626:17;616:27;;584:61;691:2;683:6;680:14;660:18;657:38;654:161;;737:10;732:3;728:20;725:1;718:31;772:4;769:1;762:15;800:4;797:1;790:15;654:161;;441:380;;;:::o;952:518::-;1054:2;1049:3;1046:11;1043:421;;;1090:5;1087:1;1080:16;1134:4;1131:1;1121:18;1204:2;1192:10;1188:19;1185:1;1181:27;1175:4;1171:38;1240:4;1228:10;1225:20;1222:47;;;-1:-1:-1;1263:4:66;1222:47;1318:2;1313:3;1309:12;1306:1;1302:20;1296:4;1292:31;1282:41;;1373:81;1391:2;1384:5;1381:13;1373:81;;;1450:1;1436:16;;1417:1;1406:13;1373:81;;;1377:3;;1043:421;952:518;;;:::o;1646:1299::-;1766:10;;-1:-1:-1;;;;;1788:30:66;;1785:56;;;1821:18;;:::i;:::-;1850:97;1940:6;1900:38;1932:4;1926:11;1900:38;:::i;:::-;1894:4;1850:97;:::i;:::-;1996:4;2027:2;2016:14;;2044:1;2039:649;;;;2732:1;2749:6;2746:89;;;-1:-1:-1;2801:19:66;;;2795:26;2746:89;-1:-1:-1;;1603:1:66;1599:11;;;1595:24;1591:29;1581:40;1627:1;1623:11;;;1578:57;2848:81;;2009:930;;2039:649;899:1;892:14;;;936:4;923:18;;-1:-1:-1;;2075:20:66;;;2193:222;2207:7;2204:1;2201:14;2193:222;;;2289:19;;;2283:26;2268:42;;2396:4;2381:20;;;;2349:1;2337:14;;;;2223:12;2193:222;;;2197:3;2443:6;2434:7;2431:19;2428:201;;;2504:19;;;2498:26;-1:-1:-1;;2587:1:66;2583:14;;;2599:3;2579:24;2575:37;2571:42;2556:58;2541:74;;2428:201;-1:-1:-1;;;;2675:1:66;2659:14;;;2655:22;2642:36;;-1:-1:-1;1646:1299:66:o;2950:203::-;351:3900:58;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_approve_6156":{"entryPoint":3100,"id":6156,"parameterSlots":3,"returnSlots":0},"@_approve_6222":{"entryPoint":3944,"id":6222,"parameterSlots":4,"returnSlots":0},"@_baseURI_5537":{"entryPoint":null,"id":5537,"parameterSlots":0,"returnSlots":1},"@_checkAuthorized_5796":{"entryPoint":4626,"id":5796,"parameterSlots":3,"returnSlots":0},"@_checkOwner_3917":{"entryPoint":3136,"id":3917,"parameterSlots":0,"returnSlots":0},"@_exists_13003":{"entryPoint":null,"id":13003,"parameterSlots":1,"returnSlots":1},"@_getApproved_5723":{"entryPoint":null,"id":5723,"parameterSlots":1,"returnSlots":1},"@_isAuthorized_5759":{"entryPoint":5043,"id":5759,"parameterSlots":3,"returnSlots":1},"@_mint_5952":{"entryPoint":4726,"id":5952,"parameterSlots":2,"returnSlots":0},"@_msgSender_6667":{"entryPoint":null,"id":6667,"parameterSlots":0,"returnSlots":1},"@_ownerOf_5710":{"entryPoint":null,"id":5710,"parameterSlots":1,"returnSlots":1},"@_requireOwned_6288":{"entryPoint":3043,"id":6288,"parameterSlots":1,"returnSlots":1},"@_safeMint_5967":{"entryPoint":3263,"id":5967,"parameterSlots":2,"returnSlots":0},"@_safeMint_5997":{"entryPoint":4455,"id":5997,"parameterSlots":3,"returnSlots":0},"@_setApprovalForAll_6259":{"entryPoint":3369,"id":6259,"parameterSlots":3,"returnSlots":0},"@_setTokenURI_6549":{"entryPoint":3289,"id":6549,"parameterSlots":2,"returnSlots":0},"@_transferOwnership_3979":{"entryPoint":3181,"id":3979,"parameterSlots":1,"returnSlots":0},"@_update_13027":{"entryPoint":3113,"id":13027,"parameterSlots":3,"returnSlots":1},"@_update_5902":{"entryPoint":4206,"id":5902,"parameterSlots":3,"returnSlots":1},"@approve_5553":{"entryPoint":995,"id":5553,"parameterSlots":2,"returnSlots":0},"@balanceOf_5461":{"entryPoint":2004,"id":5461,"parameterSlots":1,"returnSlots":1},"@checkOnERC721Received_6654":{"entryPoint":3528,"id":6654,"parameterSlots":5,"returnSlots":0},"@getApproved_5570":{"entryPoint":954,"id":5570,"parameterSlots":1,"returnSlots":1},"@getIPInfo_12865":{"entryPoint":1468,"id":12865,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_5603":{"entryPoint":2855,"id":5603,"parameterSlots":2,"returnSlots":1},"@log10_10084":{"entryPoint":4827,"id":10084,"parameterSlots":1,"returnSlots":1},"@mint_12844":{"entryPoint":2263,"id":12844,"parameterSlots":5,"returnSlots":1},"@name_5483":{"entryPoint":808,"id":5483,"parameterSlots":0,"returnSlots":1},"@ownerOf_5474":{"entryPoint":1993,"id":5474,"parameterSlots":1,"returnSlots":1},"@owner_3900":{"entryPoint":null,"id":3900,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_3931":{"entryPoint":2076,"id":3931,"parameterSlots":0,"returnSlots":0},"@safeTransferFrom_5667":{"entryPoint":1436,"id":5667,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_5697":{"entryPoint":2558,"id":5697,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_5586":{"entryPoint":2547,"id":5586,"parameterSlots":2,"returnSlots":0},"@supportsInterface_5433":{"entryPoint":2963,"id":5433,"parameterSlots":1,"returnSlots":1},"@supportsInterface_6473":{"entryPoint":765,"id":6473,"parameterSlots":1,"returnSlots":1},"@supportsInterface_8618":{"entryPoint":null,"id":8618,"parameterSlots":1,"returnSlots":1},"@symbol_5492":{"entryPoint":2248,"id":5492,"parameterSlots":0,"returnSlots":1},"@toString_6851":{"entryPoint":4479,"id":6851,"parameterSlots":1,"returnSlots":1},"@tokenOfOwnerByIndex_12985":{"entryPoint":1154,"id":12985,"parameterSlots":2,"returnSlots":1},"@tokenURI_5528":{"entryPoint":3827,"id":5528,"parameterSlots":1,"returnSlots":1},"@tokenURI_6530":{"entryPoint":2582,"id":6530,"parameterSlots":1,"returnSlots":1},"@tokensOfOwner_12924":{"entryPoint":2096,"id":12924,"parameterSlots":1,"returnSlots":1},"@totalSupply_12874":{"entryPoint":null,"id":12874,"parameterSlots":0,"returnSlots":1},"@transferFrom_5649":{"entryPoint":1010,"id":5649,"parameterSlots":3,"returnSlots":0},"@transferOwnership_3959":{"entryPoint":2901,"id":3959,"parameterSlots":1,"returnSlots":0},"abi_decode_address":{"entryPoint":5317,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_available_length_string":{"entryPoint":5719,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_string":{"entryPoint":5841,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":5603,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":6247,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":5387,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":6123,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":6063,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_enum$_IPType_$12747":{"entryPoint":5873,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":5345,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":5164,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":6819,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":5292,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_enum_IPType":{"entryPoint":5470,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_string":{"entryPoint":5229,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":6711,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":6758,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":5630,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_enum$_IPType_$12747_t_string_memory_ptr__to_t_uint8_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6679,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":5273,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_10de41d09c4ac47b36ce55dc8332112954fd07dfed42e96d8fd589ebdddfe212__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9733be426b13e9a9d956b569fa7cbe74e4c1780e75f1f56e803452958eccf8dd__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_struct$_IPInfo_$12757_memory_ptr__to_t_struct$_IPInfo_$12757_memory_ptr__fromStack_reversed":{"entryPoint":5504,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":6417,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":6488,"id":null,"parameterSlots":2,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":5193,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":6298,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":6356,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x12":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":5448,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":6395,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":5697,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":5142,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:14100:66","nodeType":"YulBlock","src":"0:14100:66","statements":[{"nativeSrc":"6:3:66","nodeType":"YulBlock","src":"6:3:66","statements":[]},{"body":{"nativeSrc":"58:87:66","nodeType":"YulBlock","src":"58:87:66","statements":[{"body":{"nativeSrc":"123:16:66","nodeType":"YulBlock","src":"123:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"132:1:66","nodeType":"YulLiteral","src":"132:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"135:1:66","nodeType":"YulLiteral","src":"135:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"125:6:66","nodeType":"YulIdentifier","src":"125:6:66"},"nativeSrc":"125:12:66","nodeType":"YulFunctionCall","src":"125:12:66"},"nativeSrc":"125:12:66","nodeType":"YulExpressionStatement","src":"125:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"81:5:66","nodeType":"YulIdentifier","src":"81:5:66"},{"arguments":[{"name":"value","nativeSrc":"92:5:66","nodeType":"YulIdentifier","src":"92:5:66"},{"arguments":[{"kind":"number","nativeSrc":"103:3:66","nodeType":"YulLiteral","src":"103:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"108:10:66","nodeType":"YulLiteral","src":"108:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"99:3:66","nodeType":"YulIdentifier","src":"99:3:66"},"nativeSrc":"99:20:66","nodeType":"YulFunctionCall","src":"99:20:66"}],"functionName":{"name":"and","nativeSrc":"88:3:66","nodeType":"YulIdentifier","src":"88:3:66"},"nativeSrc":"88:32:66","nodeType":"YulFunctionCall","src":"88:32:66"}],"functionName":{"name":"eq","nativeSrc":"78:2:66","nodeType":"YulIdentifier","src":"78:2:66"},"nativeSrc":"78:43:66","nodeType":"YulFunctionCall","src":"78:43:66"}],"functionName":{"name":"iszero","nativeSrc":"71:6:66","nodeType":"YulIdentifier","src":"71:6:66"},"nativeSrc":"71:51:66","nodeType":"YulFunctionCall","src":"71:51:66"},"nativeSrc":"68:71:66","nodeType":"YulIf","src":"68:71:66"}]},"name":"validator_revert_bytes4","nativeSrc":"14:131:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"47:5:66","nodeType":"YulTypedName","src":"47:5:66","type":""}],"src":"14:131:66"},{"body":{"nativeSrc":"219:176:66","nodeType":"YulBlock","src":"219:176:66","statements":[{"body":{"nativeSrc":"265:16:66","nodeType":"YulBlock","src":"265:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"274:1:66","nodeType":"YulLiteral","src":"274:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"277:1:66","nodeType":"YulLiteral","src":"277:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"267:6:66","nodeType":"YulIdentifier","src":"267:6:66"},"nativeSrc":"267:12:66","nodeType":"YulFunctionCall","src":"267:12:66"},"nativeSrc":"267:12:66","nodeType":"YulExpressionStatement","src":"267:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"240:7:66","nodeType":"YulIdentifier","src":"240:7:66"},{"name":"headStart","nativeSrc":"249:9:66","nodeType":"YulIdentifier","src":"249:9:66"}],"functionName":{"name":"sub","nativeSrc":"236:3:66","nodeType":"YulIdentifier","src":"236:3:66"},"nativeSrc":"236:23:66","nodeType":"YulFunctionCall","src":"236:23:66"},{"kind":"number","nativeSrc":"261:2:66","nodeType":"YulLiteral","src":"261:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"232:3:66","nodeType":"YulIdentifier","src":"232:3:66"},"nativeSrc":"232:32:66","nodeType":"YulFunctionCall","src":"232:32:66"},"nativeSrc":"229:52:66","nodeType":"YulIf","src":"229:52:66"},{"nativeSrc":"290:36:66","nodeType":"YulVariableDeclaration","src":"290:36:66","value":{"arguments":[{"name":"headStart","nativeSrc":"316:9:66","nodeType":"YulIdentifier","src":"316:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"303:12:66","nodeType":"YulIdentifier","src":"303:12:66"},"nativeSrc":"303:23:66","nodeType":"YulFunctionCall","src":"303:23:66"},"variables":[{"name":"value","nativeSrc":"294:5:66","nodeType":"YulTypedName","src":"294:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"359:5:66","nodeType":"YulIdentifier","src":"359:5:66"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"335:23:66","nodeType":"YulIdentifier","src":"335:23:66"},"nativeSrc":"335:30:66","nodeType":"YulFunctionCall","src":"335:30:66"},"nativeSrc":"335:30:66","nodeType":"YulExpressionStatement","src":"335:30:66"},{"nativeSrc":"374:15:66","nodeType":"YulAssignment","src":"374:15:66","value":{"name":"value","nativeSrc":"384:5:66","nodeType":"YulIdentifier","src":"384:5:66"},"variableNames":[{"name":"value0","nativeSrc":"374:6:66","nodeType":"YulIdentifier","src":"374:6:66"}]}]},"name":"abi_decode_tuple_t_bytes4","nativeSrc":"150:245:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"185:9:66","nodeType":"YulTypedName","src":"185:9:66","type":""},{"name":"dataEnd","nativeSrc":"196:7:66","nodeType":"YulTypedName","src":"196:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"208:6:66","nodeType":"YulTypedName","src":"208:6:66","type":""}],"src":"150:245:66"},{"body":{"nativeSrc":"495:92:66","nodeType":"YulBlock","src":"495:92:66","statements":[{"nativeSrc":"505:26:66","nodeType":"YulAssignment","src":"505:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"517:9:66","nodeType":"YulIdentifier","src":"517:9:66"},{"kind":"number","nativeSrc":"528:2:66","nodeType":"YulLiteral","src":"528:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"513:3:66","nodeType":"YulIdentifier","src":"513:3:66"},"nativeSrc":"513:18:66","nodeType":"YulFunctionCall","src":"513:18:66"},"variableNames":[{"name":"tail","nativeSrc":"505:4:66","nodeType":"YulIdentifier","src":"505:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"547:9:66","nodeType":"YulIdentifier","src":"547:9:66"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"572:6:66","nodeType":"YulIdentifier","src":"572:6:66"}],"functionName":{"name":"iszero","nativeSrc":"565:6:66","nodeType":"YulIdentifier","src":"565:6:66"},"nativeSrc":"565:14:66","nodeType":"YulFunctionCall","src":"565:14:66"}],"functionName":{"name":"iszero","nativeSrc":"558:6:66","nodeType":"YulIdentifier","src":"558:6:66"},"nativeSrc":"558:22:66","nodeType":"YulFunctionCall","src":"558:22:66"}],"functionName":{"name":"mstore","nativeSrc":"540:6:66","nodeType":"YulIdentifier","src":"540:6:66"},"nativeSrc":"540:41:66","nodeType":"YulFunctionCall","src":"540:41:66"},"nativeSrc":"540:41:66","nodeType":"YulExpressionStatement","src":"540:41:66"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"400:187:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"464:9:66","nodeType":"YulTypedName","src":"464:9:66","type":""},{"name":"value0","nativeSrc":"475:6:66","nodeType":"YulTypedName","src":"475:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"486:4:66","nodeType":"YulTypedName","src":"486:4:66","type":""}],"src":"400:187:66"},{"body":{"nativeSrc":"658:184:66","nodeType":"YulBlock","src":"658:184:66","statements":[{"nativeSrc":"668:10:66","nodeType":"YulVariableDeclaration","src":"668:10:66","value":{"kind":"number","nativeSrc":"677:1:66","nodeType":"YulLiteral","src":"677:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"672:1:66","nodeType":"YulTypedName","src":"672:1:66","type":""}]},{"body":{"nativeSrc":"737:63:66","nodeType":"YulBlock","src":"737:63:66","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"762:3:66","nodeType":"YulIdentifier","src":"762:3:66"},{"name":"i","nativeSrc":"767:1:66","nodeType":"YulIdentifier","src":"767:1:66"}],"functionName":{"name":"add","nativeSrc":"758:3:66","nodeType":"YulIdentifier","src":"758:3:66"},"nativeSrc":"758:11:66","nodeType":"YulFunctionCall","src":"758:11:66"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"781:3:66","nodeType":"YulIdentifier","src":"781:3:66"},{"name":"i","nativeSrc":"786:1:66","nodeType":"YulIdentifier","src":"786:1:66"}],"functionName":{"name":"add","nativeSrc":"777:3:66","nodeType":"YulIdentifier","src":"777:3:66"},"nativeSrc":"777:11:66","nodeType":"YulFunctionCall","src":"777:11:66"}],"functionName":{"name":"mload","nativeSrc":"771:5:66","nodeType":"YulIdentifier","src":"771:5:66"},"nativeSrc":"771:18:66","nodeType":"YulFunctionCall","src":"771:18:66"}],"functionName":{"name":"mstore","nativeSrc":"751:6:66","nodeType":"YulIdentifier","src":"751:6:66"},"nativeSrc":"751:39:66","nodeType":"YulFunctionCall","src":"751:39:66"},"nativeSrc":"751:39:66","nodeType":"YulExpressionStatement","src":"751:39:66"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"698:1:66","nodeType":"YulIdentifier","src":"698:1:66"},{"name":"length","nativeSrc":"701:6:66","nodeType":"YulIdentifier","src":"701:6:66"}],"functionName":{"name":"lt","nativeSrc":"695:2:66","nodeType":"YulIdentifier","src":"695:2:66"},"nativeSrc":"695:13:66","nodeType":"YulFunctionCall","src":"695:13:66"},"nativeSrc":"687:113:66","nodeType":"YulForLoop","post":{"nativeSrc":"709:19:66","nodeType":"YulBlock","src":"709:19:66","statements":[{"nativeSrc":"711:15:66","nodeType":"YulAssignment","src":"711:15:66","value":{"arguments":[{"name":"i","nativeSrc":"720:1:66","nodeType":"YulIdentifier","src":"720:1:66"},{"kind":"number","nativeSrc":"723:2:66","nodeType":"YulLiteral","src":"723:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"716:3:66","nodeType":"YulIdentifier","src":"716:3:66"},"nativeSrc":"716:10:66","nodeType":"YulFunctionCall","src":"716:10:66"},"variableNames":[{"name":"i","nativeSrc":"711:1:66","nodeType":"YulIdentifier","src":"711:1:66"}]}]},"pre":{"nativeSrc":"691:3:66","nodeType":"YulBlock","src":"691:3:66","statements":[]},"src":"687:113:66"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"820:3:66","nodeType":"YulIdentifier","src":"820:3:66"},{"name":"length","nativeSrc":"825:6:66","nodeType":"YulIdentifier","src":"825:6:66"}],"functionName":{"name":"add","nativeSrc":"816:3:66","nodeType":"YulIdentifier","src":"816:3:66"},"nativeSrc":"816:16:66","nodeType":"YulFunctionCall","src":"816:16:66"},{"kind":"number","nativeSrc":"834:1:66","nodeType":"YulLiteral","src":"834:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"809:6:66","nodeType":"YulIdentifier","src":"809:6:66"},"nativeSrc":"809:27:66","nodeType":"YulFunctionCall","src":"809:27:66"},"nativeSrc":"809:27:66","nodeType":"YulExpressionStatement","src":"809:27:66"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"592:250:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"636:3:66","nodeType":"YulTypedName","src":"636:3:66","type":""},{"name":"dst","nativeSrc":"641:3:66","nodeType":"YulTypedName","src":"641:3:66","type":""},{"name":"length","nativeSrc":"646:6:66","nodeType":"YulTypedName","src":"646:6:66","type":""}],"src":"592:250:66"},{"body":{"nativeSrc":"897:221:66","nodeType":"YulBlock","src":"897:221:66","statements":[{"nativeSrc":"907:26:66","nodeType":"YulVariableDeclaration","src":"907:26:66","value":{"arguments":[{"name":"value","nativeSrc":"927:5:66","nodeType":"YulIdentifier","src":"927:5:66"}],"functionName":{"name":"mload","nativeSrc":"921:5:66","nodeType":"YulIdentifier","src":"921:5:66"},"nativeSrc":"921:12:66","nodeType":"YulFunctionCall","src":"921:12:66"},"variables":[{"name":"length","nativeSrc":"911:6:66","nodeType":"YulTypedName","src":"911:6:66","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"949:3:66","nodeType":"YulIdentifier","src":"949:3:66"},{"name":"length","nativeSrc":"954:6:66","nodeType":"YulIdentifier","src":"954:6:66"}],"functionName":{"name":"mstore","nativeSrc":"942:6:66","nodeType":"YulIdentifier","src":"942:6:66"},"nativeSrc":"942:19:66","nodeType":"YulFunctionCall","src":"942:19:66"},"nativeSrc":"942:19:66","nodeType":"YulExpressionStatement","src":"942:19:66"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1009:5:66","nodeType":"YulIdentifier","src":"1009:5:66"},{"kind":"number","nativeSrc":"1016:4:66","nodeType":"YulLiteral","src":"1016:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1005:3:66","nodeType":"YulIdentifier","src":"1005:3:66"},"nativeSrc":"1005:16:66","nodeType":"YulFunctionCall","src":"1005:16:66"},{"arguments":[{"name":"pos","nativeSrc":"1027:3:66","nodeType":"YulIdentifier","src":"1027:3:66"},{"kind":"number","nativeSrc":"1032:4:66","nodeType":"YulLiteral","src":"1032:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1023:3:66","nodeType":"YulIdentifier","src":"1023:3:66"},"nativeSrc":"1023:14:66","nodeType":"YulFunctionCall","src":"1023:14:66"},{"name":"length","nativeSrc":"1039:6:66","nodeType":"YulIdentifier","src":"1039:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"970:34:66","nodeType":"YulIdentifier","src":"970:34:66"},"nativeSrc":"970:76:66","nodeType":"YulFunctionCall","src":"970:76:66"},"nativeSrc":"970:76:66","nodeType":"YulExpressionStatement","src":"970:76:66"},{"nativeSrc":"1055:57:66","nodeType":"YulAssignment","src":"1055:57:66","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"1070:3:66","nodeType":"YulIdentifier","src":"1070:3:66"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1083:6:66","nodeType":"YulIdentifier","src":"1083:6:66"},{"kind":"number","nativeSrc":"1091:2:66","nodeType":"YulLiteral","src":"1091:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1079:3:66","nodeType":"YulIdentifier","src":"1079:3:66"},"nativeSrc":"1079:15:66","nodeType":"YulFunctionCall","src":"1079:15:66"},{"arguments":[{"kind":"number","nativeSrc":"1100:2:66","nodeType":"YulLiteral","src":"1100:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1096:3:66","nodeType":"YulIdentifier","src":"1096:3:66"},"nativeSrc":"1096:7:66","nodeType":"YulFunctionCall","src":"1096:7:66"}],"functionName":{"name":"and","nativeSrc":"1075:3:66","nodeType":"YulIdentifier","src":"1075:3:66"},"nativeSrc":"1075:29:66","nodeType":"YulFunctionCall","src":"1075:29:66"}],"functionName":{"name":"add","nativeSrc":"1066:3:66","nodeType":"YulIdentifier","src":"1066:3:66"},"nativeSrc":"1066:39:66","nodeType":"YulFunctionCall","src":"1066:39:66"},{"kind":"number","nativeSrc":"1107:4:66","nodeType":"YulLiteral","src":"1107:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1062:3:66","nodeType":"YulIdentifier","src":"1062:3:66"},"nativeSrc":"1062:50:66","nodeType":"YulFunctionCall","src":"1062:50:66"},"variableNames":[{"name":"end","nativeSrc":"1055:3:66","nodeType":"YulIdentifier","src":"1055:3:66"}]}]},"name":"abi_encode_string","nativeSrc":"847:271:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"874:5:66","nodeType":"YulTypedName","src":"874:5:66","type":""},{"name":"pos","nativeSrc":"881:3:66","nodeType":"YulTypedName","src":"881:3:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"889:3:66","nodeType":"YulTypedName","src":"889:3:66","type":""}],"src":"847:271:66"},{"body":{"nativeSrc":"1244:99:66","nodeType":"YulBlock","src":"1244:99:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1261:9:66","nodeType":"YulIdentifier","src":"1261:9:66"},{"kind":"number","nativeSrc":"1272:2:66","nodeType":"YulLiteral","src":"1272:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1254:6:66","nodeType":"YulIdentifier","src":"1254:6:66"},"nativeSrc":"1254:21:66","nodeType":"YulFunctionCall","src":"1254:21:66"},"nativeSrc":"1254:21:66","nodeType":"YulExpressionStatement","src":"1254:21:66"},{"nativeSrc":"1284:53:66","nodeType":"YulAssignment","src":"1284:53:66","value":{"arguments":[{"name":"value0","nativeSrc":"1310:6:66","nodeType":"YulIdentifier","src":"1310:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"1322:9:66","nodeType":"YulIdentifier","src":"1322:9:66"},{"kind":"number","nativeSrc":"1333:2:66","nodeType":"YulLiteral","src":"1333:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1318:3:66","nodeType":"YulIdentifier","src":"1318:3:66"},"nativeSrc":"1318:18:66","nodeType":"YulFunctionCall","src":"1318:18:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"1292:17:66","nodeType":"YulIdentifier","src":"1292:17:66"},"nativeSrc":"1292:45:66","nodeType":"YulFunctionCall","src":"1292:45:66"},"variableNames":[{"name":"tail","nativeSrc":"1284:4:66","nodeType":"YulIdentifier","src":"1284:4:66"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"1123:220:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1213:9:66","nodeType":"YulTypedName","src":"1213:9:66","type":""},{"name":"value0","nativeSrc":"1224:6:66","nodeType":"YulTypedName","src":"1224:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1235:4:66","nodeType":"YulTypedName","src":"1235:4:66","type":""}],"src":"1123:220:66"},{"body":{"nativeSrc":"1418:156:66","nodeType":"YulBlock","src":"1418:156:66","statements":[{"body":{"nativeSrc":"1464:16:66","nodeType":"YulBlock","src":"1464:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1473:1:66","nodeType":"YulLiteral","src":"1473:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1476:1:66","nodeType":"YulLiteral","src":"1476:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1466:6:66","nodeType":"YulIdentifier","src":"1466:6:66"},"nativeSrc":"1466:12:66","nodeType":"YulFunctionCall","src":"1466:12:66"},"nativeSrc":"1466:12:66","nodeType":"YulExpressionStatement","src":"1466:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1439:7:66","nodeType":"YulIdentifier","src":"1439:7:66"},{"name":"headStart","nativeSrc":"1448:9:66","nodeType":"YulIdentifier","src":"1448:9:66"}],"functionName":{"name":"sub","nativeSrc":"1435:3:66","nodeType":"YulIdentifier","src":"1435:3:66"},"nativeSrc":"1435:23:66","nodeType":"YulFunctionCall","src":"1435:23:66"},{"kind":"number","nativeSrc":"1460:2:66","nodeType":"YulLiteral","src":"1460:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1431:3:66","nodeType":"YulIdentifier","src":"1431:3:66"},"nativeSrc":"1431:32:66","nodeType":"YulFunctionCall","src":"1431:32:66"},"nativeSrc":"1428:52:66","nodeType":"YulIf","src":"1428:52:66"},{"nativeSrc":"1489:14:66","nodeType":"YulVariableDeclaration","src":"1489:14:66","value":{"kind":"number","nativeSrc":"1502:1:66","nodeType":"YulLiteral","src":"1502:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1493:5:66","nodeType":"YulTypedName","src":"1493:5:66","type":""}]},{"nativeSrc":"1512:32:66","nodeType":"YulAssignment","src":"1512:32:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1534:9:66","nodeType":"YulIdentifier","src":"1534:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"1521:12:66","nodeType":"YulIdentifier","src":"1521:12:66"},"nativeSrc":"1521:23:66","nodeType":"YulFunctionCall","src":"1521:23:66"},"variableNames":[{"name":"value","nativeSrc":"1512:5:66","nodeType":"YulIdentifier","src":"1512:5:66"}]},{"nativeSrc":"1553:15:66","nodeType":"YulAssignment","src":"1553:15:66","value":{"name":"value","nativeSrc":"1563:5:66","nodeType":"YulIdentifier","src":"1563:5:66"},"variableNames":[{"name":"value0","nativeSrc":"1553:6:66","nodeType":"YulIdentifier","src":"1553:6:66"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"1348:226:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1384:9:66","nodeType":"YulTypedName","src":"1384:9:66","type":""},{"name":"dataEnd","nativeSrc":"1395:7:66","nodeType":"YulTypedName","src":"1395:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1407:6:66","nodeType":"YulTypedName","src":"1407:6:66","type":""}],"src":"1348:226:66"},{"body":{"nativeSrc":"1680:102:66","nodeType":"YulBlock","src":"1680:102:66","statements":[{"nativeSrc":"1690:26:66","nodeType":"YulAssignment","src":"1690:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1702:9:66","nodeType":"YulIdentifier","src":"1702:9:66"},{"kind":"number","nativeSrc":"1713:2:66","nodeType":"YulLiteral","src":"1713:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1698:3:66","nodeType":"YulIdentifier","src":"1698:3:66"},"nativeSrc":"1698:18:66","nodeType":"YulFunctionCall","src":"1698:18:66"},"variableNames":[{"name":"tail","nativeSrc":"1690:4:66","nodeType":"YulIdentifier","src":"1690:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1732:9:66","nodeType":"YulIdentifier","src":"1732:9:66"},{"arguments":[{"name":"value0","nativeSrc":"1747:6:66","nodeType":"YulIdentifier","src":"1747:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1763:3:66","nodeType":"YulLiteral","src":"1763:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"1768:1:66","nodeType":"YulLiteral","src":"1768:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1759:3:66","nodeType":"YulIdentifier","src":"1759:3:66"},"nativeSrc":"1759:11:66","nodeType":"YulFunctionCall","src":"1759:11:66"},{"kind":"number","nativeSrc":"1772:1:66","nodeType":"YulLiteral","src":"1772:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1755:3:66","nodeType":"YulIdentifier","src":"1755:3:66"},"nativeSrc":"1755:19:66","nodeType":"YulFunctionCall","src":"1755:19:66"}],"functionName":{"name":"and","nativeSrc":"1743:3:66","nodeType":"YulIdentifier","src":"1743:3:66"},"nativeSrc":"1743:32:66","nodeType":"YulFunctionCall","src":"1743:32:66"}],"functionName":{"name":"mstore","nativeSrc":"1725:6:66","nodeType":"YulIdentifier","src":"1725:6:66"},"nativeSrc":"1725:51:66","nodeType":"YulFunctionCall","src":"1725:51:66"},"nativeSrc":"1725:51:66","nodeType":"YulExpressionStatement","src":"1725:51:66"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1579:203:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1649:9:66","nodeType":"YulTypedName","src":"1649:9:66","type":""},{"name":"value0","nativeSrc":"1660:6:66","nodeType":"YulTypedName","src":"1660:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1671:4:66","nodeType":"YulTypedName","src":"1671:4:66","type":""}],"src":"1579:203:66"},{"body":{"nativeSrc":"1836:124:66","nodeType":"YulBlock","src":"1836:124:66","statements":[{"nativeSrc":"1846:29:66","nodeType":"YulAssignment","src":"1846:29:66","value":{"arguments":[{"name":"offset","nativeSrc":"1868:6:66","nodeType":"YulIdentifier","src":"1868:6:66"}],"functionName":{"name":"calldataload","nativeSrc":"1855:12:66","nodeType":"YulIdentifier","src":"1855:12:66"},"nativeSrc":"1855:20:66","nodeType":"YulFunctionCall","src":"1855:20:66"},"variableNames":[{"name":"value","nativeSrc":"1846:5:66","nodeType":"YulIdentifier","src":"1846:5:66"}]},{"body":{"nativeSrc":"1938:16:66","nodeType":"YulBlock","src":"1938:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1947:1:66","nodeType":"YulLiteral","src":"1947:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1950:1:66","nodeType":"YulLiteral","src":"1950:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1940:6:66","nodeType":"YulIdentifier","src":"1940:6:66"},"nativeSrc":"1940:12:66","nodeType":"YulFunctionCall","src":"1940:12:66"},"nativeSrc":"1940:12:66","nodeType":"YulExpressionStatement","src":"1940:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1897:5:66","nodeType":"YulIdentifier","src":"1897:5:66"},{"arguments":[{"name":"value","nativeSrc":"1908:5:66","nodeType":"YulIdentifier","src":"1908:5:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1923:3:66","nodeType":"YulLiteral","src":"1923:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"1928:1:66","nodeType":"YulLiteral","src":"1928:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1919:3:66","nodeType":"YulIdentifier","src":"1919:3:66"},"nativeSrc":"1919:11:66","nodeType":"YulFunctionCall","src":"1919:11:66"},{"kind":"number","nativeSrc":"1932:1:66","nodeType":"YulLiteral","src":"1932:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1915:3:66","nodeType":"YulIdentifier","src":"1915:3:66"},"nativeSrc":"1915:19:66","nodeType":"YulFunctionCall","src":"1915:19:66"}],"functionName":{"name":"and","nativeSrc":"1904:3:66","nodeType":"YulIdentifier","src":"1904:3:66"},"nativeSrc":"1904:31:66","nodeType":"YulFunctionCall","src":"1904:31:66"}],"functionName":{"name":"eq","nativeSrc":"1894:2:66","nodeType":"YulIdentifier","src":"1894:2:66"},"nativeSrc":"1894:42:66","nodeType":"YulFunctionCall","src":"1894:42:66"}],"functionName":{"name":"iszero","nativeSrc":"1887:6:66","nodeType":"YulIdentifier","src":"1887:6:66"},"nativeSrc":"1887:50:66","nodeType":"YulFunctionCall","src":"1887:50:66"},"nativeSrc":"1884:70:66","nodeType":"YulIf","src":"1884:70:66"}]},"name":"abi_decode_address","nativeSrc":"1787:173:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1815:6:66","nodeType":"YulTypedName","src":"1815:6:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1826:5:66","nodeType":"YulTypedName","src":"1826:5:66","type":""}],"src":"1787:173:66"},{"body":{"nativeSrc":"2052:213:66","nodeType":"YulBlock","src":"2052:213:66","statements":[{"body":{"nativeSrc":"2098:16:66","nodeType":"YulBlock","src":"2098:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2107:1:66","nodeType":"YulLiteral","src":"2107:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"2110:1:66","nodeType":"YulLiteral","src":"2110:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2100:6:66","nodeType":"YulIdentifier","src":"2100:6:66"},"nativeSrc":"2100:12:66","nodeType":"YulFunctionCall","src":"2100:12:66"},"nativeSrc":"2100:12:66","nodeType":"YulExpressionStatement","src":"2100:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2073:7:66","nodeType":"YulIdentifier","src":"2073:7:66"},{"name":"headStart","nativeSrc":"2082:9:66","nodeType":"YulIdentifier","src":"2082:9:66"}],"functionName":{"name":"sub","nativeSrc":"2069:3:66","nodeType":"YulIdentifier","src":"2069:3:66"},"nativeSrc":"2069:23:66","nodeType":"YulFunctionCall","src":"2069:23:66"},{"kind":"number","nativeSrc":"2094:2:66","nodeType":"YulLiteral","src":"2094:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2065:3:66","nodeType":"YulIdentifier","src":"2065:3:66"},"nativeSrc":"2065:32:66","nodeType":"YulFunctionCall","src":"2065:32:66"},"nativeSrc":"2062:52:66","nodeType":"YulIf","src":"2062:52:66"},{"nativeSrc":"2123:39:66","nodeType":"YulAssignment","src":"2123:39:66","value":{"arguments":[{"name":"headStart","nativeSrc":"2152:9:66","nodeType":"YulIdentifier","src":"2152:9:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2133:18:66","nodeType":"YulIdentifier","src":"2133:18:66"},"nativeSrc":"2133:29:66","nodeType":"YulFunctionCall","src":"2133:29:66"},"variableNames":[{"name":"value0","nativeSrc":"2123:6:66","nodeType":"YulIdentifier","src":"2123:6:66"}]},{"nativeSrc":"2171:14:66","nodeType":"YulVariableDeclaration","src":"2171:14:66","value":{"kind":"number","nativeSrc":"2184:1:66","nodeType":"YulLiteral","src":"2184:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2175:5:66","nodeType":"YulTypedName","src":"2175:5:66","type":""}]},{"nativeSrc":"2194:41:66","nodeType":"YulAssignment","src":"2194:41:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2220:9:66","nodeType":"YulIdentifier","src":"2220:9:66"},{"kind":"number","nativeSrc":"2231:2:66","nodeType":"YulLiteral","src":"2231:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2216:3:66","nodeType":"YulIdentifier","src":"2216:3:66"},"nativeSrc":"2216:18:66","nodeType":"YulFunctionCall","src":"2216:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"2203:12:66","nodeType":"YulIdentifier","src":"2203:12:66"},"nativeSrc":"2203:32:66","nodeType":"YulFunctionCall","src":"2203:32:66"},"variableNames":[{"name":"value","nativeSrc":"2194:5:66","nodeType":"YulIdentifier","src":"2194:5:66"}]},{"nativeSrc":"2244:15:66","nodeType":"YulAssignment","src":"2244:15:66","value":{"name":"value","nativeSrc":"2254:5:66","nodeType":"YulIdentifier","src":"2254:5:66"},"variableNames":[{"name":"value1","nativeSrc":"2244:6:66","nodeType":"YulIdentifier","src":"2244:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1965:300:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2010:9:66","nodeType":"YulTypedName","src":"2010:9:66","type":""},{"name":"dataEnd","nativeSrc":"2021:7:66","nodeType":"YulTypedName","src":"2021:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2033:6:66","nodeType":"YulTypedName","src":"2033:6:66","type":""},{"name":"value1","nativeSrc":"2041:6:66","nodeType":"YulTypedName","src":"2041:6:66","type":""}],"src":"1965:300:66"},{"body":{"nativeSrc":"2371:76:66","nodeType":"YulBlock","src":"2371:76:66","statements":[{"nativeSrc":"2381:26:66","nodeType":"YulAssignment","src":"2381:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"2393:9:66","nodeType":"YulIdentifier","src":"2393:9:66"},{"kind":"number","nativeSrc":"2404:2:66","nodeType":"YulLiteral","src":"2404:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2389:3:66","nodeType":"YulIdentifier","src":"2389:3:66"},"nativeSrc":"2389:18:66","nodeType":"YulFunctionCall","src":"2389:18:66"},"variableNames":[{"name":"tail","nativeSrc":"2381:4:66","nodeType":"YulIdentifier","src":"2381:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2423:9:66","nodeType":"YulIdentifier","src":"2423:9:66"},{"name":"value0","nativeSrc":"2434:6:66","nodeType":"YulIdentifier","src":"2434:6:66"}],"functionName":{"name":"mstore","nativeSrc":"2416:6:66","nodeType":"YulIdentifier","src":"2416:6:66"},"nativeSrc":"2416:25:66","nodeType":"YulFunctionCall","src":"2416:25:66"},"nativeSrc":"2416:25:66","nodeType":"YulExpressionStatement","src":"2416:25:66"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2270:177:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2340:9:66","nodeType":"YulTypedName","src":"2340:9:66","type":""},{"name":"value0","nativeSrc":"2351:6:66","nodeType":"YulTypedName","src":"2351:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2362:4:66","nodeType":"YulTypedName","src":"2362:4:66","type":""}],"src":"2270:177:66"},{"body":{"nativeSrc":"2556:270:66","nodeType":"YulBlock","src":"2556:270:66","statements":[{"body":{"nativeSrc":"2602:16:66","nodeType":"YulBlock","src":"2602:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2611:1:66","nodeType":"YulLiteral","src":"2611:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"2614:1:66","nodeType":"YulLiteral","src":"2614:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2604:6:66","nodeType":"YulIdentifier","src":"2604:6:66"},"nativeSrc":"2604:12:66","nodeType":"YulFunctionCall","src":"2604:12:66"},"nativeSrc":"2604:12:66","nodeType":"YulExpressionStatement","src":"2604:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2577:7:66","nodeType":"YulIdentifier","src":"2577:7:66"},{"name":"headStart","nativeSrc":"2586:9:66","nodeType":"YulIdentifier","src":"2586:9:66"}],"functionName":{"name":"sub","nativeSrc":"2573:3:66","nodeType":"YulIdentifier","src":"2573:3:66"},"nativeSrc":"2573:23:66","nodeType":"YulFunctionCall","src":"2573:23:66"},{"kind":"number","nativeSrc":"2598:2:66","nodeType":"YulLiteral","src":"2598:2:66","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"2569:3:66","nodeType":"YulIdentifier","src":"2569:3:66"},"nativeSrc":"2569:32:66","nodeType":"YulFunctionCall","src":"2569:32:66"},"nativeSrc":"2566:52:66","nodeType":"YulIf","src":"2566:52:66"},{"nativeSrc":"2627:39:66","nodeType":"YulAssignment","src":"2627:39:66","value":{"arguments":[{"name":"headStart","nativeSrc":"2656:9:66","nodeType":"YulIdentifier","src":"2656:9:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2637:18:66","nodeType":"YulIdentifier","src":"2637:18:66"},"nativeSrc":"2637:29:66","nodeType":"YulFunctionCall","src":"2637:29:66"},"variableNames":[{"name":"value0","nativeSrc":"2627:6:66","nodeType":"YulIdentifier","src":"2627:6:66"}]},{"nativeSrc":"2675:48:66","nodeType":"YulAssignment","src":"2675:48:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2708:9:66","nodeType":"YulIdentifier","src":"2708:9:66"},{"kind":"number","nativeSrc":"2719:2:66","nodeType":"YulLiteral","src":"2719:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2704:3:66","nodeType":"YulIdentifier","src":"2704:3:66"},"nativeSrc":"2704:18:66","nodeType":"YulFunctionCall","src":"2704:18:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2685:18:66","nodeType":"YulIdentifier","src":"2685:18:66"},"nativeSrc":"2685:38:66","nodeType":"YulFunctionCall","src":"2685:38:66"},"variableNames":[{"name":"value1","nativeSrc":"2675:6:66","nodeType":"YulIdentifier","src":"2675:6:66"}]},{"nativeSrc":"2732:14:66","nodeType":"YulVariableDeclaration","src":"2732:14:66","value":{"kind":"number","nativeSrc":"2745:1:66","nodeType":"YulLiteral","src":"2745:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2736:5:66","nodeType":"YulTypedName","src":"2736:5:66","type":""}]},{"nativeSrc":"2755:41:66","nodeType":"YulAssignment","src":"2755:41:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2781:9:66","nodeType":"YulIdentifier","src":"2781:9:66"},{"kind":"number","nativeSrc":"2792:2:66","nodeType":"YulLiteral","src":"2792:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2777:3:66","nodeType":"YulIdentifier","src":"2777:3:66"},"nativeSrc":"2777:18:66","nodeType":"YulFunctionCall","src":"2777:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"2764:12:66","nodeType":"YulIdentifier","src":"2764:12:66"},"nativeSrc":"2764:32:66","nodeType":"YulFunctionCall","src":"2764:32:66"},"variableNames":[{"name":"value","nativeSrc":"2755:5:66","nodeType":"YulIdentifier","src":"2755:5:66"}]},{"nativeSrc":"2805:15:66","nodeType":"YulAssignment","src":"2805:15:66","value":{"name":"value","nativeSrc":"2815:5:66","nodeType":"YulIdentifier","src":"2815:5:66"},"variableNames":[{"name":"value2","nativeSrc":"2805:6:66","nodeType":"YulIdentifier","src":"2805:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"2452:374:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2506:9:66","nodeType":"YulTypedName","src":"2506:9:66","type":""},{"name":"dataEnd","nativeSrc":"2517:7:66","nodeType":"YulTypedName","src":"2517:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2529:6:66","nodeType":"YulTypedName","src":"2529:6:66","type":""},{"name":"value1","nativeSrc":"2537:6:66","nodeType":"YulTypedName","src":"2537:6:66","type":""},{"name":"value2","nativeSrc":"2545:6:66","nodeType":"YulTypedName","src":"2545:6:66","type":""}],"src":"2452:374:66"},{"body":{"nativeSrc":"2863:95:66","nodeType":"YulBlock","src":"2863:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2880:1:66","nodeType":"YulLiteral","src":"2880:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"2887:3:66","nodeType":"YulLiteral","src":"2887:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"2892:10:66","nodeType":"YulLiteral","src":"2892:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"2883:3:66","nodeType":"YulIdentifier","src":"2883:3:66"},"nativeSrc":"2883:20:66","nodeType":"YulFunctionCall","src":"2883:20:66"}],"functionName":{"name":"mstore","nativeSrc":"2873:6:66","nodeType":"YulIdentifier","src":"2873:6:66"},"nativeSrc":"2873:31:66","nodeType":"YulFunctionCall","src":"2873:31:66"},"nativeSrc":"2873:31:66","nodeType":"YulExpressionStatement","src":"2873:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2920:1:66","nodeType":"YulLiteral","src":"2920:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"2923:4:66","nodeType":"YulLiteral","src":"2923:4:66","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"2913:6:66","nodeType":"YulIdentifier","src":"2913:6:66"},"nativeSrc":"2913:15:66","nodeType":"YulFunctionCall","src":"2913:15:66"},"nativeSrc":"2913:15:66","nodeType":"YulExpressionStatement","src":"2913:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2944:1:66","nodeType":"YulLiteral","src":"2944:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"2947:4:66","nodeType":"YulLiteral","src":"2947:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"2937:6:66","nodeType":"YulIdentifier","src":"2937:6:66"},"nativeSrc":"2937:15:66","nodeType":"YulFunctionCall","src":"2937:15:66"},"nativeSrc":"2937:15:66","nodeType":"YulExpressionStatement","src":"2937:15:66"}]},"name":"panic_error_0x21","nativeSrc":"2831:127:66","nodeType":"YulFunctionDefinition","src":"2831:127:66"},{"body":{"nativeSrc":"3011:186:66","nodeType":"YulBlock","src":"3011:186:66","statements":[{"body":{"nativeSrc":"3053:111:66","nodeType":"YulBlock","src":"3053:111:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3074:1:66","nodeType":"YulLiteral","src":"3074:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3081:3:66","nodeType":"YulLiteral","src":"3081:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"3086:10:66","nodeType":"YulLiteral","src":"3086:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3077:3:66","nodeType":"YulIdentifier","src":"3077:3:66"},"nativeSrc":"3077:20:66","nodeType":"YulFunctionCall","src":"3077:20:66"}],"functionName":{"name":"mstore","nativeSrc":"3067:6:66","nodeType":"YulIdentifier","src":"3067:6:66"},"nativeSrc":"3067:31:66","nodeType":"YulFunctionCall","src":"3067:31:66"},"nativeSrc":"3067:31:66","nodeType":"YulExpressionStatement","src":"3067:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3118:1:66","nodeType":"YulLiteral","src":"3118:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"3121:4:66","nodeType":"YulLiteral","src":"3121:4:66","type":"","value":"0x21"}],"functionName":{"name":"mstore","nativeSrc":"3111:6:66","nodeType":"YulIdentifier","src":"3111:6:66"},"nativeSrc":"3111:15:66","nodeType":"YulFunctionCall","src":"3111:15:66"},"nativeSrc":"3111:15:66","nodeType":"YulExpressionStatement","src":"3111:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3146:1:66","nodeType":"YulLiteral","src":"3146:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"3149:4:66","nodeType":"YulLiteral","src":"3149:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3139:6:66","nodeType":"YulIdentifier","src":"3139:6:66"},"nativeSrc":"3139:15:66","nodeType":"YulFunctionCall","src":"3139:15:66"},"nativeSrc":"3139:15:66","nodeType":"YulExpressionStatement","src":"3139:15:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3034:5:66","nodeType":"YulIdentifier","src":"3034:5:66"},{"kind":"number","nativeSrc":"3041:1:66","nodeType":"YulLiteral","src":"3041:1:66","type":"","value":"4"}],"functionName":{"name":"lt","nativeSrc":"3031:2:66","nodeType":"YulIdentifier","src":"3031:2:66"},"nativeSrc":"3031:12:66","nodeType":"YulFunctionCall","src":"3031:12:66"}],"functionName":{"name":"iszero","nativeSrc":"3024:6:66","nodeType":"YulIdentifier","src":"3024:6:66"},"nativeSrc":"3024:20:66","nodeType":"YulFunctionCall","src":"3024:20:66"},"nativeSrc":"3021:143:66","nodeType":"YulIf","src":"3021:143:66"},{"expression":{"arguments":[{"name":"pos","nativeSrc":"3180:3:66","nodeType":"YulIdentifier","src":"3180:3:66"},{"name":"value","nativeSrc":"3185:5:66","nodeType":"YulIdentifier","src":"3185:5:66"}],"functionName":{"name":"mstore","nativeSrc":"3173:6:66","nodeType":"YulIdentifier","src":"3173:6:66"},"nativeSrc":"3173:18:66","nodeType":"YulFunctionCall","src":"3173:18:66"},"nativeSrc":"3173:18:66","nodeType":"YulExpressionStatement","src":"3173:18:66"}]},"name":"abi_encode_enum_IPType","nativeSrc":"2963:234:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2995:5:66","nodeType":"YulTypedName","src":"2995:5:66","type":""},{"name":"pos","nativeSrc":"3002:3:66","nodeType":"YulTypedName","src":"3002:3:66","type":""}],"src":"2963:234:66"},{"body":{"nativeSrc":"3353:589:66","nodeType":"YulBlock","src":"3353:589:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3370:9:66","nodeType":"YulIdentifier","src":"3370:9:66"},{"kind":"number","nativeSrc":"3381:2:66","nodeType":"YulLiteral","src":"3381:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"3363:6:66","nodeType":"YulIdentifier","src":"3363:6:66"},"nativeSrc":"3363:21:66","nodeType":"YulFunctionCall","src":"3363:21:66"},"nativeSrc":"3363:21:66","nodeType":"YulExpressionStatement","src":"3363:21:66"},{"nativeSrc":"3393:33:66","nodeType":"YulVariableDeclaration","src":"3393:33:66","value":{"arguments":[{"name":"value0","nativeSrc":"3419:6:66","nodeType":"YulIdentifier","src":"3419:6:66"}],"functionName":{"name":"mload","nativeSrc":"3413:5:66","nodeType":"YulIdentifier","src":"3413:5:66"},"nativeSrc":"3413:13:66","nodeType":"YulFunctionCall","src":"3413:13:66"},"variables":[{"name":"memberValue0","nativeSrc":"3397:12:66","nodeType":"YulTypedName","src":"3397:12:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3446:9:66","nodeType":"YulIdentifier","src":"3446:9:66"},{"kind":"number","nativeSrc":"3457:2:66","nodeType":"YulLiteral","src":"3457:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3442:3:66","nodeType":"YulIdentifier","src":"3442:3:66"},"nativeSrc":"3442:18:66","nodeType":"YulFunctionCall","src":"3442:18:66"},{"kind":"number","nativeSrc":"3462:4:66","nodeType":"YulLiteral","src":"3462:4:66","type":"","value":"0x80"}],"functionName":{"name":"mstore","nativeSrc":"3435:6:66","nodeType":"YulIdentifier","src":"3435:6:66"},"nativeSrc":"3435:32:66","nodeType":"YulFunctionCall","src":"3435:32:66"},"nativeSrc":"3435:32:66","nodeType":"YulExpressionStatement","src":"3435:32:66"},{"nativeSrc":"3476:66:66","nodeType":"YulVariableDeclaration","src":"3476:66:66","value":{"arguments":[{"name":"memberValue0","nativeSrc":"3508:12:66","nodeType":"YulIdentifier","src":"3508:12:66"},{"arguments":[{"name":"headStart","nativeSrc":"3526:9:66","nodeType":"YulIdentifier","src":"3526:9:66"},{"kind":"number","nativeSrc":"3537:3:66","nodeType":"YulLiteral","src":"3537:3:66","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"3522:3:66","nodeType":"YulIdentifier","src":"3522:3:66"},"nativeSrc":"3522:19:66","nodeType":"YulFunctionCall","src":"3522:19:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"3490:17:66","nodeType":"YulIdentifier","src":"3490:17:66"},"nativeSrc":"3490:52:66","nodeType":"YulFunctionCall","src":"3490:52:66"},"variables":[{"name":"tail_1","nativeSrc":"3480:6:66","nodeType":"YulTypedName","src":"3480:6:66","type":""}]},{"nativeSrc":"3551:44:66","nodeType":"YulVariableDeclaration","src":"3551:44:66","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"3583:6:66","nodeType":"YulIdentifier","src":"3583:6:66"},{"kind":"number","nativeSrc":"3591:2:66","nodeType":"YulLiteral","src":"3591:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3579:3:66","nodeType":"YulIdentifier","src":"3579:3:66"},"nativeSrc":"3579:15:66","nodeType":"YulFunctionCall","src":"3579:15:66"}],"functionName":{"name":"mload","nativeSrc":"3573:5:66","nodeType":"YulIdentifier","src":"3573:5:66"},"nativeSrc":"3573:22:66","nodeType":"YulFunctionCall","src":"3573:22:66"},"variables":[{"name":"memberValue0_1","nativeSrc":"3555:14:66","nodeType":"YulTypedName","src":"3555:14:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3615:9:66","nodeType":"YulIdentifier","src":"3615:9:66"},{"kind":"number","nativeSrc":"3626:2:66","nodeType":"YulLiteral","src":"3626:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3611:3:66","nodeType":"YulIdentifier","src":"3611:3:66"},"nativeSrc":"3611:18:66","nodeType":"YulFunctionCall","src":"3611:18:66"},{"arguments":[{"arguments":[{"name":"tail_1","nativeSrc":"3639:6:66","nodeType":"YulIdentifier","src":"3639:6:66"},{"name":"headStart","nativeSrc":"3647:9:66","nodeType":"YulIdentifier","src":"3647:9:66"}],"functionName":{"name":"sub","nativeSrc":"3635:3:66","nodeType":"YulIdentifier","src":"3635:3:66"},"nativeSrc":"3635:22:66","nodeType":"YulFunctionCall","src":"3635:22:66"},{"arguments":[{"kind":"number","nativeSrc":"3663:2:66","nodeType":"YulLiteral","src":"3663:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3659:3:66","nodeType":"YulIdentifier","src":"3659:3:66"},"nativeSrc":"3659:7:66","nodeType":"YulFunctionCall","src":"3659:7:66"}],"functionName":{"name":"add","nativeSrc":"3631:3:66","nodeType":"YulIdentifier","src":"3631:3:66"},"nativeSrc":"3631:36:66","nodeType":"YulFunctionCall","src":"3631:36:66"}],"functionName":{"name":"mstore","nativeSrc":"3604:6:66","nodeType":"YulIdentifier","src":"3604:6:66"},"nativeSrc":"3604:64:66","nodeType":"YulFunctionCall","src":"3604:64:66"},"nativeSrc":"3604:64:66","nodeType":"YulExpressionStatement","src":"3604:64:66"},{"nativeSrc":"3677:55:66","nodeType":"YulVariableDeclaration","src":"3677:55:66","value":{"arguments":[{"name":"memberValue0_1","nativeSrc":"3709:14:66","nodeType":"YulIdentifier","src":"3709:14:66"},{"name":"tail_1","nativeSrc":"3725:6:66","nodeType":"YulIdentifier","src":"3725:6:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"3691:17:66","nodeType":"YulIdentifier","src":"3691:17:66"},"nativeSrc":"3691:41:66","nodeType":"YulFunctionCall","src":"3691:41:66"},"variables":[{"name":"tail_2","nativeSrc":"3681:6:66","nodeType":"YulTypedName","src":"3681:6:66","type":""}]},{"nativeSrc":"3741:44:66","nodeType":"YulVariableDeclaration","src":"3741:44:66","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"3773:6:66","nodeType":"YulIdentifier","src":"3773:6:66"},{"kind":"number","nativeSrc":"3781:2:66","nodeType":"YulLiteral","src":"3781:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3769:3:66","nodeType":"YulIdentifier","src":"3769:3:66"},"nativeSrc":"3769:15:66","nodeType":"YulFunctionCall","src":"3769:15:66"}],"functionName":{"name":"mload","nativeSrc":"3763:5:66","nodeType":"YulIdentifier","src":"3763:5:66"},"nativeSrc":"3763:22:66","nodeType":"YulFunctionCall","src":"3763:22:66"},"variables":[{"name":"memberValue0_2","nativeSrc":"3745:14:66","nodeType":"YulTypedName","src":"3745:14:66","type":""}]},{"expression":{"arguments":[{"name":"memberValue0_2","nativeSrc":"3817:14:66","nodeType":"YulIdentifier","src":"3817:14:66"},{"arguments":[{"name":"headStart","nativeSrc":"3837:9:66","nodeType":"YulIdentifier","src":"3837:9:66"},{"kind":"number","nativeSrc":"3848:2:66","nodeType":"YulLiteral","src":"3848:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3833:3:66","nodeType":"YulIdentifier","src":"3833:3:66"},"nativeSrc":"3833:18:66","nodeType":"YulFunctionCall","src":"3833:18:66"}],"functionName":{"name":"abi_encode_enum_IPType","nativeSrc":"3794:22:66","nodeType":"YulIdentifier","src":"3794:22:66"},"nativeSrc":"3794:58:66","nodeType":"YulFunctionCall","src":"3794:58:66"},"nativeSrc":"3794:58:66","nodeType":"YulExpressionStatement","src":"3794:58:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3872:9:66","nodeType":"YulIdentifier","src":"3872:9:66"},{"kind":"number","nativeSrc":"3883:4:66","nodeType":"YulLiteral","src":"3883:4:66","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"3868:3:66","nodeType":"YulIdentifier","src":"3868:3:66"},"nativeSrc":"3868:20:66","nodeType":"YulFunctionCall","src":"3868:20:66"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"3900:6:66","nodeType":"YulIdentifier","src":"3900:6:66"},{"kind":"number","nativeSrc":"3908:2:66","nodeType":"YulLiteral","src":"3908:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3896:3:66","nodeType":"YulIdentifier","src":"3896:3:66"},"nativeSrc":"3896:15:66","nodeType":"YulFunctionCall","src":"3896:15:66"}],"functionName":{"name":"mload","nativeSrc":"3890:5:66","nodeType":"YulIdentifier","src":"3890:5:66"},"nativeSrc":"3890:22:66","nodeType":"YulFunctionCall","src":"3890:22:66"}],"functionName":{"name":"mstore","nativeSrc":"3861:6:66","nodeType":"YulIdentifier","src":"3861:6:66"},"nativeSrc":"3861:52:66","nodeType":"YulFunctionCall","src":"3861:52:66"},"nativeSrc":"3861:52:66","nodeType":"YulExpressionStatement","src":"3861:52:66"},{"nativeSrc":"3922:14:66","nodeType":"YulAssignment","src":"3922:14:66","value":{"name":"tail_2","nativeSrc":"3930:6:66","nodeType":"YulIdentifier","src":"3930:6:66"},"variableNames":[{"name":"tail","nativeSrc":"3922:4:66","nodeType":"YulIdentifier","src":"3922:4:66"}]}]},"name":"abi_encode_tuple_t_struct$_IPInfo_$12757_memory_ptr__to_t_struct$_IPInfo_$12757_memory_ptr__fromStack_reversed","nativeSrc":"3202:740:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3322:9:66","nodeType":"YulTypedName","src":"3322:9:66","type":""},{"name":"value0","nativeSrc":"3333:6:66","nodeType":"YulTypedName","src":"3333:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3344:4:66","nodeType":"YulTypedName","src":"3344:4:66","type":""}],"src":"3202:740:66"},{"body":{"nativeSrc":"4017:116:66","nodeType":"YulBlock","src":"4017:116:66","statements":[{"body":{"nativeSrc":"4063:16:66","nodeType":"YulBlock","src":"4063:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4072:1:66","nodeType":"YulLiteral","src":"4072:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4075:1:66","nodeType":"YulLiteral","src":"4075:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4065:6:66","nodeType":"YulIdentifier","src":"4065:6:66"},"nativeSrc":"4065:12:66","nodeType":"YulFunctionCall","src":"4065:12:66"},"nativeSrc":"4065:12:66","nodeType":"YulExpressionStatement","src":"4065:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4038:7:66","nodeType":"YulIdentifier","src":"4038:7:66"},{"name":"headStart","nativeSrc":"4047:9:66","nodeType":"YulIdentifier","src":"4047:9:66"}],"functionName":{"name":"sub","nativeSrc":"4034:3:66","nodeType":"YulIdentifier","src":"4034:3:66"},"nativeSrc":"4034:23:66","nodeType":"YulFunctionCall","src":"4034:23:66"},{"kind":"number","nativeSrc":"4059:2:66","nodeType":"YulLiteral","src":"4059:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4030:3:66","nodeType":"YulIdentifier","src":"4030:3:66"},"nativeSrc":"4030:32:66","nodeType":"YulFunctionCall","src":"4030:32:66"},"nativeSrc":"4027:52:66","nodeType":"YulIf","src":"4027:52:66"},{"nativeSrc":"4088:39:66","nodeType":"YulAssignment","src":"4088:39:66","value":{"arguments":[{"name":"headStart","nativeSrc":"4117:9:66","nodeType":"YulIdentifier","src":"4117:9:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"4098:18:66","nodeType":"YulIdentifier","src":"4098:18:66"},"nativeSrc":"4098:29:66","nodeType":"YulFunctionCall","src":"4098:29:66"},"variableNames":[{"name":"value0","nativeSrc":"4088:6:66","nodeType":"YulIdentifier","src":"4088:6:66"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"3947:186:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3983:9:66","nodeType":"YulTypedName","src":"3983:9:66","type":""},{"name":"dataEnd","nativeSrc":"3994:7:66","nodeType":"YulTypedName","src":"3994:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4006:6:66","nodeType":"YulTypedName","src":"4006:6:66","type":""}],"src":"3947:186:66"},{"body":{"nativeSrc":"4289:460:66","nodeType":"YulBlock","src":"4289:460:66","statements":[{"nativeSrc":"4299:32:66","nodeType":"YulVariableDeclaration","src":"4299:32:66","value":{"arguments":[{"name":"headStart","nativeSrc":"4317:9:66","nodeType":"YulIdentifier","src":"4317:9:66"},{"kind":"number","nativeSrc":"4328:2:66","nodeType":"YulLiteral","src":"4328:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4313:3:66","nodeType":"YulIdentifier","src":"4313:3:66"},"nativeSrc":"4313:18:66","nodeType":"YulFunctionCall","src":"4313:18:66"},"variables":[{"name":"tail_1","nativeSrc":"4303:6:66","nodeType":"YulTypedName","src":"4303:6:66","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4347:9:66","nodeType":"YulIdentifier","src":"4347:9:66"},{"kind":"number","nativeSrc":"4358:2:66","nodeType":"YulLiteral","src":"4358:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"4340:6:66","nodeType":"YulIdentifier","src":"4340:6:66"},"nativeSrc":"4340:21:66","nodeType":"YulFunctionCall","src":"4340:21:66"},"nativeSrc":"4340:21:66","nodeType":"YulExpressionStatement","src":"4340:21:66"},{"nativeSrc":"4370:17:66","nodeType":"YulVariableDeclaration","src":"4370:17:66","value":{"name":"tail_1","nativeSrc":"4381:6:66","nodeType":"YulIdentifier","src":"4381:6:66"},"variables":[{"name":"pos","nativeSrc":"4374:3:66","nodeType":"YulTypedName","src":"4374:3:66","type":""}]},{"nativeSrc":"4396:27:66","nodeType":"YulVariableDeclaration","src":"4396:27:66","value":{"arguments":[{"name":"value0","nativeSrc":"4416:6:66","nodeType":"YulIdentifier","src":"4416:6:66"}],"functionName":{"name":"mload","nativeSrc":"4410:5:66","nodeType":"YulIdentifier","src":"4410:5:66"},"nativeSrc":"4410:13:66","nodeType":"YulFunctionCall","src":"4410:13:66"},"variables":[{"name":"length","nativeSrc":"4400:6:66","nodeType":"YulTypedName","src":"4400:6:66","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"4439:6:66","nodeType":"YulIdentifier","src":"4439:6:66"},{"name":"length","nativeSrc":"4447:6:66","nodeType":"YulIdentifier","src":"4447:6:66"}],"functionName":{"name":"mstore","nativeSrc":"4432:6:66","nodeType":"YulIdentifier","src":"4432:6:66"},"nativeSrc":"4432:22:66","nodeType":"YulFunctionCall","src":"4432:22:66"},"nativeSrc":"4432:22:66","nodeType":"YulExpressionStatement","src":"4432:22:66"},{"nativeSrc":"4463:25:66","nodeType":"YulAssignment","src":"4463:25:66","value":{"arguments":[{"name":"headStart","nativeSrc":"4474:9:66","nodeType":"YulIdentifier","src":"4474:9:66"},{"kind":"number","nativeSrc":"4485:2:66","nodeType":"YulLiteral","src":"4485:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4470:3:66","nodeType":"YulIdentifier","src":"4470:3:66"},"nativeSrc":"4470:18:66","nodeType":"YulFunctionCall","src":"4470:18:66"},"variableNames":[{"name":"pos","nativeSrc":"4463:3:66","nodeType":"YulIdentifier","src":"4463:3:66"}]},{"nativeSrc":"4497:29:66","nodeType":"YulVariableDeclaration","src":"4497:29:66","value":{"arguments":[{"name":"value0","nativeSrc":"4515:6:66","nodeType":"YulIdentifier","src":"4515:6:66"},{"kind":"number","nativeSrc":"4523:2:66","nodeType":"YulLiteral","src":"4523:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4511:3:66","nodeType":"YulIdentifier","src":"4511:3:66"},"nativeSrc":"4511:15:66","nodeType":"YulFunctionCall","src":"4511:15:66"},"variables":[{"name":"srcPtr","nativeSrc":"4501:6:66","nodeType":"YulTypedName","src":"4501:6:66","type":""}]},{"nativeSrc":"4535:10:66","nodeType":"YulVariableDeclaration","src":"4535:10:66","value":{"kind":"number","nativeSrc":"4544:1:66","nodeType":"YulLiteral","src":"4544:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"4539:1:66","nodeType":"YulTypedName","src":"4539:1:66","type":""}]},{"body":{"nativeSrc":"4603:120:66","nodeType":"YulBlock","src":"4603:120:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"4624:3:66","nodeType":"YulIdentifier","src":"4624:3:66"},{"arguments":[{"name":"srcPtr","nativeSrc":"4635:6:66","nodeType":"YulIdentifier","src":"4635:6:66"}],"functionName":{"name":"mload","nativeSrc":"4629:5:66","nodeType":"YulIdentifier","src":"4629:5:66"},"nativeSrc":"4629:13:66","nodeType":"YulFunctionCall","src":"4629:13:66"}],"functionName":{"name":"mstore","nativeSrc":"4617:6:66","nodeType":"YulIdentifier","src":"4617:6:66"},"nativeSrc":"4617:26:66","nodeType":"YulFunctionCall","src":"4617:26:66"},"nativeSrc":"4617:26:66","nodeType":"YulExpressionStatement","src":"4617:26:66"},{"nativeSrc":"4656:19:66","nodeType":"YulAssignment","src":"4656:19:66","value":{"arguments":[{"name":"pos","nativeSrc":"4667:3:66","nodeType":"YulIdentifier","src":"4667:3:66"},{"kind":"number","nativeSrc":"4672:2:66","nodeType":"YulLiteral","src":"4672:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4663:3:66","nodeType":"YulIdentifier","src":"4663:3:66"},"nativeSrc":"4663:12:66","nodeType":"YulFunctionCall","src":"4663:12:66"},"variableNames":[{"name":"pos","nativeSrc":"4656:3:66","nodeType":"YulIdentifier","src":"4656:3:66"}]},{"nativeSrc":"4688:25:66","nodeType":"YulAssignment","src":"4688:25:66","value":{"arguments":[{"name":"srcPtr","nativeSrc":"4702:6:66","nodeType":"YulIdentifier","src":"4702:6:66"},{"kind":"number","nativeSrc":"4710:2:66","nodeType":"YulLiteral","src":"4710:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4698:3:66","nodeType":"YulIdentifier","src":"4698:3:66"},"nativeSrc":"4698:15:66","nodeType":"YulFunctionCall","src":"4698:15:66"},"variableNames":[{"name":"srcPtr","nativeSrc":"4688:6:66","nodeType":"YulIdentifier","src":"4688:6:66"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"4565:1:66","nodeType":"YulIdentifier","src":"4565:1:66"},{"name":"length","nativeSrc":"4568:6:66","nodeType":"YulIdentifier","src":"4568:6:66"}],"functionName":{"name":"lt","nativeSrc":"4562:2:66","nodeType":"YulIdentifier","src":"4562:2:66"},"nativeSrc":"4562:13:66","nodeType":"YulFunctionCall","src":"4562:13:66"},"nativeSrc":"4554:169:66","nodeType":"YulForLoop","post":{"nativeSrc":"4576:18:66","nodeType":"YulBlock","src":"4576:18:66","statements":[{"nativeSrc":"4578:14:66","nodeType":"YulAssignment","src":"4578:14:66","value":{"arguments":[{"name":"i","nativeSrc":"4587:1:66","nodeType":"YulIdentifier","src":"4587:1:66"},{"kind":"number","nativeSrc":"4590:1:66","nodeType":"YulLiteral","src":"4590:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"4583:3:66","nodeType":"YulIdentifier","src":"4583:3:66"},"nativeSrc":"4583:9:66","nodeType":"YulFunctionCall","src":"4583:9:66"},"variableNames":[{"name":"i","nativeSrc":"4578:1:66","nodeType":"YulIdentifier","src":"4578:1:66"}]}]},"pre":{"nativeSrc":"4558:3:66","nodeType":"YulBlock","src":"4558:3:66","statements":[]},"src":"4554:169:66"},{"nativeSrc":"4732:11:66","nodeType":"YulAssignment","src":"4732:11:66","value":{"name":"pos","nativeSrc":"4740:3:66","nodeType":"YulIdentifier","src":"4740:3:66"},"variableNames":[{"name":"tail","nativeSrc":"4732:4:66","nodeType":"YulIdentifier","src":"4732:4:66"}]}]},"name":"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"4138:611:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4258:9:66","nodeType":"YulTypedName","src":"4258:9:66","type":""},{"name":"value0","nativeSrc":"4269:6:66","nodeType":"YulTypedName","src":"4269:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4280:4:66","nodeType":"YulTypedName","src":"4280:4:66","type":""}],"src":"4138:611:66"},{"body":{"nativeSrc":"4786:95:66","nodeType":"YulBlock","src":"4786:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4803:1:66","nodeType":"YulLiteral","src":"4803:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4810:3:66","nodeType":"YulLiteral","src":"4810:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"4815:10:66","nodeType":"YulLiteral","src":"4815:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4806:3:66","nodeType":"YulIdentifier","src":"4806:3:66"},"nativeSrc":"4806:20:66","nodeType":"YulFunctionCall","src":"4806:20:66"}],"functionName":{"name":"mstore","nativeSrc":"4796:6:66","nodeType":"YulIdentifier","src":"4796:6:66"},"nativeSrc":"4796:31:66","nodeType":"YulFunctionCall","src":"4796:31:66"},"nativeSrc":"4796:31:66","nodeType":"YulExpressionStatement","src":"4796:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4843:1:66","nodeType":"YulLiteral","src":"4843:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"4846:4:66","nodeType":"YulLiteral","src":"4846:4:66","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"4836:6:66","nodeType":"YulIdentifier","src":"4836:6:66"},"nativeSrc":"4836:15:66","nodeType":"YulFunctionCall","src":"4836:15:66"},"nativeSrc":"4836:15:66","nodeType":"YulExpressionStatement","src":"4836:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4867:1:66","nodeType":"YulLiteral","src":"4867:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4870:4:66","nodeType":"YulLiteral","src":"4870:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4860:6:66","nodeType":"YulIdentifier","src":"4860:6:66"},"nativeSrc":"4860:15:66","nodeType":"YulFunctionCall","src":"4860:15:66"},"nativeSrc":"4860:15:66","nodeType":"YulExpressionStatement","src":"4860:15:66"}]},"name":"panic_error_0x41","nativeSrc":"4754:127:66","nodeType":"YulFunctionDefinition","src":"4754:127:66"},{"body":{"nativeSrc":"4961:641:66","nodeType":"YulBlock","src":"4961:641:66","statements":[{"nativeSrc":"4971:13:66","nodeType":"YulVariableDeclaration","src":"4971:13:66","value":{"kind":"number","nativeSrc":"4983:1:66","nodeType":"YulLiteral","src":"4983:1:66","type":"","value":"0"},"variables":[{"name":"size","nativeSrc":"4975:4:66","nodeType":"YulTypedName","src":"4975:4:66","type":""}]},{"body":{"nativeSrc":"5027:22:66","nodeType":"YulBlock","src":"5027:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"5029:16:66","nodeType":"YulIdentifier","src":"5029:16:66"},"nativeSrc":"5029:18:66","nodeType":"YulFunctionCall","src":"5029:18:66"},"nativeSrc":"5029:18:66","nodeType":"YulExpressionStatement","src":"5029:18:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"4999:6:66","nodeType":"YulIdentifier","src":"4999:6:66"},{"kind":"number","nativeSrc":"5007:18:66","nodeType":"YulLiteral","src":"5007:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4996:2:66","nodeType":"YulIdentifier","src":"4996:2:66"},"nativeSrc":"4996:30:66","nodeType":"YulFunctionCall","src":"4996:30:66"},"nativeSrc":"4993:56:66","nodeType":"YulIf","src":"4993:56:66"},{"nativeSrc":"5058:43:66","nodeType":"YulVariableDeclaration","src":"5058:43:66","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"5080:6:66","nodeType":"YulIdentifier","src":"5080:6:66"},{"kind":"number","nativeSrc":"5088:2:66","nodeType":"YulLiteral","src":"5088:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"5076:3:66","nodeType":"YulIdentifier","src":"5076:3:66"},"nativeSrc":"5076:15:66","nodeType":"YulFunctionCall","src":"5076:15:66"},{"arguments":[{"kind":"number","nativeSrc":"5097:2:66","nodeType":"YulLiteral","src":"5097:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"5093:3:66","nodeType":"YulIdentifier","src":"5093:3:66"},"nativeSrc":"5093:7:66","nodeType":"YulFunctionCall","src":"5093:7:66"}],"functionName":{"name":"and","nativeSrc":"5072:3:66","nodeType":"YulIdentifier","src":"5072:3:66"},"nativeSrc":"5072:29:66","nodeType":"YulFunctionCall","src":"5072:29:66"},"variables":[{"name":"result","nativeSrc":"5062:6:66","nodeType":"YulTypedName","src":"5062:6:66","type":""}]},{"nativeSrc":"5110:25:66","nodeType":"YulAssignment","src":"5110:25:66","value":{"arguments":[{"name":"result","nativeSrc":"5122:6:66","nodeType":"YulIdentifier","src":"5122:6:66"},{"kind":"number","nativeSrc":"5130:4:66","nodeType":"YulLiteral","src":"5130:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5118:3:66","nodeType":"YulIdentifier","src":"5118:3:66"},"nativeSrc":"5118:17:66","nodeType":"YulFunctionCall","src":"5118:17:66"},"variableNames":[{"name":"size","nativeSrc":"5110:4:66","nodeType":"YulIdentifier","src":"5110:4:66"}]},{"nativeSrc":"5144:15:66","nodeType":"YulVariableDeclaration","src":"5144:15:66","value":{"kind":"number","nativeSrc":"5158:1:66","nodeType":"YulLiteral","src":"5158:1:66","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"5148:6:66","nodeType":"YulTypedName","src":"5148:6:66","type":""}]},{"nativeSrc":"5168:19:66","nodeType":"YulAssignment","src":"5168:19:66","value":{"arguments":[{"kind":"number","nativeSrc":"5184:2:66","nodeType":"YulLiteral","src":"5184:2:66","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"5178:5:66","nodeType":"YulIdentifier","src":"5178:5:66"},"nativeSrc":"5178:9:66","nodeType":"YulFunctionCall","src":"5178:9:66"},"variableNames":[{"name":"memPtr","nativeSrc":"5168:6:66","nodeType":"YulIdentifier","src":"5168:6:66"}]},{"nativeSrc":"5196:60:66","nodeType":"YulVariableDeclaration","src":"5196:60:66","value":{"arguments":[{"name":"memPtr","nativeSrc":"5218:6:66","nodeType":"YulIdentifier","src":"5218:6:66"},{"arguments":[{"arguments":[{"name":"result","nativeSrc":"5234:6:66","nodeType":"YulIdentifier","src":"5234:6:66"},{"kind":"number","nativeSrc":"5242:2:66","nodeType":"YulLiteral","src":"5242:2:66","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"5230:3:66","nodeType":"YulIdentifier","src":"5230:3:66"},"nativeSrc":"5230:15:66","nodeType":"YulFunctionCall","src":"5230:15:66"},{"arguments":[{"kind":"number","nativeSrc":"5251:2:66","nodeType":"YulLiteral","src":"5251:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"5247:3:66","nodeType":"YulIdentifier","src":"5247:3:66"},"nativeSrc":"5247:7:66","nodeType":"YulFunctionCall","src":"5247:7:66"}],"functionName":{"name":"and","nativeSrc":"5226:3:66","nodeType":"YulIdentifier","src":"5226:3:66"},"nativeSrc":"5226:29:66","nodeType":"YulFunctionCall","src":"5226:29:66"}],"functionName":{"name":"add","nativeSrc":"5214:3:66","nodeType":"YulIdentifier","src":"5214:3:66"},"nativeSrc":"5214:42:66","nodeType":"YulFunctionCall","src":"5214:42:66"},"variables":[{"name":"newFreePtr","nativeSrc":"5200:10:66","nodeType":"YulTypedName","src":"5200:10:66","type":""}]},{"body":{"nativeSrc":"5331:22:66","nodeType":"YulBlock","src":"5331:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"5333:16:66","nodeType":"YulIdentifier","src":"5333:16:66"},"nativeSrc":"5333:18:66","nodeType":"YulFunctionCall","src":"5333:18:66"},"nativeSrc":"5333:18:66","nodeType":"YulExpressionStatement","src":"5333:18:66"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"5274:10:66","nodeType":"YulIdentifier","src":"5274:10:66"},{"kind":"number","nativeSrc":"5286:18:66","nodeType":"YulLiteral","src":"5286:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5271:2:66","nodeType":"YulIdentifier","src":"5271:2:66"},"nativeSrc":"5271:34:66","nodeType":"YulFunctionCall","src":"5271:34:66"},{"arguments":[{"name":"newFreePtr","nativeSrc":"5310:10:66","nodeType":"YulIdentifier","src":"5310:10:66"},{"name":"memPtr","nativeSrc":"5322:6:66","nodeType":"YulIdentifier","src":"5322:6:66"}],"functionName":{"name":"lt","nativeSrc":"5307:2:66","nodeType":"YulIdentifier","src":"5307:2:66"},"nativeSrc":"5307:22:66","nodeType":"YulFunctionCall","src":"5307:22:66"}],"functionName":{"name":"or","nativeSrc":"5268:2:66","nodeType":"YulIdentifier","src":"5268:2:66"},"nativeSrc":"5268:62:66","nodeType":"YulFunctionCall","src":"5268:62:66"},"nativeSrc":"5265:88:66","nodeType":"YulIf","src":"5265:88:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5369:2:66","nodeType":"YulLiteral","src":"5369:2:66","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"5373:10:66","nodeType":"YulIdentifier","src":"5373:10:66"}],"functionName":{"name":"mstore","nativeSrc":"5362:6:66","nodeType":"YulIdentifier","src":"5362:6:66"},"nativeSrc":"5362:22:66","nodeType":"YulFunctionCall","src":"5362:22:66"},"nativeSrc":"5362:22:66","nodeType":"YulExpressionStatement","src":"5362:22:66"},{"nativeSrc":"5393:15:66","nodeType":"YulAssignment","src":"5393:15:66","value":{"name":"memPtr","nativeSrc":"5402:6:66","nodeType":"YulIdentifier","src":"5402:6:66"},"variableNames":[{"name":"array","nativeSrc":"5393:5:66","nodeType":"YulIdentifier","src":"5393:5:66"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"5424:6:66","nodeType":"YulIdentifier","src":"5424:6:66"},{"name":"length","nativeSrc":"5432:6:66","nodeType":"YulIdentifier","src":"5432:6:66"}],"functionName":{"name":"mstore","nativeSrc":"5417:6:66","nodeType":"YulIdentifier","src":"5417:6:66"},"nativeSrc":"5417:22:66","nodeType":"YulFunctionCall","src":"5417:22:66"},"nativeSrc":"5417:22:66","nodeType":"YulExpressionStatement","src":"5417:22:66"},{"body":{"nativeSrc":"5477:16:66","nodeType":"YulBlock","src":"5477:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5486:1:66","nodeType":"YulLiteral","src":"5486:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"5489:1:66","nodeType":"YulLiteral","src":"5489:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5479:6:66","nodeType":"YulIdentifier","src":"5479:6:66"},"nativeSrc":"5479:12:66","nodeType":"YulFunctionCall","src":"5479:12:66"},"nativeSrc":"5479:12:66","nodeType":"YulExpressionStatement","src":"5479:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"5458:3:66","nodeType":"YulIdentifier","src":"5458:3:66"},{"name":"length","nativeSrc":"5463:6:66","nodeType":"YulIdentifier","src":"5463:6:66"}],"functionName":{"name":"add","nativeSrc":"5454:3:66","nodeType":"YulIdentifier","src":"5454:3:66"},"nativeSrc":"5454:16:66","nodeType":"YulFunctionCall","src":"5454:16:66"},{"name":"end","nativeSrc":"5472:3:66","nodeType":"YulIdentifier","src":"5472:3:66"}],"functionName":{"name":"gt","nativeSrc":"5451:2:66","nodeType":"YulIdentifier","src":"5451:2:66"},"nativeSrc":"5451:25:66","nodeType":"YulFunctionCall","src":"5451:25:66"},"nativeSrc":"5448:45:66","nodeType":"YulIf","src":"5448:45:66"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5519:6:66","nodeType":"YulIdentifier","src":"5519:6:66"},{"kind":"number","nativeSrc":"5527:4:66","nodeType":"YulLiteral","src":"5527:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5515:3:66","nodeType":"YulIdentifier","src":"5515:3:66"},"nativeSrc":"5515:17:66","nodeType":"YulFunctionCall","src":"5515:17:66"},{"name":"src","nativeSrc":"5534:3:66","nodeType":"YulIdentifier","src":"5534:3:66"},{"name":"length","nativeSrc":"5539:6:66","nodeType":"YulIdentifier","src":"5539:6:66"}],"functionName":{"name":"calldatacopy","nativeSrc":"5502:12:66","nodeType":"YulIdentifier","src":"5502:12:66"},"nativeSrc":"5502:44:66","nodeType":"YulFunctionCall","src":"5502:44:66"},"nativeSrc":"5502:44:66","nodeType":"YulExpressionStatement","src":"5502:44:66"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"5570:6:66","nodeType":"YulIdentifier","src":"5570:6:66"},{"name":"length","nativeSrc":"5578:6:66","nodeType":"YulIdentifier","src":"5578:6:66"}],"functionName":{"name":"add","nativeSrc":"5566:3:66","nodeType":"YulIdentifier","src":"5566:3:66"},"nativeSrc":"5566:19:66","nodeType":"YulFunctionCall","src":"5566:19:66"},{"kind":"number","nativeSrc":"5587:4:66","nodeType":"YulLiteral","src":"5587:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5562:3:66","nodeType":"YulIdentifier","src":"5562:3:66"},"nativeSrc":"5562:30:66","nodeType":"YulFunctionCall","src":"5562:30:66"},{"kind":"number","nativeSrc":"5594:1:66","nodeType":"YulLiteral","src":"5594:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"5555:6:66","nodeType":"YulIdentifier","src":"5555:6:66"},"nativeSrc":"5555:41:66","nodeType":"YulFunctionCall","src":"5555:41:66"},"nativeSrc":"5555:41:66","nodeType":"YulExpressionStatement","src":"5555:41:66"}]},"name":"abi_decode_available_length_string","nativeSrc":"4886:716:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"4930:3:66","nodeType":"YulTypedName","src":"4930:3:66","type":""},{"name":"length","nativeSrc":"4935:6:66","nodeType":"YulTypedName","src":"4935:6:66","type":""},{"name":"end","nativeSrc":"4943:3:66","nodeType":"YulTypedName","src":"4943:3:66","type":""}],"returnVariables":[{"name":"array","nativeSrc":"4951:5:66","nodeType":"YulTypedName","src":"4951:5:66","type":""}],"src":"4886:716:66"},{"body":{"nativeSrc":"5660:169:66","nodeType":"YulBlock","src":"5660:169:66","statements":[{"body":{"nativeSrc":"5709:16:66","nodeType":"YulBlock","src":"5709:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5718:1:66","nodeType":"YulLiteral","src":"5718:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"5721:1:66","nodeType":"YulLiteral","src":"5721:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5711:6:66","nodeType":"YulIdentifier","src":"5711:6:66"},"nativeSrc":"5711:12:66","nodeType":"YulFunctionCall","src":"5711:12:66"},"nativeSrc":"5711:12:66","nodeType":"YulExpressionStatement","src":"5711:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"5688:6:66","nodeType":"YulIdentifier","src":"5688:6:66"},{"kind":"number","nativeSrc":"5696:4:66","nodeType":"YulLiteral","src":"5696:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"5684:3:66","nodeType":"YulIdentifier","src":"5684:3:66"},"nativeSrc":"5684:17:66","nodeType":"YulFunctionCall","src":"5684:17:66"},{"name":"end","nativeSrc":"5703:3:66","nodeType":"YulIdentifier","src":"5703:3:66"}],"functionName":{"name":"slt","nativeSrc":"5680:3:66","nodeType":"YulIdentifier","src":"5680:3:66"},"nativeSrc":"5680:27:66","nodeType":"YulFunctionCall","src":"5680:27:66"}],"functionName":{"name":"iszero","nativeSrc":"5673:6:66","nodeType":"YulIdentifier","src":"5673:6:66"},"nativeSrc":"5673:35:66","nodeType":"YulFunctionCall","src":"5673:35:66"},"nativeSrc":"5670:55:66","nodeType":"YulIf","src":"5670:55:66"},{"nativeSrc":"5734:89:66","nodeType":"YulAssignment","src":"5734:89:66","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"5782:6:66","nodeType":"YulIdentifier","src":"5782:6:66"},{"kind":"number","nativeSrc":"5790:4:66","nodeType":"YulLiteral","src":"5790:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5778:3:66","nodeType":"YulIdentifier","src":"5778:3:66"},"nativeSrc":"5778:17:66","nodeType":"YulFunctionCall","src":"5778:17:66"},{"arguments":[{"name":"offset","nativeSrc":"5810:6:66","nodeType":"YulIdentifier","src":"5810:6:66"}],"functionName":{"name":"calldataload","nativeSrc":"5797:12:66","nodeType":"YulIdentifier","src":"5797:12:66"},"nativeSrc":"5797:20:66","nodeType":"YulFunctionCall","src":"5797:20:66"},{"name":"end","nativeSrc":"5819:3:66","nodeType":"YulIdentifier","src":"5819:3:66"}],"functionName":{"name":"abi_decode_available_length_string","nativeSrc":"5743:34:66","nodeType":"YulIdentifier","src":"5743:34:66"},"nativeSrc":"5743:80:66","nodeType":"YulFunctionCall","src":"5743:80:66"},"variableNames":[{"name":"array","nativeSrc":"5734:5:66","nodeType":"YulIdentifier","src":"5734:5:66"}]}]},"name":"abi_decode_string","nativeSrc":"5607:222:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"5634:6:66","nodeType":"YulTypedName","src":"5634:6:66","type":""},{"name":"end","nativeSrc":"5642:3:66","nodeType":"YulTypedName","src":"5642:3:66","type":""}],"returnVariables":[{"name":"array","nativeSrc":"5650:5:66","nodeType":"YulTypedName","src":"5650:5:66","type":""}],"src":"5607:222:66"},{"body":{"nativeSrc":"6014:806:66","nodeType":"YulBlock","src":"6014:806:66","statements":[{"body":{"nativeSrc":"6061:16:66","nodeType":"YulBlock","src":"6061:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6070:1:66","nodeType":"YulLiteral","src":"6070:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"6073:1:66","nodeType":"YulLiteral","src":"6073:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6063:6:66","nodeType":"YulIdentifier","src":"6063:6:66"},"nativeSrc":"6063:12:66","nodeType":"YulFunctionCall","src":"6063:12:66"},"nativeSrc":"6063:12:66","nodeType":"YulExpressionStatement","src":"6063:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6035:7:66","nodeType":"YulIdentifier","src":"6035:7:66"},{"name":"headStart","nativeSrc":"6044:9:66","nodeType":"YulIdentifier","src":"6044:9:66"}],"functionName":{"name":"sub","nativeSrc":"6031:3:66","nodeType":"YulIdentifier","src":"6031:3:66"},"nativeSrc":"6031:23:66","nodeType":"YulFunctionCall","src":"6031:23:66"},{"kind":"number","nativeSrc":"6056:3:66","nodeType":"YulLiteral","src":"6056:3:66","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"6027:3:66","nodeType":"YulIdentifier","src":"6027:3:66"},"nativeSrc":"6027:33:66","nodeType":"YulFunctionCall","src":"6027:33:66"},"nativeSrc":"6024:53:66","nodeType":"YulIf","src":"6024:53:66"},{"nativeSrc":"6086:39:66","nodeType":"YulAssignment","src":"6086:39:66","value":{"arguments":[{"name":"headStart","nativeSrc":"6115:9:66","nodeType":"YulIdentifier","src":"6115:9:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"6096:18:66","nodeType":"YulIdentifier","src":"6096:18:66"},"nativeSrc":"6096:29:66","nodeType":"YulFunctionCall","src":"6096:29:66"},"variableNames":[{"name":"value0","nativeSrc":"6086:6:66","nodeType":"YulIdentifier","src":"6086:6:66"}]},{"nativeSrc":"6134:46:66","nodeType":"YulVariableDeclaration","src":"6134:46:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6165:9:66","nodeType":"YulIdentifier","src":"6165:9:66"},{"kind":"number","nativeSrc":"6176:2:66","nodeType":"YulLiteral","src":"6176:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6161:3:66","nodeType":"YulIdentifier","src":"6161:3:66"},"nativeSrc":"6161:18:66","nodeType":"YulFunctionCall","src":"6161:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"6148:12:66","nodeType":"YulIdentifier","src":"6148:12:66"},"nativeSrc":"6148:32:66","nodeType":"YulFunctionCall","src":"6148:32:66"},"variables":[{"name":"offset","nativeSrc":"6138:6:66","nodeType":"YulTypedName","src":"6138:6:66","type":""}]},{"body":{"nativeSrc":"6223:16:66","nodeType":"YulBlock","src":"6223:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6232:1:66","nodeType":"YulLiteral","src":"6232:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"6235:1:66","nodeType":"YulLiteral","src":"6235:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6225:6:66","nodeType":"YulIdentifier","src":"6225:6:66"},"nativeSrc":"6225:12:66","nodeType":"YulFunctionCall","src":"6225:12:66"},"nativeSrc":"6225:12:66","nodeType":"YulExpressionStatement","src":"6225:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6195:6:66","nodeType":"YulIdentifier","src":"6195:6:66"},{"kind":"number","nativeSrc":"6203:18:66","nodeType":"YulLiteral","src":"6203:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6192:2:66","nodeType":"YulIdentifier","src":"6192:2:66"},"nativeSrc":"6192:30:66","nodeType":"YulFunctionCall","src":"6192:30:66"},"nativeSrc":"6189:50:66","nodeType":"YulIf","src":"6189:50:66"},{"nativeSrc":"6248:60:66","nodeType":"YulAssignment","src":"6248:60:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6280:9:66","nodeType":"YulIdentifier","src":"6280:9:66"},{"name":"offset","nativeSrc":"6291:6:66","nodeType":"YulIdentifier","src":"6291:6:66"}],"functionName":{"name":"add","nativeSrc":"6276:3:66","nodeType":"YulIdentifier","src":"6276:3:66"},"nativeSrc":"6276:22:66","nodeType":"YulFunctionCall","src":"6276:22:66"},{"name":"dataEnd","nativeSrc":"6300:7:66","nodeType":"YulIdentifier","src":"6300:7:66"}],"functionName":{"name":"abi_decode_string","nativeSrc":"6258:17:66","nodeType":"YulIdentifier","src":"6258:17:66"},"nativeSrc":"6258:50:66","nodeType":"YulFunctionCall","src":"6258:50:66"},"variableNames":[{"name":"value1","nativeSrc":"6248:6:66","nodeType":"YulIdentifier","src":"6248:6:66"}]},{"nativeSrc":"6317:48:66","nodeType":"YulVariableDeclaration","src":"6317:48:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6350:9:66","nodeType":"YulIdentifier","src":"6350:9:66"},{"kind":"number","nativeSrc":"6361:2:66","nodeType":"YulLiteral","src":"6361:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6346:3:66","nodeType":"YulIdentifier","src":"6346:3:66"},"nativeSrc":"6346:18:66","nodeType":"YulFunctionCall","src":"6346:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"6333:12:66","nodeType":"YulIdentifier","src":"6333:12:66"},"nativeSrc":"6333:32:66","nodeType":"YulFunctionCall","src":"6333:32:66"},"variables":[{"name":"offset_1","nativeSrc":"6321:8:66","nodeType":"YulTypedName","src":"6321:8:66","type":""}]},{"body":{"nativeSrc":"6410:16:66","nodeType":"YulBlock","src":"6410:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6419:1:66","nodeType":"YulLiteral","src":"6419:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"6422:1:66","nodeType":"YulLiteral","src":"6422:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6412:6:66","nodeType":"YulIdentifier","src":"6412:6:66"},"nativeSrc":"6412:12:66","nodeType":"YulFunctionCall","src":"6412:12:66"},"nativeSrc":"6412:12:66","nodeType":"YulExpressionStatement","src":"6412:12:66"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"6380:8:66","nodeType":"YulIdentifier","src":"6380:8:66"},{"kind":"number","nativeSrc":"6390:18:66","nodeType":"YulLiteral","src":"6390:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6377:2:66","nodeType":"YulIdentifier","src":"6377:2:66"},"nativeSrc":"6377:32:66","nodeType":"YulFunctionCall","src":"6377:32:66"},"nativeSrc":"6374:52:66","nodeType":"YulIf","src":"6374:52:66"},{"nativeSrc":"6435:62:66","nodeType":"YulAssignment","src":"6435:62:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6467:9:66","nodeType":"YulIdentifier","src":"6467:9:66"},{"name":"offset_1","nativeSrc":"6478:8:66","nodeType":"YulIdentifier","src":"6478:8:66"}],"functionName":{"name":"add","nativeSrc":"6463:3:66","nodeType":"YulIdentifier","src":"6463:3:66"},"nativeSrc":"6463:24:66","nodeType":"YulFunctionCall","src":"6463:24:66"},{"name":"dataEnd","nativeSrc":"6489:7:66","nodeType":"YulIdentifier","src":"6489:7:66"}],"functionName":{"name":"abi_decode_string","nativeSrc":"6445:17:66","nodeType":"YulIdentifier","src":"6445:17:66"},"nativeSrc":"6445:52:66","nodeType":"YulFunctionCall","src":"6445:52:66"},"variableNames":[{"name":"value2","nativeSrc":"6435:6:66","nodeType":"YulIdentifier","src":"6435:6:66"}]},{"nativeSrc":"6506:48:66","nodeType":"YulVariableDeclaration","src":"6506:48:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6539:9:66","nodeType":"YulIdentifier","src":"6539:9:66"},{"kind":"number","nativeSrc":"6550:2:66","nodeType":"YulLiteral","src":"6550:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"6535:3:66","nodeType":"YulIdentifier","src":"6535:3:66"},"nativeSrc":"6535:18:66","nodeType":"YulFunctionCall","src":"6535:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"6522:12:66","nodeType":"YulIdentifier","src":"6522:12:66"},"nativeSrc":"6522:32:66","nodeType":"YulFunctionCall","src":"6522:32:66"},"variables":[{"name":"offset_2","nativeSrc":"6510:8:66","nodeType":"YulTypedName","src":"6510:8:66","type":""}]},{"body":{"nativeSrc":"6599:16:66","nodeType":"YulBlock","src":"6599:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6608:1:66","nodeType":"YulLiteral","src":"6608:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"6611:1:66","nodeType":"YulLiteral","src":"6611:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6601:6:66","nodeType":"YulIdentifier","src":"6601:6:66"},"nativeSrc":"6601:12:66","nodeType":"YulFunctionCall","src":"6601:12:66"},"nativeSrc":"6601:12:66","nodeType":"YulExpressionStatement","src":"6601:12:66"}]},"condition":{"arguments":[{"name":"offset_2","nativeSrc":"6569:8:66","nodeType":"YulIdentifier","src":"6569:8:66"},{"kind":"number","nativeSrc":"6579:18:66","nodeType":"YulLiteral","src":"6579:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6566:2:66","nodeType":"YulIdentifier","src":"6566:2:66"},"nativeSrc":"6566:32:66","nodeType":"YulFunctionCall","src":"6566:32:66"},"nativeSrc":"6563:52:66","nodeType":"YulIf","src":"6563:52:66"},{"nativeSrc":"6624:62:66","nodeType":"YulAssignment","src":"6624:62:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6656:9:66","nodeType":"YulIdentifier","src":"6656:9:66"},{"name":"offset_2","nativeSrc":"6667:8:66","nodeType":"YulIdentifier","src":"6667:8:66"}],"functionName":{"name":"add","nativeSrc":"6652:3:66","nodeType":"YulIdentifier","src":"6652:3:66"},"nativeSrc":"6652:24:66","nodeType":"YulFunctionCall","src":"6652:24:66"},{"name":"dataEnd","nativeSrc":"6678:7:66","nodeType":"YulIdentifier","src":"6678:7:66"}],"functionName":{"name":"abi_decode_string","nativeSrc":"6634:17:66","nodeType":"YulIdentifier","src":"6634:17:66"},"nativeSrc":"6634:52:66","nodeType":"YulFunctionCall","src":"6634:52:66"},"variableNames":[{"name":"value3","nativeSrc":"6624:6:66","nodeType":"YulIdentifier","src":"6624:6:66"}]},{"nativeSrc":"6695:46:66","nodeType":"YulVariableDeclaration","src":"6695:46:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6725:9:66","nodeType":"YulIdentifier","src":"6725:9:66"},{"kind":"number","nativeSrc":"6736:3:66","nodeType":"YulLiteral","src":"6736:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"6721:3:66","nodeType":"YulIdentifier","src":"6721:3:66"},"nativeSrc":"6721:19:66","nodeType":"YulFunctionCall","src":"6721:19:66"}],"functionName":{"name":"calldataload","nativeSrc":"6708:12:66","nodeType":"YulIdentifier","src":"6708:12:66"},"nativeSrc":"6708:33:66","nodeType":"YulFunctionCall","src":"6708:33:66"},"variables":[{"name":"value","nativeSrc":"6699:5:66","nodeType":"YulTypedName","src":"6699:5:66","type":""}]},{"body":{"nativeSrc":"6774:16:66","nodeType":"YulBlock","src":"6774:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6783:1:66","nodeType":"YulLiteral","src":"6783:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"6786:1:66","nodeType":"YulLiteral","src":"6786:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6776:6:66","nodeType":"YulIdentifier","src":"6776:6:66"},"nativeSrc":"6776:12:66","nodeType":"YulFunctionCall","src":"6776:12:66"},"nativeSrc":"6776:12:66","nodeType":"YulExpressionStatement","src":"6776:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"6763:5:66","nodeType":"YulIdentifier","src":"6763:5:66"},{"kind":"number","nativeSrc":"6770:1:66","nodeType":"YulLiteral","src":"6770:1:66","type":"","value":"4"}],"functionName":{"name":"lt","nativeSrc":"6760:2:66","nodeType":"YulIdentifier","src":"6760:2:66"},"nativeSrc":"6760:12:66","nodeType":"YulFunctionCall","src":"6760:12:66"}],"functionName":{"name":"iszero","nativeSrc":"6753:6:66","nodeType":"YulIdentifier","src":"6753:6:66"},"nativeSrc":"6753:20:66","nodeType":"YulFunctionCall","src":"6753:20:66"},"nativeSrc":"6750:40:66","nodeType":"YulIf","src":"6750:40:66"},{"nativeSrc":"6799:15:66","nodeType":"YulAssignment","src":"6799:15:66","value":{"name":"value","nativeSrc":"6809:5:66","nodeType":"YulIdentifier","src":"6809:5:66"},"variableNames":[{"name":"value4","nativeSrc":"6799:6:66","nodeType":"YulIdentifier","src":"6799:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_enum$_IPType_$12747","nativeSrc":"5834:986:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5948:9:66","nodeType":"YulTypedName","src":"5948:9:66","type":""},{"name":"dataEnd","nativeSrc":"5959:7:66","nodeType":"YulTypedName","src":"5959:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5971:6:66","nodeType":"YulTypedName","src":"5971:6:66","type":""},{"name":"value1","nativeSrc":"5979:6:66","nodeType":"YulTypedName","src":"5979:6:66","type":""},{"name":"value2","nativeSrc":"5987:6:66","nodeType":"YulTypedName","src":"5987:6:66","type":""},{"name":"value3","nativeSrc":"5995:6:66","nodeType":"YulTypedName","src":"5995:6:66","type":""},{"name":"value4","nativeSrc":"6003:6:66","nodeType":"YulTypedName","src":"6003:6:66","type":""}],"src":"5834:986:66"},{"body":{"nativeSrc":"6909:263:66","nodeType":"YulBlock","src":"6909:263:66","statements":[{"body":{"nativeSrc":"6955:16:66","nodeType":"YulBlock","src":"6955:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6964:1:66","nodeType":"YulLiteral","src":"6964:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"6967:1:66","nodeType":"YulLiteral","src":"6967:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6957:6:66","nodeType":"YulIdentifier","src":"6957:6:66"},"nativeSrc":"6957:12:66","nodeType":"YulFunctionCall","src":"6957:12:66"},"nativeSrc":"6957:12:66","nodeType":"YulExpressionStatement","src":"6957:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6930:7:66","nodeType":"YulIdentifier","src":"6930:7:66"},{"name":"headStart","nativeSrc":"6939:9:66","nodeType":"YulIdentifier","src":"6939:9:66"}],"functionName":{"name":"sub","nativeSrc":"6926:3:66","nodeType":"YulIdentifier","src":"6926:3:66"},"nativeSrc":"6926:23:66","nodeType":"YulFunctionCall","src":"6926:23:66"},{"kind":"number","nativeSrc":"6951:2:66","nodeType":"YulLiteral","src":"6951:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"6922:3:66","nodeType":"YulIdentifier","src":"6922:3:66"},"nativeSrc":"6922:32:66","nodeType":"YulFunctionCall","src":"6922:32:66"},"nativeSrc":"6919:52:66","nodeType":"YulIf","src":"6919:52:66"},{"nativeSrc":"6980:39:66","nodeType":"YulAssignment","src":"6980:39:66","value":{"arguments":[{"name":"headStart","nativeSrc":"7009:9:66","nodeType":"YulIdentifier","src":"7009:9:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"6990:18:66","nodeType":"YulIdentifier","src":"6990:18:66"},"nativeSrc":"6990:29:66","nodeType":"YulFunctionCall","src":"6990:29:66"},"variableNames":[{"name":"value0","nativeSrc":"6980:6:66","nodeType":"YulIdentifier","src":"6980:6:66"}]},{"nativeSrc":"7028:45:66","nodeType":"YulVariableDeclaration","src":"7028:45:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7058:9:66","nodeType":"YulIdentifier","src":"7058:9:66"},{"kind":"number","nativeSrc":"7069:2:66","nodeType":"YulLiteral","src":"7069:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7054:3:66","nodeType":"YulIdentifier","src":"7054:3:66"},"nativeSrc":"7054:18:66","nodeType":"YulFunctionCall","src":"7054:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"7041:12:66","nodeType":"YulIdentifier","src":"7041:12:66"},"nativeSrc":"7041:32:66","nodeType":"YulFunctionCall","src":"7041:32:66"},"variables":[{"name":"value","nativeSrc":"7032:5:66","nodeType":"YulTypedName","src":"7032:5:66","type":""}]},{"body":{"nativeSrc":"7126:16:66","nodeType":"YulBlock","src":"7126:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7135:1:66","nodeType":"YulLiteral","src":"7135:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"7138:1:66","nodeType":"YulLiteral","src":"7138:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7128:6:66","nodeType":"YulIdentifier","src":"7128:6:66"},"nativeSrc":"7128:12:66","nodeType":"YulFunctionCall","src":"7128:12:66"},"nativeSrc":"7128:12:66","nodeType":"YulExpressionStatement","src":"7128:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7095:5:66","nodeType":"YulIdentifier","src":"7095:5:66"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7116:5:66","nodeType":"YulIdentifier","src":"7116:5:66"}],"functionName":{"name":"iszero","nativeSrc":"7109:6:66","nodeType":"YulIdentifier","src":"7109:6:66"},"nativeSrc":"7109:13:66","nodeType":"YulFunctionCall","src":"7109:13:66"}],"functionName":{"name":"iszero","nativeSrc":"7102:6:66","nodeType":"YulIdentifier","src":"7102:6:66"},"nativeSrc":"7102:21:66","nodeType":"YulFunctionCall","src":"7102:21:66"}],"functionName":{"name":"eq","nativeSrc":"7092:2:66","nodeType":"YulIdentifier","src":"7092:2:66"},"nativeSrc":"7092:32:66","nodeType":"YulFunctionCall","src":"7092:32:66"}],"functionName":{"name":"iszero","nativeSrc":"7085:6:66","nodeType":"YulIdentifier","src":"7085:6:66"},"nativeSrc":"7085:40:66","nodeType":"YulFunctionCall","src":"7085:40:66"},"nativeSrc":"7082:60:66","nodeType":"YulIf","src":"7082:60:66"},{"nativeSrc":"7151:15:66","nodeType":"YulAssignment","src":"7151:15:66","value":{"name":"value","nativeSrc":"7161:5:66","nodeType":"YulIdentifier","src":"7161:5:66"},"variableNames":[{"name":"value1","nativeSrc":"7151:6:66","nodeType":"YulIdentifier","src":"7151:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nativeSrc":"6825:347:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6867:9:66","nodeType":"YulTypedName","src":"6867:9:66","type":""},{"name":"dataEnd","nativeSrc":"6878:7:66","nodeType":"YulTypedName","src":"6878:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6890:6:66","nodeType":"YulTypedName","src":"6890:6:66","type":""},{"name":"value1","nativeSrc":"6898:6:66","nodeType":"YulTypedName","src":"6898:6:66","type":""}],"src":"6825:347:66"},{"body":{"nativeSrc":"7307:583:66","nodeType":"YulBlock","src":"7307:583:66","statements":[{"body":{"nativeSrc":"7354:16:66","nodeType":"YulBlock","src":"7354:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7363:1:66","nodeType":"YulLiteral","src":"7363:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"7366:1:66","nodeType":"YulLiteral","src":"7366:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7356:6:66","nodeType":"YulIdentifier","src":"7356:6:66"},"nativeSrc":"7356:12:66","nodeType":"YulFunctionCall","src":"7356:12:66"},"nativeSrc":"7356:12:66","nodeType":"YulExpressionStatement","src":"7356:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7328:7:66","nodeType":"YulIdentifier","src":"7328:7:66"},{"name":"headStart","nativeSrc":"7337:9:66","nodeType":"YulIdentifier","src":"7337:9:66"}],"functionName":{"name":"sub","nativeSrc":"7324:3:66","nodeType":"YulIdentifier","src":"7324:3:66"},"nativeSrc":"7324:23:66","nodeType":"YulFunctionCall","src":"7324:23:66"},{"kind":"number","nativeSrc":"7349:3:66","nodeType":"YulLiteral","src":"7349:3:66","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"7320:3:66","nodeType":"YulIdentifier","src":"7320:3:66"},"nativeSrc":"7320:33:66","nodeType":"YulFunctionCall","src":"7320:33:66"},"nativeSrc":"7317:53:66","nodeType":"YulIf","src":"7317:53:66"},{"nativeSrc":"7379:39:66","nodeType":"YulAssignment","src":"7379:39:66","value":{"arguments":[{"name":"headStart","nativeSrc":"7408:9:66","nodeType":"YulIdentifier","src":"7408:9:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"7389:18:66","nodeType":"YulIdentifier","src":"7389:18:66"},"nativeSrc":"7389:29:66","nodeType":"YulFunctionCall","src":"7389:29:66"},"variableNames":[{"name":"value0","nativeSrc":"7379:6:66","nodeType":"YulIdentifier","src":"7379:6:66"}]},{"nativeSrc":"7427:48:66","nodeType":"YulAssignment","src":"7427:48:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7460:9:66","nodeType":"YulIdentifier","src":"7460:9:66"},{"kind":"number","nativeSrc":"7471:2:66","nodeType":"YulLiteral","src":"7471:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7456:3:66","nodeType":"YulIdentifier","src":"7456:3:66"},"nativeSrc":"7456:18:66","nodeType":"YulFunctionCall","src":"7456:18:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"7437:18:66","nodeType":"YulIdentifier","src":"7437:18:66"},"nativeSrc":"7437:38:66","nodeType":"YulFunctionCall","src":"7437:38:66"},"variableNames":[{"name":"value1","nativeSrc":"7427:6:66","nodeType":"YulIdentifier","src":"7427:6:66"}]},{"nativeSrc":"7484:14:66","nodeType":"YulVariableDeclaration","src":"7484:14:66","value":{"kind":"number","nativeSrc":"7497:1:66","nodeType":"YulLiteral","src":"7497:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"7488:5:66","nodeType":"YulTypedName","src":"7488:5:66","type":""}]},{"nativeSrc":"7507:41:66","nodeType":"YulAssignment","src":"7507:41:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7533:9:66","nodeType":"YulIdentifier","src":"7533:9:66"},{"kind":"number","nativeSrc":"7544:2:66","nodeType":"YulLiteral","src":"7544:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7529:3:66","nodeType":"YulIdentifier","src":"7529:3:66"},"nativeSrc":"7529:18:66","nodeType":"YulFunctionCall","src":"7529:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"7516:12:66","nodeType":"YulIdentifier","src":"7516:12:66"},"nativeSrc":"7516:32:66","nodeType":"YulFunctionCall","src":"7516:32:66"},"variableNames":[{"name":"value","nativeSrc":"7507:5:66","nodeType":"YulIdentifier","src":"7507:5:66"}]},{"nativeSrc":"7557:15:66","nodeType":"YulAssignment","src":"7557:15:66","value":{"name":"value","nativeSrc":"7567:5:66","nodeType":"YulIdentifier","src":"7567:5:66"},"variableNames":[{"name":"value2","nativeSrc":"7557:6:66","nodeType":"YulIdentifier","src":"7557:6:66"}]},{"nativeSrc":"7581:46:66","nodeType":"YulVariableDeclaration","src":"7581:46:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7612:9:66","nodeType":"YulIdentifier","src":"7612:9:66"},{"kind":"number","nativeSrc":"7623:2:66","nodeType":"YulLiteral","src":"7623:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7608:3:66","nodeType":"YulIdentifier","src":"7608:3:66"},"nativeSrc":"7608:18:66","nodeType":"YulFunctionCall","src":"7608:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"7595:12:66","nodeType":"YulIdentifier","src":"7595:12:66"},"nativeSrc":"7595:32:66","nodeType":"YulFunctionCall","src":"7595:32:66"},"variables":[{"name":"offset","nativeSrc":"7585:6:66","nodeType":"YulTypedName","src":"7585:6:66","type":""}]},{"body":{"nativeSrc":"7670:16:66","nodeType":"YulBlock","src":"7670:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7679:1:66","nodeType":"YulLiteral","src":"7679:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"7682:1:66","nodeType":"YulLiteral","src":"7682:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7672:6:66","nodeType":"YulIdentifier","src":"7672:6:66"},"nativeSrc":"7672:12:66","nodeType":"YulFunctionCall","src":"7672:12:66"},"nativeSrc":"7672:12:66","nodeType":"YulExpressionStatement","src":"7672:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7642:6:66","nodeType":"YulIdentifier","src":"7642:6:66"},{"kind":"number","nativeSrc":"7650:18:66","nodeType":"YulLiteral","src":"7650:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7639:2:66","nodeType":"YulIdentifier","src":"7639:2:66"},"nativeSrc":"7639:30:66","nodeType":"YulFunctionCall","src":"7639:30:66"},"nativeSrc":"7636:50:66","nodeType":"YulIf","src":"7636:50:66"},{"nativeSrc":"7695:32:66","nodeType":"YulVariableDeclaration","src":"7695:32:66","value":{"arguments":[{"name":"headStart","nativeSrc":"7709:9:66","nodeType":"YulIdentifier","src":"7709:9:66"},{"name":"offset","nativeSrc":"7720:6:66","nodeType":"YulIdentifier","src":"7720:6:66"}],"functionName":{"name":"add","nativeSrc":"7705:3:66","nodeType":"YulIdentifier","src":"7705:3:66"},"nativeSrc":"7705:22:66","nodeType":"YulFunctionCall","src":"7705:22:66"},"variables":[{"name":"_1","nativeSrc":"7699:2:66","nodeType":"YulTypedName","src":"7699:2:66","type":""}]},{"body":{"nativeSrc":"7775:16:66","nodeType":"YulBlock","src":"7775:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7784:1:66","nodeType":"YulLiteral","src":"7784:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"7787:1:66","nodeType":"YulLiteral","src":"7787:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7777:6:66","nodeType":"YulIdentifier","src":"7777:6:66"},"nativeSrc":"7777:12:66","nodeType":"YulFunctionCall","src":"7777:12:66"},"nativeSrc":"7777:12:66","nodeType":"YulExpressionStatement","src":"7777:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7754:2:66","nodeType":"YulIdentifier","src":"7754:2:66"},{"kind":"number","nativeSrc":"7758:4:66","nodeType":"YulLiteral","src":"7758:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"7750:3:66","nodeType":"YulIdentifier","src":"7750:3:66"},"nativeSrc":"7750:13:66","nodeType":"YulFunctionCall","src":"7750:13:66"},{"name":"dataEnd","nativeSrc":"7765:7:66","nodeType":"YulIdentifier","src":"7765:7:66"}],"functionName":{"name":"slt","nativeSrc":"7746:3:66","nodeType":"YulIdentifier","src":"7746:3:66"},"nativeSrc":"7746:27:66","nodeType":"YulFunctionCall","src":"7746:27:66"}],"functionName":{"name":"iszero","nativeSrc":"7739:6:66","nodeType":"YulIdentifier","src":"7739:6:66"},"nativeSrc":"7739:35:66","nodeType":"YulFunctionCall","src":"7739:35:66"},"nativeSrc":"7736:55:66","nodeType":"YulIf","src":"7736:55:66"},{"nativeSrc":"7800:84:66","nodeType":"YulAssignment","src":"7800:84:66","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7849:2:66","nodeType":"YulIdentifier","src":"7849:2:66"},{"kind":"number","nativeSrc":"7853:2:66","nodeType":"YulLiteral","src":"7853:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7845:3:66","nodeType":"YulIdentifier","src":"7845:3:66"},"nativeSrc":"7845:11:66","nodeType":"YulFunctionCall","src":"7845:11:66"},{"arguments":[{"name":"_1","nativeSrc":"7871:2:66","nodeType":"YulIdentifier","src":"7871:2:66"}],"functionName":{"name":"calldataload","nativeSrc":"7858:12:66","nodeType":"YulIdentifier","src":"7858:12:66"},"nativeSrc":"7858:16:66","nodeType":"YulFunctionCall","src":"7858:16:66"},{"name":"dataEnd","nativeSrc":"7876:7:66","nodeType":"YulIdentifier","src":"7876:7:66"}],"functionName":{"name":"abi_decode_available_length_string","nativeSrc":"7810:34:66","nodeType":"YulIdentifier","src":"7810:34:66"},"nativeSrc":"7810:74:66","nodeType":"YulFunctionCall","src":"7810:74:66"},"variableNames":[{"name":"value3","nativeSrc":"7800:6:66","nodeType":"YulIdentifier","src":"7800:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nativeSrc":"7177:713:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7249:9:66","nodeType":"YulTypedName","src":"7249:9:66","type":""},{"name":"dataEnd","nativeSrc":"7260:7:66","nodeType":"YulTypedName","src":"7260:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7272:6:66","nodeType":"YulTypedName","src":"7272:6:66","type":""},{"name":"value1","nativeSrc":"7280:6:66","nodeType":"YulTypedName","src":"7280:6:66","type":""},{"name":"value2","nativeSrc":"7288:6:66","nodeType":"YulTypedName","src":"7288:6:66","type":""},{"name":"value3","nativeSrc":"7296:6:66","nodeType":"YulTypedName","src":"7296:6:66","type":""}],"src":"7177:713:66"},{"body":{"nativeSrc":"7982:173:66","nodeType":"YulBlock","src":"7982:173:66","statements":[{"body":{"nativeSrc":"8028:16:66","nodeType":"YulBlock","src":"8028:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8037:1:66","nodeType":"YulLiteral","src":"8037:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"8040:1:66","nodeType":"YulLiteral","src":"8040:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8030:6:66","nodeType":"YulIdentifier","src":"8030:6:66"},"nativeSrc":"8030:12:66","nodeType":"YulFunctionCall","src":"8030:12:66"},"nativeSrc":"8030:12:66","nodeType":"YulExpressionStatement","src":"8030:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8003:7:66","nodeType":"YulIdentifier","src":"8003:7:66"},{"name":"headStart","nativeSrc":"8012:9:66","nodeType":"YulIdentifier","src":"8012:9:66"}],"functionName":{"name":"sub","nativeSrc":"7999:3:66","nodeType":"YulIdentifier","src":"7999:3:66"},"nativeSrc":"7999:23:66","nodeType":"YulFunctionCall","src":"7999:23:66"},{"kind":"number","nativeSrc":"8024:2:66","nodeType":"YulLiteral","src":"8024:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7995:3:66","nodeType":"YulIdentifier","src":"7995:3:66"},"nativeSrc":"7995:32:66","nodeType":"YulFunctionCall","src":"7995:32:66"},"nativeSrc":"7992:52:66","nodeType":"YulIf","src":"7992:52:66"},{"nativeSrc":"8053:39:66","nodeType":"YulAssignment","src":"8053:39:66","value":{"arguments":[{"name":"headStart","nativeSrc":"8082:9:66","nodeType":"YulIdentifier","src":"8082:9:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"8063:18:66","nodeType":"YulIdentifier","src":"8063:18:66"},"nativeSrc":"8063:29:66","nodeType":"YulFunctionCall","src":"8063:29:66"},"variableNames":[{"name":"value0","nativeSrc":"8053:6:66","nodeType":"YulIdentifier","src":"8053:6:66"}]},{"nativeSrc":"8101:48:66","nodeType":"YulAssignment","src":"8101:48:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8134:9:66","nodeType":"YulIdentifier","src":"8134:9:66"},{"kind":"number","nativeSrc":"8145:2:66","nodeType":"YulLiteral","src":"8145:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8130:3:66","nodeType":"YulIdentifier","src":"8130:3:66"},"nativeSrc":"8130:18:66","nodeType":"YulFunctionCall","src":"8130:18:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"8111:18:66","nodeType":"YulIdentifier","src":"8111:18:66"},"nativeSrc":"8111:38:66","nodeType":"YulFunctionCall","src":"8111:38:66"},"variableNames":[{"name":"value1","nativeSrc":"8101:6:66","nodeType":"YulIdentifier","src":"8101:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"7895:260:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7940:9:66","nodeType":"YulTypedName","src":"7940:9:66","type":""},{"name":"dataEnd","nativeSrc":"7951:7:66","nodeType":"YulTypedName","src":"7951:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7963:6:66","nodeType":"YulTypedName","src":"7963:6:66","type":""},{"name":"value1","nativeSrc":"7971:6:66","nodeType":"YulTypedName","src":"7971:6:66","type":""}],"src":"7895:260:66"},{"body":{"nativeSrc":"8215:325:66","nodeType":"YulBlock","src":"8215:325:66","statements":[{"nativeSrc":"8225:22:66","nodeType":"YulAssignment","src":"8225:22:66","value":{"arguments":[{"kind":"number","nativeSrc":"8239:1:66","nodeType":"YulLiteral","src":"8239:1:66","type":"","value":"1"},{"name":"data","nativeSrc":"8242:4:66","nodeType":"YulIdentifier","src":"8242:4:66"}],"functionName":{"name":"shr","nativeSrc":"8235:3:66","nodeType":"YulIdentifier","src":"8235:3:66"},"nativeSrc":"8235:12:66","nodeType":"YulFunctionCall","src":"8235:12:66"},"variableNames":[{"name":"length","nativeSrc":"8225:6:66","nodeType":"YulIdentifier","src":"8225:6:66"}]},{"nativeSrc":"8256:38:66","nodeType":"YulVariableDeclaration","src":"8256:38:66","value":{"arguments":[{"name":"data","nativeSrc":"8286:4:66","nodeType":"YulIdentifier","src":"8286:4:66"},{"kind":"number","nativeSrc":"8292:1:66","nodeType":"YulLiteral","src":"8292:1:66","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"8282:3:66","nodeType":"YulIdentifier","src":"8282:3:66"},"nativeSrc":"8282:12:66","nodeType":"YulFunctionCall","src":"8282:12:66"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"8260:18:66","nodeType":"YulTypedName","src":"8260:18:66","type":""}]},{"body":{"nativeSrc":"8333:31:66","nodeType":"YulBlock","src":"8333:31:66","statements":[{"nativeSrc":"8335:27:66","nodeType":"YulAssignment","src":"8335:27:66","value":{"arguments":[{"name":"length","nativeSrc":"8349:6:66","nodeType":"YulIdentifier","src":"8349:6:66"},{"kind":"number","nativeSrc":"8357:4:66","nodeType":"YulLiteral","src":"8357:4:66","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"8345:3:66","nodeType":"YulIdentifier","src":"8345:3:66"},"nativeSrc":"8345:17:66","nodeType":"YulFunctionCall","src":"8345:17:66"},"variableNames":[{"name":"length","nativeSrc":"8335:6:66","nodeType":"YulIdentifier","src":"8335:6:66"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8313:18:66","nodeType":"YulIdentifier","src":"8313:18:66"}],"functionName":{"name":"iszero","nativeSrc":"8306:6:66","nodeType":"YulIdentifier","src":"8306:6:66"},"nativeSrc":"8306:26:66","nodeType":"YulFunctionCall","src":"8306:26:66"},"nativeSrc":"8303:61:66","nodeType":"YulIf","src":"8303:61:66"},{"body":{"nativeSrc":"8423:111:66","nodeType":"YulBlock","src":"8423:111:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8444:1:66","nodeType":"YulLiteral","src":"8444:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"8451:3:66","nodeType":"YulLiteral","src":"8451:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"8456:10:66","nodeType":"YulLiteral","src":"8456:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"8447:3:66","nodeType":"YulIdentifier","src":"8447:3:66"},"nativeSrc":"8447:20:66","nodeType":"YulFunctionCall","src":"8447:20:66"}],"functionName":{"name":"mstore","nativeSrc":"8437:6:66","nodeType":"YulIdentifier","src":"8437:6:66"},"nativeSrc":"8437:31:66","nodeType":"YulFunctionCall","src":"8437:31:66"},"nativeSrc":"8437:31:66","nodeType":"YulExpressionStatement","src":"8437:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8488:1:66","nodeType":"YulLiteral","src":"8488:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"8491:4:66","nodeType":"YulLiteral","src":"8491:4:66","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"8481:6:66","nodeType":"YulIdentifier","src":"8481:6:66"},"nativeSrc":"8481:15:66","nodeType":"YulFunctionCall","src":"8481:15:66"},"nativeSrc":"8481:15:66","nodeType":"YulExpressionStatement","src":"8481:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8516:1:66","nodeType":"YulLiteral","src":"8516:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"8519:4:66","nodeType":"YulLiteral","src":"8519:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8509:6:66","nodeType":"YulIdentifier","src":"8509:6:66"},"nativeSrc":"8509:15:66","nodeType":"YulFunctionCall","src":"8509:15:66"},"nativeSrc":"8509:15:66","nodeType":"YulExpressionStatement","src":"8509:15:66"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"8379:18:66","nodeType":"YulIdentifier","src":"8379:18:66"},{"arguments":[{"name":"length","nativeSrc":"8402:6:66","nodeType":"YulIdentifier","src":"8402:6:66"},{"kind":"number","nativeSrc":"8410:2:66","nodeType":"YulLiteral","src":"8410:2:66","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"8399:2:66","nodeType":"YulIdentifier","src":"8399:2:66"},"nativeSrc":"8399:14:66","nodeType":"YulFunctionCall","src":"8399:14:66"}],"functionName":{"name":"eq","nativeSrc":"8376:2:66","nodeType":"YulIdentifier","src":"8376:2:66"},"nativeSrc":"8376:38:66","nodeType":"YulFunctionCall","src":"8376:38:66"},"nativeSrc":"8373:161:66","nodeType":"YulIf","src":"8373:161:66"}]},"name":"extract_byte_array_length","nativeSrc":"8160:380:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"8195:4:66","nodeType":"YulTypedName","src":"8195:4:66","type":""}],"returnVariables":[{"name":"length","nativeSrc":"8204:6:66","nodeType":"YulTypedName","src":"8204:6:66","type":""}],"src":"8160:380:66"},{"body":{"nativeSrc":"8702:214:66","nodeType":"YulBlock","src":"8702:214:66","statements":[{"nativeSrc":"8712:26:66","nodeType":"YulAssignment","src":"8712:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"8724:9:66","nodeType":"YulIdentifier","src":"8724:9:66"},{"kind":"number","nativeSrc":"8735:2:66","nodeType":"YulLiteral","src":"8735:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8720:3:66","nodeType":"YulIdentifier","src":"8720:3:66"},"nativeSrc":"8720:18:66","nodeType":"YulFunctionCall","src":"8720:18:66"},"variableNames":[{"name":"tail","nativeSrc":"8712:4:66","nodeType":"YulIdentifier","src":"8712:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8754:9:66","nodeType":"YulIdentifier","src":"8754:9:66"},{"arguments":[{"name":"value0","nativeSrc":"8769:6:66","nodeType":"YulIdentifier","src":"8769:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8785:3:66","nodeType":"YulLiteral","src":"8785:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"8790:1:66","nodeType":"YulLiteral","src":"8790:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8781:3:66","nodeType":"YulIdentifier","src":"8781:3:66"},"nativeSrc":"8781:11:66","nodeType":"YulFunctionCall","src":"8781:11:66"},{"kind":"number","nativeSrc":"8794:1:66","nodeType":"YulLiteral","src":"8794:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8777:3:66","nodeType":"YulIdentifier","src":"8777:3:66"},"nativeSrc":"8777:19:66","nodeType":"YulFunctionCall","src":"8777:19:66"}],"functionName":{"name":"and","nativeSrc":"8765:3:66","nodeType":"YulIdentifier","src":"8765:3:66"},"nativeSrc":"8765:32:66","nodeType":"YulFunctionCall","src":"8765:32:66"}],"functionName":{"name":"mstore","nativeSrc":"8747:6:66","nodeType":"YulIdentifier","src":"8747:6:66"},"nativeSrc":"8747:51:66","nodeType":"YulFunctionCall","src":"8747:51:66"},"nativeSrc":"8747:51:66","nodeType":"YulExpressionStatement","src":"8747:51:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8818:9:66","nodeType":"YulIdentifier","src":"8818:9:66"},{"kind":"number","nativeSrc":"8829:2:66","nodeType":"YulLiteral","src":"8829:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8814:3:66","nodeType":"YulIdentifier","src":"8814:3:66"},"nativeSrc":"8814:18:66","nodeType":"YulFunctionCall","src":"8814:18:66"},{"name":"value1","nativeSrc":"8834:6:66","nodeType":"YulIdentifier","src":"8834:6:66"}],"functionName":{"name":"mstore","nativeSrc":"8807:6:66","nodeType":"YulIdentifier","src":"8807:6:66"},"nativeSrc":"8807:34:66","nodeType":"YulFunctionCall","src":"8807:34:66"},"nativeSrc":"8807:34:66","nodeType":"YulExpressionStatement","src":"8807:34:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8861:9:66","nodeType":"YulIdentifier","src":"8861:9:66"},{"kind":"number","nativeSrc":"8872:2:66","nodeType":"YulLiteral","src":"8872:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8857:3:66","nodeType":"YulIdentifier","src":"8857:3:66"},"nativeSrc":"8857:18:66","nodeType":"YulFunctionCall","src":"8857:18:66"},{"arguments":[{"name":"value2","nativeSrc":"8881:6:66","nodeType":"YulIdentifier","src":"8881:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8897:3:66","nodeType":"YulLiteral","src":"8897:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"8902:1:66","nodeType":"YulLiteral","src":"8902:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8893:3:66","nodeType":"YulIdentifier","src":"8893:3:66"},"nativeSrc":"8893:11:66","nodeType":"YulFunctionCall","src":"8893:11:66"},{"kind":"number","nativeSrc":"8906:1:66","nodeType":"YulLiteral","src":"8906:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8889:3:66","nodeType":"YulIdentifier","src":"8889:3:66"},"nativeSrc":"8889:19:66","nodeType":"YulFunctionCall","src":"8889:19:66"}],"functionName":{"name":"and","nativeSrc":"8877:3:66","nodeType":"YulIdentifier","src":"8877:3:66"},"nativeSrc":"8877:32:66","nodeType":"YulFunctionCall","src":"8877:32:66"}],"functionName":{"name":"mstore","nativeSrc":"8850:6:66","nodeType":"YulIdentifier","src":"8850:6:66"},"nativeSrc":"8850:60:66","nodeType":"YulFunctionCall","src":"8850:60:66"},"nativeSrc":"8850:60:66","nodeType":"YulExpressionStatement","src":"8850:60:66"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed","nativeSrc":"8545:371:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8655:9:66","nodeType":"YulTypedName","src":"8655:9:66","type":""},{"name":"value2","nativeSrc":"8666:6:66","nodeType":"YulTypedName","src":"8666:6:66","type":""},{"name":"value1","nativeSrc":"8674:6:66","nodeType":"YulTypedName","src":"8674:6:66","type":""},{"name":"value0","nativeSrc":"8682:6:66","nodeType":"YulTypedName","src":"8682:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8693:4:66","nodeType":"YulTypedName","src":"8693:4:66","type":""}],"src":"8545:371:66"},{"body":{"nativeSrc":"9095:176:66","nodeType":"YulBlock","src":"9095:176:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9112:9:66","nodeType":"YulIdentifier","src":"9112:9:66"},{"kind":"number","nativeSrc":"9123:2:66","nodeType":"YulLiteral","src":"9123:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"9105:6:66","nodeType":"YulIdentifier","src":"9105:6:66"},"nativeSrc":"9105:21:66","nodeType":"YulFunctionCall","src":"9105:21:66"},"nativeSrc":"9105:21:66","nodeType":"YulExpressionStatement","src":"9105:21:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9146:9:66","nodeType":"YulIdentifier","src":"9146:9:66"},{"kind":"number","nativeSrc":"9157:2:66","nodeType":"YulLiteral","src":"9157:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9142:3:66","nodeType":"YulIdentifier","src":"9142:3:66"},"nativeSrc":"9142:18:66","nodeType":"YulFunctionCall","src":"9142:18:66"},{"kind":"number","nativeSrc":"9162:2:66","nodeType":"YulLiteral","src":"9162:2:66","type":"","value":"26"}],"functionName":{"name":"mstore","nativeSrc":"9135:6:66","nodeType":"YulIdentifier","src":"9135:6:66"},"nativeSrc":"9135:30:66","nodeType":"YulFunctionCall","src":"9135:30:66"},"nativeSrc":"9135:30:66","nodeType":"YulExpressionStatement","src":"9135:30:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9185:9:66","nodeType":"YulIdentifier","src":"9185:9:66"},{"kind":"number","nativeSrc":"9196:2:66","nodeType":"YulLiteral","src":"9196:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9181:3:66","nodeType":"YulIdentifier","src":"9181:3:66"},"nativeSrc":"9181:18:66","nodeType":"YulFunctionCall","src":"9181:18:66"},{"hexValue":"49504e46543a20696e646578206f7574206f6620626f756e6473","kind":"string","nativeSrc":"9201:28:66","nodeType":"YulLiteral","src":"9201:28:66","type":"","value":"IPNFT: index out of bounds"}],"functionName":{"name":"mstore","nativeSrc":"9174:6:66","nodeType":"YulIdentifier","src":"9174:6:66"},"nativeSrc":"9174:56:66","nodeType":"YulFunctionCall","src":"9174:56:66"},"nativeSrc":"9174:56:66","nodeType":"YulExpressionStatement","src":"9174:56:66"},{"nativeSrc":"9239:26:66","nodeType":"YulAssignment","src":"9239:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"9251:9:66","nodeType":"YulIdentifier","src":"9251:9:66"},{"kind":"number","nativeSrc":"9262:2:66","nodeType":"YulLiteral","src":"9262:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"9247:3:66","nodeType":"YulIdentifier","src":"9247:3:66"},"nativeSrc":"9247:18:66","nodeType":"YulFunctionCall","src":"9247:18:66"},"variableNames":[{"name":"tail","nativeSrc":"9239:4:66","nodeType":"YulIdentifier","src":"9239:4:66"}]}]},"name":"abi_encode_tuple_t_stringliteral_9733be426b13e9a9d956b569fa7cbe74e4c1780e75f1f56e803452958eccf8dd__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"8921:350:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9072:9:66","nodeType":"YulTypedName","src":"9072:9:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9086:4:66","nodeType":"YulTypedName","src":"9086:4:66","type":""}],"src":"8921:350:66"},{"body":{"nativeSrc":"9323:185:66","nodeType":"YulBlock","src":"9323:185:66","statements":[{"body":{"nativeSrc":"9362:111:66","nodeType":"YulBlock","src":"9362:111:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9383:1:66","nodeType":"YulLiteral","src":"9383:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9390:3:66","nodeType":"YulLiteral","src":"9390:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"9395:10:66","nodeType":"YulLiteral","src":"9395:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9386:3:66","nodeType":"YulIdentifier","src":"9386:3:66"},"nativeSrc":"9386:20:66","nodeType":"YulFunctionCall","src":"9386:20:66"}],"functionName":{"name":"mstore","nativeSrc":"9376:6:66","nodeType":"YulIdentifier","src":"9376:6:66"},"nativeSrc":"9376:31:66","nodeType":"YulFunctionCall","src":"9376:31:66"},"nativeSrc":"9376:31:66","nodeType":"YulExpressionStatement","src":"9376:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9427:1:66","nodeType":"YulLiteral","src":"9427:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"9430:4:66","nodeType":"YulLiteral","src":"9430:4:66","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"9420:6:66","nodeType":"YulIdentifier","src":"9420:6:66"},"nativeSrc":"9420:15:66","nodeType":"YulFunctionCall","src":"9420:15:66"},"nativeSrc":"9420:15:66","nodeType":"YulExpressionStatement","src":"9420:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9455:1:66","nodeType":"YulLiteral","src":"9455:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"9458:4:66","nodeType":"YulLiteral","src":"9458:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9448:6:66","nodeType":"YulIdentifier","src":"9448:6:66"},"nativeSrc":"9448:15:66","nodeType":"YulFunctionCall","src":"9448:15:66"},"nativeSrc":"9448:15:66","nodeType":"YulExpressionStatement","src":"9448:15:66"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"9339:5:66","nodeType":"YulIdentifier","src":"9339:5:66"},{"arguments":[{"kind":"number","nativeSrc":"9350:1:66","nodeType":"YulLiteral","src":"9350:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"9346:3:66","nodeType":"YulIdentifier","src":"9346:3:66"},"nativeSrc":"9346:6:66","nodeType":"YulFunctionCall","src":"9346:6:66"}],"functionName":{"name":"eq","nativeSrc":"9336:2:66","nodeType":"YulIdentifier","src":"9336:2:66"},"nativeSrc":"9336:17:66","nodeType":"YulFunctionCall","src":"9336:17:66"},"nativeSrc":"9333:140:66","nodeType":"YulIf","src":"9333:140:66"},{"nativeSrc":"9482:20:66","nodeType":"YulAssignment","src":"9482:20:66","value":{"arguments":[{"name":"value","nativeSrc":"9493:5:66","nodeType":"YulIdentifier","src":"9493:5:66"},{"kind":"number","nativeSrc":"9500:1:66","nodeType":"YulLiteral","src":"9500:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9489:3:66","nodeType":"YulIdentifier","src":"9489:3:66"},"nativeSrc":"9489:13:66","nodeType":"YulFunctionCall","src":"9489:13:66"},"variableNames":[{"name":"ret","nativeSrc":"9482:3:66","nodeType":"YulIdentifier","src":"9482:3:66"}]}]},"name":"increment_t_uint256","nativeSrc":"9276:232:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"9305:5:66","nodeType":"YulTypedName","src":"9305:5:66","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"9315:3:66","nodeType":"YulTypedName","src":"9315:3:66","type":""}],"src":"9276:232:66"},{"body":{"nativeSrc":"9687:177:66","nodeType":"YulBlock","src":"9687:177:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9704:9:66","nodeType":"YulIdentifier","src":"9704:9:66"},{"kind":"number","nativeSrc":"9715:2:66","nodeType":"YulLiteral","src":"9715:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"9697:6:66","nodeType":"YulIdentifier","src":"9697:6:66"},"nativeSrc":"9697:21:66","nodeType":"YulFunctionCall","src":"9697:21:66"},"nativeSrc":"9697:21:66","nodeType":"YulExpressionStatement","src":"9697:21:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9738:9:66","nodeType":"YulIdentifier","src":"9738:9:66"},{"kind":"number","nativeSrc":"9749:2:66","nodeType":"YulLiteral","src":"9749:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9734:3:66","nodeType":"YulIdentifier","src":"9734:3:66"},"nativeSrc":"9734:18:66","nodeType":"YulFunctionCall","src":"9734:18:66"},{"kind":"number","nativeSrc":"9754:2:66","nodeType":"YulLiteral","src":"9754:2:66","type":"","value":"27"}],"functionName":{"name":"mstore","nativeSrc":"9727:6:66","nodeType":"YulIdentifier","src":"9727:6:66"},"nativeSrc":"9727:30:66","nodeType":"YulFunctionCall","src":"9727:30:66"},"nativeSrc":"9727:30:66","nodeType":"YulExpressionStatement","src":"9727:30:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9777:9:66","nodeType":"YulIdentifier","src":"9777:9:66"},{"kind":"number","nativeSrc":"9788:2:66","nodeType":"YulLiteral","src":"9788:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"9773:3:66","nodeType":"YulIdentifier","src":"9773:3:66"},"nativeSrc":"9773:18:66","nodeType":"YulFunctionCall","src":"9773:18:66"},{"hexValue":"49504e46543a20746f6b656e20646f6573206e6f74206578697374","kind":"string","nativeSrc":"9793:29:66","nodeType":"YulLiteral","src":"9793:29:66","type":"","value":"IPNFT: token does not exist"}],"functionName":{"name":"mstore","nativeSrc":"9766:6:66","nodeType":"YulIdentifier","src":"9766:6:66"},"nativeSrc":"9766:57:66","nodeType":"YulFunctionCall","src":"9766:57:66"},"nativeSrc":"9766:57:66","nodeType":"YulExpressionStatement","src":"9766:57:66"},{"nativeSrc":"9832:26:66","nodeType":"YulAssignment","src":"9832:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"9844:9:66","nodeType":"YulIdentifier","src":"9844:9:66"},{"kind":"number","nativeSrc":"9855:2:66","nodeType":"YulLiteral","src":"9855:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"9840:3:66","nodeType":"YulIdentifier","src":"9840:3:66"},"nativeSrc":"9840:18:66","nodeType":"YulFunctionCall","src":"9840:18:66"},"variableNames":[{"name":"tail","nativeSrc":"9832:4:66","nodeType":"YulIdentifier","src":"9832:4:66"}]}]},"name":"abi_encode_tuple_t_stringliteral_10de41d09c4ac47b36ce55dc8332112954fd07dfed42e96d8fd589ebdddfe212__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"9513:351:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9664:9:66","nodeType":"YulTypedName","src":"9664:9:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9678:4:66","nodeType":"YulTypedName","src":"9678:4:66","type":""}],"src":"9513:351:66"},{"body":{"nativeSrc":"9901:95:66","nodeType":"YulBlock","src":"9901:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9918:1:66","nodeType":"YulLiteral","src":"9918:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"9925:3:66","nodeType":"YulLiteral","src":"9925:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"9930:10:66","nodeType":"YulLiteral","src":"9930:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"9921:3:66","nodeType":"YulIdentifier","src":"9921:3:66"},"nativeSrc":"9921:20:66","nodeType":"YulFunctionCall","src":"9921:20:66"}],"functionName":{"name":"mstore","nativeSrc":"9911:6:66","nodeType":"YulIdentifier","src":"9911:6:66"},"nativeSrc":"9911:31:66","nodeType":"YulFunctionCall","src":"9911:31:66"},"nativeSrc":"9911:31:66","nodeType":"YulExpressionStatement","src":"9911:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9958:1:66","nodeType":"YulLiteral","src":"9958:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"9961:4:66","nodeType":"YulLiteral","src":"9961:4:66","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"9951:6:66","nodeType":"YulIdentifier","src":"9951:6:66"},"nativeSrc":"9951:15:66","nodeType":"YulFunctionCall","src":"9951:15:66"},"nativeSrc":"9951:15:66","nodeType":"YulExpressionStatement","src":"9951:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9982:1:66","nodeType":"YulLiteral","src":"9982:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"9985:4:66","nodeType":"YulLiteral","src":"9985:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"9975:6:66","nodeType":"YulIdentifier","src":"9975:6:66"},"nativeSrc":"9975:15:66","nodeType":"YulFunctionCall","src":"9975:15:66"},"nativeSrc":"9975:15:66","nodeType":"YulExpressionStatement","src":"9975:15:66"}]},"name":"panic_error_0x32","nativeSrc":"9869:127:66","nodeType":"YulFunctionDefinition","src":"9869:127:66"},{"body":{"nativeSrc":"10057:65:66","nodeType":"YulBlock","src":"10057:65:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10074:1:66","nodeType":"YulLiteral","src":"10074:1:66","type":"","value":"0"},{"name":"ptr","nativeSrc":"10077:3:66","nodeType":"YulIdentifier","src":"10077:3:66"}],"functionName":{"name":"mstore","nativeSrc":"10067:6:66","nodeType":"YulIdentifier","src":"10067:6:66"},"nativeSrc":"10067:14:66","nodeType":"YulFunctionCall","src":"10067:14:66"},"nativeSrc":"10067:14:66","nodeType":"YulExpressionStatement","src":"10067:14:66"},{"nativeSrc":"10090:26:66","nodeType":"YulAssignment","src":"10090:26:66","value":{"arguments":[{"kind":"number","nativeSrc":"10108:1:66","nodeType":"YulLiteral","src":"10108:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"10111:4:66","nodeType":"YulLiteral","src":"10111:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"10098:9:66","nodeType":"YulIdentifier","src":"10098:9:66"},"nativeSrc":"10098:18:66","nodeType":"YulFunctionCall","src":"10098:18:66"},"variableNames":[{"name":"data","nativeSrc":"10090:4:66","nodeType":"YulIdentifier","src":"10090:4:66"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"10001:121:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"10040:3:66","nodeType":"YulTypedName","src":"10040:3:66","type":""}],"returnVariables":[{"name":"data","nativeSrc":"10048:4:66","nodeType":"YulTypedName","src":"10048:4:66","type":""}],"src":"10001:121:66"},{"body":{"nativeSrc":"10208:437:66","nodeType":"YulBlock","src":"10208:437:66","statements":[{"body":{"nativeSrc":"10241:398:66","nodeType":"YulBlock","src":"10241:398:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10262:1:66","nodeType":"YulLiteral","src":"10262:1:66","type":"","value":"0"},{"name":"array","nativeSrc":"10265:5:66","nodeType":"YulIdentifier","src":"10265:5:66"}],"functionName":{"name":"mstore","nativeSrc":"10255:6:66","nodeType":"YulIdentifier","src":"10255:6:66"},"nativeSrc":"10255:16:66","nodeType":"YulFunctionCall","src":"10255:16:66"},"nativeSrc":"10255:16:66","nodeType":"YulExpressionStatement","src":"10255:16:66"},{"nativeSrc":"10284:30:66","nodeType":"YulVariableDeclaration","src":"10284:30:66","value":{"arguments":[{"kind":"number","nativeSrc":"10306:1:66","nodeType":"YulLiteral","src":"10306:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"10309:4:66","nodeType":"YulLiteral","src":"10309:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"10296:9:66","nodeType":"YulIdentifier","src":"10296:9:66"},"nativeSrc":"10296:18:66","nodeType":"YulFunctionCall","src":"10296:18:66"},"variables":[{"name":"data","nativeSrc":"10288:4:66","nodeType":"YulTypedName","src":"10288:4:66","type":""}]},{"nativeSrc":"10327:57:66","nodeType":"YulVariableDeclaration","src":"10327:57:66","value":{"arguments":[{"name":"data","nativeSrc":"10350:4:66","nodeType":"YulIdentifier","src":"10350:4:66"},{"arguments":[{"kind":"number","nativeSrc":"10360:1:66","nodeType":"YulLiteral","src":"10360:1:66","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"10367:10:66","nodeType":"YulIdentifier","src":"10367:10:66"},{"kind":"number","nativeSrc":"10379:2:66","nodeType":"YulLiteral","src":"10379:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"10363:3:66","nodeType":"YulIdentifier","src":"10363:3:66"},"nativeSrc":"10363:19:66","nodeType":"YulFunctionCall","src":"10363:19:66"}],"functionName":{"name":"shr","nativeSrc":"10356:3:66","nodeType":"YulIdentifier","src":"10356:3:66"},"nativeSrc":"10356:27:66","nodeType":"YulFunctionCall","src":"10356:27:66"}],"functionName":{"name":"add","nativeSrc":"10346:3:66","nodeType":"YulIdentifier","src":"10346:3:66"},"nativeSrc":"10346:38:66","nodeType":"YulFunctionCall","src":"10346:38:66"},"variables":[{"name":"deleteStart","nativeSrc":"10331:11:66","nodeType":"YulTypedName","src":"10331:11:66","type":""}]},{"body":{"nativeSrc":"10421:23:66","nodeType":"YulBlock","src":"10421:23:66","statements":[{"nativeSrc":"10423:19:66","nodeType":"YulAssignment","src":"10423:19:66","value":{"name":"data","nativeSrc":"10438:4:66","nodeType":"YulIdentifier","src":"10438:4:66"},"variableNames":[{"name":"deleteStart","nativeSrc":"10423:11:66","nodeType":"YulIdentifier","src":"10423:11:66"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"10403:10:66","nodeType":"YulIdentifier","src":"10403:10:66"},{"kind":"number","nativeSrc":"10415:4:66","nodeType":"YulLiteral","src":"10415:4:66","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"10400:2:66","nodeType":"YulIdentifier","src":"10400:2:66"},"nativeSrc":"10400:20:66","nodeType":"YulFunctionCall","src":"10400:20:66"},"nativeSrc":"10397:47:66","nodeType":"YulIf","src":"10397:47:66"},{"nativeSrc":"10457:41:66","nodeType":"YulVariableDeclaration","src":"10457:41:66","value":{"arguments":[{"name":"data","nativeSrc":"10471:4:66","nodeType":"YulIdentifier","src":"10471:4:66"},{"arguments":[{"kind":"number","nativeSrc":"10481:1:66","nodeType":"YulLiteral","src":"10481:1:66","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"10488:3:66","nodeType":"YulIdentifier","src":"10488:3:66"},{"kind":"number","nativeSrc":"10493:2:66","nodeType":"YulLiteral","src":"10493:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"10484:3:66","nodeType":"YulIdentifier","src":"10484:3:66"},"nativeSrc":"10484:12:66","nodeType":"YulFunctionCall","src":"10484:12:66"}],"functionName":{"name":"shr","nativeSrc":"10477:3:66","nodeType":"YulIdentifier","src":"10477:3:66"},"nativeSrc":"10477:20:66","nodeType":"YulFunctionCall","src":"10477:20:66"}],"functionName":{"name":"add","nativeSrc":"10467:3:66","nodeType":"YulIdentifier","src":"10467:3:66"},"nativeSrc":"10467:31:66","nodeType":"YulFunctionCall","src":"10467:31:66"},"variables":[{"name":"_1","nativeSrc":"10461:2:66","nodeType":"YulTypedName","src":"10461:2:66","type":""}]},{"nativeSrc":"10511:24:66","nodeType":"YulVariableDeclaration","src":"10511:24:66","value":{"name":"deleteStart","nativeSrc":"10524:11:66","nodeType":"YulIdentifier","src":"10524:11:66"},"variables":[{"name":"start","nativeSrc":"10515:5:66","nodeType":"YulTypedName","src":"10515:5:66","type":""}]},{"body":{"nativeSrc":"10609:20:66","nodeType":"YulBlock","src":"10609:20:66","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"10618:5:66","nodeType":"YulIdentifier","src":"10618:5:66"},{"kind":"number","nativeSrc":"10625:1:66","nodeType":"YulLiteral","src":"10625:1:66","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"10611:6:66","nodeType":"YulIdentifier","src":"10611:6:66"},"nativeSrc":"10611:16:66","nodeType":"YulFunctionCall","src":"10611:16:66"},"nativeSrc":"10611:16:66","nodeType":"YulExpressionStatement","src":"10611:16:66"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"10559:5:66","nodeType":"YulIdentifier","src":"10559:5:66"},{"name":"_1","nativeSrc":"10566:2:66","nodeType":"YulIdentifier","src":"10566:2:66"}],"functionName":{"name":"lt","nativeSrc":"10556:2:66","nodeType":"YulIdentifier","src":"10556:2:66"},"nativeSrc":"10556:13:66","nodeType":"YulFunctionCall","src":"10556:13:66"},"nativeSrc":"10548:81:66","nodeType":"YulForLoop","post":{"nativeSrc":"10570:26:66","nodeType":"YulBlock","src":"10570:26:66","statements":[{"nativeSrc":"10572:22:66","nodeType":"YulAssignment","src":"10572:22:66","value":{"arguments":[{"name":"start","nativeSrc":"10585:5:66","nodeType":"YulIdentifier","src":"10585:5:66"},{"kind":"number","nativeSrc":"10592:1:66","nodeType":"YulLiteral","src":"10592:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10581:3:66","nodeType":"YulIdentifier","src":"10581:3:66"},"nativeSrc":"10581:13:66","nodeType":"YulFunctionCall","src":"10581:13:66"},"variableNames":[{"name":"start","nativeSrc":"10572:5:66","nodeType":"YulIdentifier","src":"10572:5:66"}]}]},"pre":{"nativeSrc":"10552:3:66","nodeType":"YulBlock","src":"10552:3:66","statements":[]},"src":"10548:81:66"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"10224:3:66","nodeType":"YulIdentifier","src":"10224:3:66"},{"kind":"number","nativeSrc":"10229:2:66","nodeType":"YulLiteral","src":"10229:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"10221:2:66","nodeType":"YulIdentifier","src":"10221:2:66"},"nativeSrc":"10221:11:66","nodeType":"YulFunctionCall","src":"10221:11:66"},"nativeSrc":"10218:421:66","nodeType":"YulIf","src":"10218:421:66"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"10127:518:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"10180:5:66","nodeType":"YulTypedName","src":"10180:5:66","type":""},{"name":"len","nativeSrc":"10187:3:66","nodeType":"YulTypedName","src":"10187:3:66","type":""},{"name":"startIndex","nativeSrc":"10192:10:66","nodeType":"YulTypedName","src":"10192:10:66","type":""}],"src":"10127:518:66"},{"body":{"nativeSrc":"10735:81:66","nodeType":"YulBlock","src":"10735:81:66","statements":[{"nativeSrc":"10745:65:66","nodeType":"YulAssignment","src":"10745:65:66","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"10760:4:66","nodeType":"YulIdentifier","src":"10760:4:66"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10778:1:66","nodeType":"YulLiteral","src":"10778:1:66","type":"","value":"3"},{"name":"len","nativeSrc":"10781:3:66","nodeType":"YulIdentifier","src":"10781:3:66"}],"functionName":{"name":"shl","nativeSrc":"10774:3:66","nodeType":"YulIdentifier","src":"10774:3:66"},"nativeSrc":"10774:11:66","nodeType":"YulFunctionCall","src":"10774:11:66"},{"arguments":[{"kind":"number","nativeSrc":"10791:1:66","nodeType":"YulLiteral","src":"10791:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"10787:3:66","nodeType":"YulIdentifier","src":"10787:3:66"},"nativeSrc":"10787:6:66","nodeType":"YulFunctionCall","src":"10787:6:66"}],"functionName":{"name":"shr","nativeSrc":"10770:3:66","nodeType":"YulIdentifier","src":"10770:3:66"},"nativeSrc":"10770:24:66","nodeType":"YulFunctionCall","src":"10770:24:66"}],"functionName":{"name":"not","nativeSrc":"10766:3:66","nodeType":"YulIdentifier","src":"10766:3:66"},"nativeSrc":"10766:29:66","nodeType":"YulFunctionCall","src":"10766:29:66"}],"functionName":{"name":"and","nativeSrc":"10756:3:66","nodeType":"YulIdentifier","src":"10756:3:66"},"nativeSrc":"10756:40:66","nodeType":"YulFunctionCall","src":"10756:40:66"},{"arguments":[{"kind":"number","nativeSrc":"10802:1:66","nodeType":"YulLiteral","src":"10802:1:66","type":"","value":"1"},{"name":"len","nativeSrc":"10805:3:66","nodeType":"YulIdentifier","src":"10805:3:66"}],"functionName":{"name":"shl","nativeSrc":"10798:3:66","nodeType":"YulIdentifier","src":"10798:3:66"},"nativeSrc":"10798:11:66","nodeType":"YulFunctionCall","src":"10798:11:66"}],"functionName":{"name":"or","nativeSrc":"10753:2:66","nodeType":"YulIdentifier","src":"10753:2:66"},"nativeSrc":"10753:57:66","nodeType":"YulFunctionCall","src":"10753:57:66"},"variableNames":[{"name":"used","nativeSrc":"10745:4:66","nodeType":"YulIdentifier","src":"10745:4:66"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"10650:166:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"10712:4:66","nodeType":"YulTypedName","src":"10712:4:66","type":""},{"name":"len","nativeSrc":"10718:3:66","nodeType":"YulTypedName","src":"10718:3:66","type":""}],"returnVariables":[{"name":"used","nativeSrc":"10726:4:66","nodeType":"YulTypedName","src":"10726:4:66","type":""}],"src":"10650:166:66"},{"body":{"nativeSrc":"10917:1203:66","nodeType":"YulBlock","src":"10917:1203:66","statements":[{"nativeSrc":"10927:24:66","nodeType":"YulVariableDeclaration","src":"10927:24:66","value":{"arguments":[{"name":"src","nativeSrc":"10947:3:66","nodeType":"YulIdentifier","src":"10947:3:66"}],"functionName":{"name":"mload","nativeSrc":"10941:5:66","nodeType":"YulIdentifier","src":"10941:5:66"},"nativeSrc":"10941:10:66","nodeType":"YulFunctionCall","src":"10941:10:66"},"variables":[{"name":"newLen","nativeSrc":"10931:6:66","nodeType":"YulTypedName","src":"10931:6:66","type":""}]},{"body":{"nativeSrc":"10994:22:66","nodeType":"YulBlock","src":"10994:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"10996:16:66","nodeType":"YulIdentifier","src":"10996:16:66"},"nativeSrc":"10996:18:66","nodeType":"YulFunctionCall","src":"10996:18:66"},"nativeSrc":"10996:18:66","nodeType":"YulExpressionStatement","src":"10996:18:66"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"10966:6:66","nodeType":"YulIdentifier","src":"10966:6:66"},{"kind":"number","nativeSrc":"10974:18:66","nodeType":"YulLiteral","src":"10974:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10963:2:66","nodeType":"YulIdentifier","src":"10963:2:66"},"nativeSrc":"10963:30:66","nodeType":"YulFunctionCall","src":"10963:30:66"},"nativeSrc":"10960:56:66","nodeType":"YulIf","src":"10960:56:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"11069:4:66","nodeType":"YulIdentifier","src":"11069:4:66"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"11107:4:66","nodeType":"YulIdentifier","src":"11107:4:66"}],"functionName":{"name":"sload","nativeSrc":"11101:5:66","nodeType":"YulIdentifier","src":"11101:5:66"},"nativeSrc":"11101:11:66","nodeType":"YulFunctionCall","src":"11101:11:66"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"11075:25:66","nodeType":"YulIdentifier","src":"11075:25:66"},"nativeSrc":"11075:38:66","nodeType":"YulFunctionCall","src":"11075:38:66"},{"name":"newLen","nativeSrc":"11115:6:66","nodeType":"YulIdentifier","src":"11115:6:66"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"11025:43:66","nodeType":"YulIdentifier","src":"11025:43:66"},"nativeSrc":"11025:97:66","nodeType":"YulFunctionCall","src":"11025:97:66"},"nativeSrc":"11025:97:66","nodeType":"YulExpressionStatement","src":"11025:97:66"},{"nativeSrc":"11131:18:66","nodeType":"YulVariableDeclaration","src":"11131:18:66","value":{"kind":"number","nativeSrc":"11148:1:66","nodeType":"YulLiteral","src":"11148:1:66","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"11135:9:66","nodeType":"YulTypedName","src":"11135:9:66","type":""}]},{"nativeSrc":"11158:17:66","nodeType":"YulAssignment","src":"11158:17:66","value":{"kind":"number","nativeSrc":"11171:4:66","nodeType":"YulLiteral","src":"11171:4:66","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"11158:9:66","nodeType":"YulIdentifier","src":"11158:9:66"}]},{"cases":[{"body":{"nativeSrc":"11221:642:66","nodeType":"YulBlock","src":"11221:642:66","statements":[{"nativeSrc":"11235:35:66","nodeType":"YulVariableDeclaration","src":"11235:35:66","value":{"arguments":[{"name":"newLen","nativeSrc":"11254:6:66","nodeType":"YulIdentifier","src":"11254:6:66"},{"arguments":[{"kind":"number","nativeSrc":"11266:2:66","nodeType":"YulLiteral","src":"11266:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"11262:3:66","nodeType":"YulIdentifier","src":"11262:3:66"},"nativeSrc":"11262:7:66","nodeType":"YulFunctionCall","src":"11262:7:66"}],"functionName":{"name":"and","nativeSrc":"11250:3:66","nodeType":"YulIdentifier","src":"11250:3:66"},"nativeSrc":"11250:20:66","nodeType":"YulFunctionCall","src":"11250:20:66"},"variables":[{"name":"loopEnd","nativeSrc":"11239:7:66","nodeType":"YulTypedName","src":"11239:7:66","type":""}]},{"nativeSrc":"11283:49:66","nodeType":"YulVariableDeclaration","src":"11283:49:66","value":{"arguments":[{"name":"slot","nativeSrc":"11327:4:66","nodeType":"YulIdentifier","src":"11327:4:66"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"11297:29:66","nodeType":"YulIdentifier","src":"11297:29:66"},"nativeSrc":"11297:35:66","nodeType":"YulFunctionCall","src":"11297:35:66"},"variables":[{"name":"dstPtr","nativeSrc":"11287:6:66","nodeType":"YulTypedName","src":"11287:6:66","type":""}]},{"nativeSrc":"11345:10:66","nodeType":"YulVariableDeclaration","src":"11345:10:66","value":{"kind":"number","nativeSrc":"11354:1:66","nodeType":"YulLiteral","src":"11354:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"11349:1:66","nodeType":"YulTypedName","src":"11349:1:66","type":""}]},{"body":{"nativeSrc":"11425:165:66","nodeType":"YulBlock","src":"11425:165:66","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"11450:6:66","nodeType":"YulIdentifier","src":"11450:6:66"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"11468:3:66","nodeType":"YulIdentifier","src":"11468:3:66"},{"name":"srcOffset","nativeSrc":"11473:9:66","nodeType":"YulIdentifier","src":"11473:9:66"}],"functionName":{"name":"add","nativeSrc":"11464:3:66","nodeType":"YulIdentifier","src":"11464:3:66"},"nativeSrc":"11464:19:66","nodeType":"YulFunctionCall","src":"11464:19:66"}],"functionName":{"name":"mload","nativeSrc":"11458:5:66","nodeType":"YulIdentifier","src":"11458:5:66"},"nativeSrc":"11458:26:66","nodeType":"YulFunctionCall","src":"11458:26:66"}],"functionName":{"name":"sstore","nativeSrc":"11443:6:66","nodeType":"YulIdentifier","src":"11443:6:66"},"nativeSrc":"11443:42:66","nodeType":"YulFunctionCall","src":"11443:42:66"},"nativeSrc":"11443:42:66","nodeType":"YulExpressionStatement","src":"11443:42:66"},{"nativeSrc":"11502:24:66","nodeType":"YulAssignment","src":"11502:24:66","value":{"arguments":[{"name":"dstPtr","nativeSrc":"11516:6:66","nodeType":"YulIdentifier","src":"11516:6:66"},{"kind":"number","nativeSrc":"11524:1:66","nodeType":"YulLiteral","src":"11524:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"11512:3:66","nodeType":"YulIdentifier","src":"11512:3:66"},"nativeSrc":"11512:14:66","nodeType":"YulFunctionCall","src":"11512:14:66"},"variableNames":[{"name":"dstPtr","nativeSrc":"11502:6:66","nodeType":"YulIdentifier","src":"11502:6:66"}]},{"nativeSrc":"11543:33:66","nodeType":"YulAssignment","src":"11543:33:66","value":{"arguments":[{"name":"srcOffset","nativeSrc":"11560:9:66","nodeType":"YulIdentifier","src":"11560:9:66"},{"kind":"number","nativeSrc":"11571:4:66","nodeType":"YulLiteral","src":"11571:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11556:3:66","nodeType":"YulIdentifier","src":"11556:3:66"},"nativeSrc":"11556:20:66","nodeType":"YulFunctionCall","src":"11556:20:66"},"variableNames":[{"name":"srcOffset","nativeSrc":"11543:9:66","nodeType":"YulIdentifier","src":"11543:9:66"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"11379:1:66","nodeType":"YulIdentifier","src":"11379:1:66"},{"name":"loopEnd","nativeSrc":"11382:7:66","nodeType":"YulIdentifier","src":"11382:7:66"}],"functionName":{"name":"lt","nativeSrc":"11376:2:66","nodeType":"YulIdentifier","src":"11376:2:66"},"nativeSrc":"11376:14:66","nodeType":"YulFunctionCall","src":"11376:14:66"},"nativeSrc":"11368:222:66","nodeType":"YulForLoop","post":{"nativeSrc":"11391:21:66","nodeType":"YulBlock","src":"11391:21:66","statements":[{"nativeSrc":"11393:17:66","nodeType":"YulAssignment","src":"11393:17:66","value":{"arguments":[{"name":"i","nativeSrc":"11402:1:66","nodeType":"YulIdentifier","src":"11402:1:66"},{"kind":"number","nativeSrc":"11405:4:66","nodeType":"YulLiteral","src":"11405:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11398:3:66","nodeType":"YulIdentifier","src":"11398:3:66"},"nativeSrc":"11398:12:66","nodeType":"YulFunctionCall","src":"11398:12:66"},"variableNames":[{"name":"i","nativeSrc":"11393:1:66","nodeType":"YulIdentifier","src":"11393:1:66"}]}]},"pre":{"nativeSrc":"11372:3:66","nodeType":"YulBlock","src":"11372:3:66","statements":[]},"src":"11368:222:66"},{"body":{"nativeSrc":"11638:166:66","nodeType":"YulBlock","src":"11638:166:66","statements":[{"nativeSrc":"11656:43:66","nodeType":"YulVariableDeclaration","src":"11656:43:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"11683:3:66","nodeType":"YulIdentifier","src":"11683:3:66"},{"name":"srcOffset","nativeSrc":"11688:9:66","nodeType":"YulIdentifier","src":"11688:9:66"}],"functionName":{"name":"add","nativeSrc":"11679:3:66","nodeType":"YulIdentifier","src":"11679:3:66"},"nativeSrc":"11679:19:66","nodeType":"YulFunctionCall","src":"11679:19:66"}],"functionName":{"name":"mload","nativeSrc":"11673:5:66","nodeType":"YulIdentifier","src":"11673:5:66"},"nativeSrc":"11673:26:66","nodeType":"YulFunctionCall","src":"11673:26:66"},"variables":[{"name":"lastValue","nativeSrc":"11660:9:66","nodeType":"YulTypedName","src":"11660:9:66","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"11723:6:66","nodeType":"YulIdentifier","src":"11723:6:66"},{"arguments":[{"name":"lastValue","nativeSrc":"11735:9:66","nodeType":"YulIdentifier","src":"11735:9:66"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11762:1:66","nodeType":"YulLiteral","src":"11762:1:66","type":"","value":"3"},{"name":"newLen","nativeSrc":"11765:6:66","nodeType":"YulIdentifier","src":"11765:6:66"}],"functionName":{"name":"shl","nativeSrc":"11758:3:66","nodeType":"YulIdentifier","src":"11758:3:66"},"nativeSrc":"11758:14:66","nodeType":"YulFunctionCall","src":"11758:14:66"},{"kind":"number","nativeSrc":"11774:3:66","nodeType":"YulLiteral","src":"11774:3:66","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"11754:3:66","nodeType":"YulIdentifier","src":"11754:3:66"},"nativeSrc":"11754:24:66","nodeType":"YulFunctionCall","src":"11754:24:66"},{"arguments":[{"kind":"number","nativeSrc":"11784:1:66","nodeType":"YulLiteral","src":"11784:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"11780:3:66","nodeType":"YulIdentifier","src":"11780:3:66"},"nativeSrc":"11780:6:66","nodeType":"YulFunctionCall","src":"11780:6:66"}],"functionName":{"name":"shr","nativeSrc":"11750:3:66","nodeType":"YulIdentifier","src":"11750:3:66"},"nativeSrc":"11750:37:66","nodeType":"YulFunctionCall","src":"11750:37:66"}],"functionName":{"name":"not","nativeSrc":"11746:3:66","nodeType":"YulIdentifier","src":"11746:3:66"},"nativeSrc":"11746:42:66","nodeType":"YulFunctionCall","src":"11746:42:66"}],"functionName":{"name":"and","nativeSrc":"11731:3:66","nodeType":"YulIdentifier","src":"11731:3:66"},"nativeSrc":"11731:58:66","nodeType":"YulFunctionCall","src":"11731:58:66"}],"functionName":{"name":"sstore","nativeSrc":"11716:6:66","nodeType":"YulIdentifier","src":"11716:6:66"},"nativeSrc":"11716:74:66","nodeType":"YulFunctionCall","src":"11716:74:66"},"nativeSrc":"11716:74:66","nodeType":"YulExpressionStatement","src":"11716:74:66"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"11609:7:66","nodeType":"YulIdentifier","src":"11609:7:66"},{"name":"newLen","nativeSrc":"11618:6:66","nodeType":"YulIdentifier","src":"11618:6:66"}],"functionName":{"name":"lt","nativeSrc":"11606:2:66","nodeType":"YulIdentifier","src":"11606:2:66"},"nativeSrc":"11606:19:66","nodeType":"YulFunctionCall","src":"11606:19:66"},"nativeSrc":"11603:201:66","nodeType":"YulIf","src":"11603:201:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"11824:4:66","nodeType":"YulIdentifier","src":"11824:4:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11838:1:66","nodeType":"YulLiteral","src":"11838:1:66","type":"","value":"1"},{"name":"newLen","nativeSrc":"11841:6:66","nodeType":"YulIdentifier","src":"11841:6:66"}],"functionName":{"name":"shl","nativeSrc":"11834:3:66","nodeType":"YulIdentifier","src":"11834:3:66"},"nativeSrc":"11834:14:66","nodeType":"YulFunctionCall","src":"11834:14:66"},{"kind":"number","nativeSrc":"11850:1:66","nodeType":"YulLiteral","src":"11850:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"11830:3:66","nodeType":"YulIdentifier","src":"11830:3:66"},"nativeSrc":"11830:22:66","nodeType":"YulFunctionCall","src":"11830:22:66"}],"functionName":{"name":"sstore","nativeSrc":"11817:6:66","nodeType":"YulIdentifier","src":"11817:6:66"},"nativeSrc":"11817:36:66","nodeType":"YulFunctionCall","src":"11817:36:66"},"nativeSrc":"11817:36:66","nodeType":"YulExpressionStatement","src":"11817:36:66"}]},"nativeSrc":"11214:649:66","nodeType":"YulCase","src":"11214:649:66","value":{"kind":"number","nativeSrc":"11219:1:66","nodeType":"YulLiteral","src":"11219:1:66","type":"","value":"1"}},{"body":{"nativeSrc":"11880:234:66","nodeType":"YulBlock","src":"11880:234:66","statements":[{"nativeSrc":"11894:14:66","nodeType":"YulVariableDeclaration","src":"11894:14:66","value":{"kind":"number","nativeSrc":"11907:1:66","nodeType":"YulLiteral","src":"11907:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"11898:5:66","nodeType":"YulTypedName","src":"11898:5:66","type":""}]},{"body":{"nativeSrc":"11943:67:66","nodeType":"YulBlock","src":"11943:67:66","statements":[{"nativeSrc":"11961:35:66","nodeType":"YulAssignment","src":"11961:35:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"11980:3:66","nodeType":"YulIdentifier","src":"11980:3:66"},{"name":"srcOffset","nativeSrc":"11985:9:66","nodeType":"YulIdentifier","src":"11985:9:66"}],"functionName":{"name":"add","nativeSrc":"11976:3:66","nodeType":"YulIdentifier","src":"11976:3:66"},"nativeSrc":"11976:19:66","nodeType":"YulFunctionCall","src":"11976:19:66"}],"functionName":{"name":"mload","nativeSrc":"11970:5:66","nodeType":"YulIdentifier","src":"11970:5:66"},"nativeSrc":"11970:26:66","nodeType":"YulFunctionCall","src":"11970:26:66"},"variableNames":[{"name":"value","nativeSrc":"11961:5:66","nodeType":"YulIdentifier","src":"11961:5:66"}]}]},"condition":{"name":"newLen","nativeSrc":"11924:6:66","nodeType":"YulIdentifier","src":"11924:6:66"},"nativeSrc":"11921:89:66","nodeType":"YulIf","src":"11921:89:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"12030:4:66","nodeType":"YulIdentifier","src":"12030:4:66"},{"arguments":[{"name":"value","nativeSrc":"12089:5:66","nodeType":"YulIdentifier","src":"12089:5:66"},{"name":"newLen","nativeSrc":"12096:6:66","nodeType":"YulIdentifier","src":"12096:6:66"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"12036:52:66","nodeType":"YulIdentifier","src":"12036:52:66"},"nativeSrc":"12036:67:66","nodeType":"YulFunctionCall","src":"12036:67:66"}],"functionName":{"name":"sstore","nativeSrc":"12023:6:66","nodeType":"YulIdentifier","src":"12023:6:66"},"nativeSrc":"12023:81:66","nodeType":"YulFunctionCall","src":"12023:81:66"},"nativeSrc":"12023:81:66","nodeType":"YulExpressionStatement","src":"12023:81:66"}]},"nativeSrc":"11872:242:66","nodeType":"YulCase","src":"11872:242:66","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"11194:6:66","nodeType":"YulIdentifier","src":"11194:6:66"},{"kind":"number","nativeSrc":"11202:2:66","nodeType":"YulLiteral","src":"11202:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"11191:2:66","nodeType":"YulIdentifier","src":"11191:2:66"},"nativeSrc":"11191:14:66","nodeType":"YulFunctionCall","src":"11191:14:66"},"nativeSrc":"11184:930:66","nodeType":"YulSwitch","src":"11184:930:66"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"10821:1299:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"10902:4:66","nodeType":"YulTypedName","src":"10902:4:66","type":""},{"name":"src","nativeSrc":"10908:3:66","nodeType":"YulTypedName","src":"10908:3:66","type":""}],"src":"10821:1299:66"},{"body":{"nativeSrc":"12284:158:66","nodeType":"YulBlock","src":"12284:158:66","statements":[{"expression":{"arguments":[{"name":"value0","nativeSrc":"12317:6:66","nodeType":"YulIdentifier","src":"12317:6:66"},{"name":"headStart","nativeSrc":"12325:9:66","nodeType":"YulIdentifier","src":"12325:9:66"}],"functionName":{"name":"abi_encode_enum_IPType","nativeSrc":"12294:22:66","nodeType":"YulIdentifier","src":"12294:22:66"},"nativeSrc":"12294:41:66","nodeType":"YulFunctionCall","src":"12294:41:66"},"nativeSrc":"12294:41:66","nodeType":"YulExpressionStatement","src":"12294:41:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12355:9:66","nodeType":"YulIdentifier","src":"12355:9:66"},{"kind":"number","nativeSrc":"12366:2:66","nodeType":"YulLiteral","src":"12366:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12351:3:66","nodeType":"YulIdentifier","src":"12351:3:66"},"nativeSrc":"12351:18:66","nodeType":"YulFunctionCall","src":"12351:18:66"},{"kind":"number","nativeSrc":"12371:2:66","nodeType":"YulLiteral","src":"12371:2:66","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"12344:6:66","nodeType":"YulIdentifier","src":"12344:6:66"},"nativeSrc":"12344:30:66","nodeType":"YulFunctionCall","src":"12344:30:66"},"nativeSrc":"12344:30:66","nodeType":"YulExpressionStatement","src":"12344:30:66"},{"nativeSrc":"12383:53:66","nodeType":"YulAssignment","src":"12383:53:66","value":{"arguments":[{"name":"value1","nativeSrc":"12409:6:66","nodeType":"YulIdentifier","src":"12409:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"12421:9:66","nodeType":"YulIdentifier","src":"12421:9:66"},{"kind":"number","nativeSrc":"12432:2:66","nodeType":"YulLiteral","src":"12432:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12417:3:66","nodeType":"YulIdentifier","src":"12417:3:66"},"nativeSrc":"12417:18:66","nodeType":"YulFunctionCall","src":"12417:18:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"12391:17:66","nodeType":"YulIdentifier","src":"12391:17:66"},"nativeSrc":"12391:45:66","nodeType":"YulFunctionCall","src":"12391:45:66"},"variableNames":[{"name":"tail","nativeSrc":"12383:4:66","nodeType":"YulIdentifier","src":"12383:4:66"}]}]},"name":"abi_encode_tuple_t_enum$_IPType_$12747_t_string_memory_ptr__to_t_uint8_t_string_memory_ptr__fromStack_reversed","nativeSrc":"12125:317:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12245:9:66","nodeType":"YulTypedName","src":"12245:9:66","type":""},{"name":"value1","nativeSrc":"12256:6:66","nodeType":"YulTypedName","src":"12256:6:66","type":""},{"name":"value0","nativeSrc":"12264:6:66","nodeType":"YulTypedName","src":"12264:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12275:4:66","nodeType":"YulTypedName","src":"12275:4:66","type":""}],"src":"12125:317:66"},{"body":{"nativeSrc":"12634:309:66","nodeType":"YulBlock","src":"12634:309:66","statements":[{"nativeSrc":"12644:27:66","nodeType":"YulVariableDeclaration","src":"12644:27:66","value":{"arguments":[{"name":"value0","nativeSrc":"12664:6:66","nodeType":"YulIdentifier","src":"12664:6:66"}],"functionName":{"name":"mload","nativeSrc":"12658:5:66","nodeType":"YulIdentifier","src":"12658:5:66"},"nativeSrc":"12658:13:66","nodeType":"YulFunctionCall","src":"12658:13:66"},"variables":[{"name":"length","nativeSrc":"12648:6:66","nodeType":"YulTypedName","src":"12648:6:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"12719:6:66","nodeType":"YulIdentifier","src":"12719:6:66"},{"kind":"number","nativeSrc":"12727:4:66","nodeType":"YulLiteral","src":"12727:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12715:3:66","nodeType":"YulIdentifier","src":"12715:3:66"},"nativeSrc":"12715:17:66","nodeType":"YulFunctionCall","src":"12715:17:66"},{"name":"pos","nativeSrc":"12734:3:66","nodeType":"YulIdentifier","src":"12734:3:66"},{"name":"length","nativeSrc":"12739:6:66","nodeType":"YulIdentifier","src":"12739:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"12680:34:66","nodeType":"YulIdentifier","src":"12680:34:66"},"nativeSrc":"12680:66:66","nodeType":"YulFunctionCall","src":"12680:66:66"},"nativeSrc":"12680:66:66","nodeType":"YulExpressionStatement","src":"12680:66:66"},{"nativeSrc":"12755:29:66","nodeType":"YulVariableDeclaration","src":"12755:29:66","value":{"arguments":[{"name":"pos","nativeSrc":"12772:3:66","nodeType":"YulIdentifier","src":"12772:3:66"},{"name":"length","nativeSrc":"12777:6:66","nodeType":"YulIdentifier","src":"12777:6:66"}],"functionName":{"name":"add","nativeSrc":"12768:3:66","nodeType":"YulIdentifier","src":"12768:3:66"},"nativeSrc":"12768:16:66","nodeType":"YulFunctionCall","src":"12768:16:66"},"variables":[{"name":"end_1","nativeSrc":"12759:5:66","nodeType":"YulTypedName","src":"12759:5:66","type":""}]},{"nativeSrc":"12793:29:66","nodeType":"YulVariableDeclaration","src":"12793:29:66","value":{"arguments":[{"name":"value1","nativeSrc":"12815:6:66","nodeType":"YulIdentifier","src":"12815:6:66"}],"functionName":{"name":"mload","nativeSrc":"12809:5:66","nodeType":"YulIdentifier","src":"12809:5:66"},"nativeSrc":"12809:13:66","nodeType":"YulFunctionCall","src":"12809:13:66"},"variables":[{"name":"length_1","nativeSrc":"12797:8:66","nodeType":"YulTypedName","src":"12797:8:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value1","nativeSrc":"12870:6:66","nodeType":"YulIdentifier","src":"12870:6:66"},{"kind":"number","nativeSrc":"12878:4:66","nodeType":"YulLiteral","src":"12878:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"12866:3:66","nodeType":"YulIdentifier","src":"12866:3:66"},"nativeSrc":"12866:17:66","nodeType":"YulFunctionCall","src":"12866:17:66"},{"name":"end_1","nativeSrc":"12885:5:66","nodeType":"YulIdentifier","src":"12885:5:66"},{"name":"length_1","nativeSrc":"12892:8:66","nodeType":"YulIdentifier","src":"12892:8:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"12831:34:66","nodeType":"YulIdentifier","src":"12831:34:66"},"nativeSrc":"12831:70:66","nodeType":"YulFunctionCall","src":"12831:70:66"},"nativeSrc":"12831:70:66","nodeType":"YulExpressionStatement","src":"12831:70:66"},{"nativeSrc":"12910:27:66","nodeType":"YulAssignment","src":"12910:27:66","value":{"arguments":[{"name":"end_1","nativeSrc":"12921:5:66","nodeType":"YulIdentifier","src":"12921:5:66"},{"name":"length_1","nativeSrc":"12928:8:66","nodeType":"YulIdentifier","src":"12928:8:66"}],"functionName":{"name":"add","nativeSrc":"12917:3:66","nodeType":"YulIdentifier","src":"12917:3:66"},"nativeSrc":"12917:20:66","nodeType":"YulFunctionCall","src":"12917:20:66"},"variableNames":[{"name":"end","nativeSrc":"12910:3:66","nodeType":"YulIdentifier","src":"12910:3:66"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"12447:496:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"12602:3:66","nodeType":"YulTypedName","src":"12602:3:66","type":""},{"name":"value1","nativeSrc":"12607:6:66","nodeType":"YulTypedName","src":"12607:6:66","type":""},{"name":"value0","nativeSrc":"12615:6:66","nodeType":"YulTypedName","src":"12615:6:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"12626:3:66","nodeType":"YulTypedName","src":"12626:3:66","type":""}],"src":"12447:496:66"},{"body":{"nativeSrc":"13151:282:66","nodeType":"YulBlock","src":"13151:282:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13168:9:66","nodeType":"YulIdentifier","src":"13168:9:66"},{"arguments":[{"name":"value0","nativeSrc":"13183:6:66","nodeType":"YulIdentifier","src":"13183:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13199:3:66","nodeType":"YulLiteral","src":"13199:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"13204:1:66","nodeType":"YulLiteral","src":"13204:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13195:3:66","nodeType":"YulIdentifier","src":"13195:3:66"},"nativeSrc":"13195:11:66","nodeType":"YulFunctionCall","src":"13195:11:66"},{"kind":"number","nativeSrc":"13208:1:66","nodeType":"YulLiteral","src":"13208:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"13191:3:66","nodeType":"YulIdentifier","src":"13191:3:66"},"nativeSrc":"13191:19:66","nodeType":"YulFunctionCall","src":"13191:19:66"}],"functionName":{"name":"and","nativeSrc":"13179:3:66","nodeType":"YulIdentifier","src":"13179:3:66"},"nativeSrc":"13179:32:66","nodeType":"YulFunctionCall","src":"13179:32:66"}],"functionName":{"name":"mstore","nativeSrc":"13161:6:66","nodeType":"YulIdentifier","src":"13161:6:66"},"nativeSrc":"13161:51:66","nodeType":"YulFunctionCall","src":"13161:51:66"},"nativeSrc":"13161:51:66","nodeType":"YulExpressionStatement","src":"13161:51:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13232:9:66","nodeType":"YulIdentifier","src":"13232:9:66"},{"kind":"number","nativeSrc":"13243:2:66","nodeType":"YulLiteral","src":"13243:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13228:3:66","nodeType":"YulIdentifier","src":"13228:3:66"},"nativeSrc":"13228:18:66","nodeType":"YulFunctionCall","src":"13228:18:66"},{"arguments":[{"name":"value1","nativeSrc":"13252:6:66","nodeType":"YulIdentifier","src":"13252:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13268:3:66","nodeType":"YulLiteral","src":"13268:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"13273:1:66","nodeType":"YulLiteral","src":"13273:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"13264:3:66","nodeType":"YulIdentifier","src":"13264:3:66"},"nativeSrc":"13264:11:66","nodeType":"YulFunctionCall","src":"13264:11:66"},{"kind":"number","nativeSrc":"13277:1:66","nodeType":"YulLiteral","src":"13277:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"13260:3:66","nodeType":"YulIdentifier","src":"13260:3:66"},"nativeSrc":"13260:19:66","nodeType":"YulFunctionCall","src":"13260:19:66"}],"functionName":{"name":"and","nativeSrc":"13248:3:66","nodeType":"YulIdentifier","src":"13248:3:66"},"nativeSrc":"13248:32:66","nodeType":"YulFunctionCall","src":"13248:32:66"}],"functionName":{"name":"mstore","nativeSrc":"13221:6:66","nodeType":"YulIdentifier","src":"13221:6:66"},"nativeSrc":"13221:60:66","nodeType":"YulFunctionCall","src":"13221:60:66"},"nativeSrc":"13221:60:66","nodeType":"YulExpressionStatement","src":"13221:60:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13301:9:66","nodeType":"YulIdentifier","src":"13301:9:66"},{"kind":"number","nativeSrc":"13312:2:66","nodeType":"YulLiteral","src":"13312:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13297:3:66","nodeType":"YulIdentifier","src":"13297:3:66"},"nativeSrc":"13297:18:66","nodeType":"YulFunctionCall","src":"13297:18:66"},{"name":"value2","nativeSrc":"13317:6:66","nodeType":"YulIdentifier","src":"13317:6:66"}],"functionName":{"name":"mstore","nativeSrc":"13290:6:66","nodeType":"YulIdentifier","src":"13290:6:66"},"nativeSrc":"13290:34:66","nodeType":"YulFunctionCall","src":"13290:34:66"},"nativeSrc":"13290:34:66","nodeType":"YulExpressionStatement","src":"13290:34:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13344:9:66","nodeType":"YulIdentifier","src":"13344:9:66"},{"kind":"number","nativeSrc":"13355:2:66","nodeType":"YulLiteral","src":"13355:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"13340:3:66","nodeType":"YulIdentifier","src":"13340:3:66"},"nativeSrc":"13340:18:66","nodeType":"YulFunctionCall","src":"13340:18:66"},{"kind":"number","nativeSrc":"13360:3:66","nodeType":"YulLiteral","src":"13360:3:66","type":"","value":"128"}],"functionName":{"name":"mstore","nativeSrc":"13333:6:66","nodeType":"YulIdentifier","src":"13333:6:66"},"nativeSrc":"13333:31:66","nodeType":"YulFunctionCall","src":"13333:31:66"},"nativeSrc":"13333:31:66","nodeType":"YulExpressionStatement","src":"13333:31:66"},{"nativeSrc":"13373:54:66","nodeType":"YulAssignment","src":"13373:54:66","value":{"arguments":[{"name":"value3","nativeSrc":"13399:6:66","nodeType":"YulIdentifier","src":"13399:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"13411:9:66","nodeType":"YulIdentifier","src":"13411:9:66"},{"kind":"number","nativeSrc":"13422:3:66","nodeType":"YulLiteral","src":"13422:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"13407:3:66","nodeType":"YulIdentifier","src":"13407:3:66"},"nativeSrc":"13407:19:66","nodeType":"YulFunctionCall","src":"13407:19:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"13381:17:66","nodeType":"YulIdentifier","src":"13381:17:66"},"nativeSrc":"13381:46:66","nodeType":"YulFunctionCall","src":"13381:46:66"},"variableNames":[{"name":"tail","nativeSrc":"13373:4:66","nodeType":"YulIdentifier","src":"13373:4:66"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"12948:485:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13096:9:66","nodeType":"YulTypedName","src":"13096:9:66","type":""},{"name":"value3","nativeSrc":"13107:6:66","nodeType":"YulTypedName","src":"13107:6:66","type":""},{"name":"value2","nativeSrc":"13115:6:66","nodeType":"YulTypedName","src":"13115:6:66","type":""},{"name":"value1","nativeSrc":"13123:6:66","nodeType":"YulTypedName","src":"13123:6:66","type":""},{"name":"value0","nativeSrc":"13131:6:66","nodeType":"YulTypedName","src":"13131:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13142:4:66","nodeType":"YulTypedName","src":"13142:4:66","type":""}],"src":"12948:485:66"},{"body":{"nativeSrc":"13518:169:66","nodeType":"YulBlock","src":"13518:169:66","statements":[{"body":{"nativeSrc":"13564:16:66","nodeType":"YulBlock","src":"13564:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13573:1:66","nodeType":"YulLiteral","src":"13573:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"13576:1:66","nodeType":"YulLiteral","src":"13576:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13566:6:66","nodeType":"YulIdentifier","src":"13566:6:66"},"nativeSrc":"13566:12:66","nodeType":"YulFunctionCall","src":"13566:12:66"},"nativeSrc":"13566:12:66","nodeType":"YulExpressionStatement","src":"13566:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13539:7:66","nodeType":"YulIdentifier","src":"13539:7:66"},{"name":"headStart","nativeSrc":"13548:9:66","nodeType":"YulIdentifier","src":"13548:9:66"}],"functionName":{"name":"sub","nativeSrc":"13535:3:66","nodeType":"YulIdentifier","src":"13535:3:66"},"nativeSrc":"13535:23:66","nodeType":"YulFunctionCall","src":"13535:23:66"},{"kind":"number","nativeSrc":"13560:2:66","nodeType":"YulLiteral","src":"13560:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"13531:3:66","nodeType":"YulIdentifier","src":"13531:3:66"},"nativeSrc":"13531:32:66","nodeType":"YulFunctionCall","src":"13531:32:66"},"nativeSrc":"13528:52:66","nodeType":"YulIf","src":"13528:52:66"},{"nativeSrc":"13589:29:66","nodeType":"YulVariableDeclaration","src":"13589:29:66","value":{"arguments":[{"name":"headStart","nativeSrc":"13608:9:66","nodeType":"YulIdentifier","src":"13608:9:66"}],"functionName":{"name":"mload","nativeSrc":"13602:5:66","nodeType":"YulIdentifier","src":"13602:5:66"},"nativeSrc":"13602:16:66","nodeType":"YulFunctionCall","src":"13602:16:66"},"variables":[{"name":"value","nativeSrc":"13593:5:66","nodeType":"YulTypedName","src":"13593:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"13651:5:66","nodeType":"YulIdentifier","src":"13651:5:66"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"13627:23:66","nodeType":"YulIdentifier","src":"13627:23:66"},"nativeSrc":"13627:30:66","nodeType":"YulFunctionCall","src":"13627:30:66"},"nativeSrc":"13627:30:66","nodeType":"YulExpressionStatement","src":"13627:30:66"},{"nativeSrc":"13666:15:66","nodeType":"YulAssignment","src":"13666:15:66","value":{"name":"value","nativeSrc":"13676:5:66","nodeType":"YulIdentifier","src":"13676:5:66"},"variableNames":[{"name":"value0","nativeSrc":"13666:6:66","nodeType":"YulIdentifier","src":"13666:6:66"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nativeSrc":"13438:249:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13484:9:66","nodeType":"YulTypedName","src":"13484:9:66","type":""},{"name":"dataEnd","nativeSrc":"13495:7:66","nodeType":"YulTypedName","src":"13495:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13507:6:66","nodeType":"YulTypedName","src":"13507:6:66","type":""}],"src":"13438:249:66"},{"body":{"nativeSrc":"13724:95:66","nodeType":"YulBlock","src":"13724:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13741:1:66","nodeType":"YulLiteral","src":"13741:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"13748:3:66","nodeType":"YulLiteral","src":"13748:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"13753:10:66","nodeType":"YulLiteral","src":"13753:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"13744:3:66","nodeType":"YulIdentifier","src":"13744:3:66"},"nativeSrc":"13744:20:66","nodeType":"YulFunctionCall","src":"13744:20:66"}],"functionName":{"name":"mstore","nativeSrc":"13734:6:66","nodeType":"YulIdentifier","src":"13734:6:66"},"nativeSrc":"13734:31:66","nodeType":"YulFunctionCall","src":"13734:31:66"},"nativeSrc":"13734:31:66","nodeType":"YulExpressionStatement","src":"13734:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13781:1:66","nodeType":"YulLiteral","src":"13781:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"13784:4:66","nodeType":"YulLiteral","src":"13784:4:66","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"13774:6:66","nodeType":"YulIdentifier","src":"13774:6:66"},"nativeSrc":"13774:15:66","nodeType":"YulFunctionCall","src":"13774:15:66"},"nativeSrc":"13774:15:66","nodeType":"YulExpressionStatement","src":"13774:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13805:1:66","nodeType":"YulLiteral","src":"13805:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"13808:4:66","nodeType":"YulLiteral","src":"13808:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"13798:6:66","nodeType":"YulIdentifier","src":"13798:6:66"},"nativeSrc":"13798:15:66","nodeType":"YulFunctionCall","src":"13798:15:66"},"nativeSrc":"13798:15:66","nodeType":"YulExpressionStatement","src":"13798:15:66"}]},"name":"panic_error_0x12","nativeSrc":"13692:127:66","nodeType":"YulFunctionDefinition","src":"13692:127:66"},{"body":{"nativeSrc":"13953:145:66","nodeType":"YulBlock","src":"13953:145:66","statements":[{"nativeSrc":"13963:26:66","nodeType":"YulAssignment","src":"13963:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"13975:9:66","nodeType":"YulIdentifier","src":"13975:9:66"},{"kind":"number","nativeSrc":"13986:2:66","nodeType":"YulLiteral","src":"13986:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13971:3:66","nodeType":"YulIdentifier","src":"13971:3:66"},"nativeSrc":"13971:18:66","nodeType":"YulFunctionCall","src":"13971:18:66"},"variableNames":[{"name":"tail","nativeSrc":"13963:4:66","nodeType":"YulIdentifier","src":"13963:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"14005:9:66","nodeType":"YulIdentifier","src":"14005:9:66"},{"arguments":[{"name":"value0","nativeSrc":"14020:6:66","nodeType":"YulIdentifier","src":"14020:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14036:3:66","nodeType":"YulLiteral","src":"14036:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"14041:1:66","nodeType":"YulLiteral","src":"14041:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"14032:3:66","nodeType":"YulIdentifier","src":"14032:3:66"},"nativeSrc":"14032:11:66","nodeType":"YulFunctionCall","src":"14032:11:66"},{"kind":"number","nativeSrc":"14045:1:66","nodeType":"YulLiteral","src":"14045:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"14028:3:66","nodeType":"YulIdentifier","src":"14028:3:66"},"nativeSrc":"14028:19:66","nodeType":"YulFunctionCall","src":"14028:19:66"}],"functionName":{"name":"and","nativeSrc":"14016:3:66","nodeType":"YulIdentifier","src":"14016:3:66"},"nativeSrc":"14016:32:66","nodeType":"YulFunctionCall","src":"14016:32:66"}],"functionName":{"name":"mstore","nativeSrc":"13998:6:66","nodeType":"YulIdentifier","src":"13998:6:66"},"nativeSrc":"13998:51:66","nodeType":"YulFunctionCall","src":"13998:51:66"},"nativeSrc":"13998:51:66","nodeType":"YulExpressionStatement","src":"13998:51:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14069:9:66","nodeType":"YulIdentifier","src":"14069:9:66"},{"kind":"number","nativeSrc":"14080:2:66","nodeType":"YulLiteral","src":"14080:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14065:3:66","nodeType":"YulIdentifier","src":"14065:3:66"},"nativeSrc":"14065:18:66","nodeType":"YulFunctionCall","src":"14065:18:66"},{"name":"value1","nativeSrc":"14085:6:66","nodeType":"YulIdentifier","src":"14085:6:66"}],"functionName":{"name":"mstore","nativeSrc":"14058:6:66","nodeType":"YulIdentifier","src":"14058:6:66"},"nativeSrc":"14058:34:66","nodeType":"YulFunctionCall","src":"14058:34:66"},"nativeSrc":"14058:34:66","nodeType":"YulExpressionStatement","src":"14058:34:66"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"13824:274:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13914:9:66","nodeType":"YulTypedName","src":"13914:9:66","type":""},{"name":"value1","nativeSrc":"13925:6:66","nodeType":"YulTypedName","src":"13925:6:66","type":""},{"name":"value0","nativeSrc":"13933:6:66","nodeType":"YulTypedName","src":"13933:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13944:4:66","nodeType":"YulTypedName","src":"13944:4:66","type":""}],"src":"13824:274:66"}]},"contents":"{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := 0\n        value := calldataload(add(headStart, 32))\n        value1 := value\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        let value := 0\n        value := calldataload(add(headStart, 64))\n        value2 := value\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_enum_IPType(value, pos)\n    {\n        if iszero(lt(value, 4))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(pos, value)\n    }\n    function abi_encode_tuple_t_struct$_IPInfo_$12757_memory_ptr__to_t_struct$_IPInfo_$12757_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let memberValue0 := mload(value0)\n        mstore(add(headStart, 32), 0x80)\n        let tail_1 := abi_encode_string(memberValue0, add(headStart, 160))\n        let memberValue0_1 := mload(add(value0, 32))\n        mstore(add(headStart, 64), add(sub(tail_1, headStart), not(31)))\n        let tail_2 := abi_encode_string(memberValue0_1, tail_1)\n        let memberValue0_2 := mload(add(value0, 64))\n        abi_encode_enum_IPType(memberValue0_2, add(headStart, 96))\n        mstore(add(headStart, 0x80), mload(add(value0, 96)))\n        tail := tail_2\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, 32)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, 32)\n            srcPtr := add(srcPtr, 32)\n        }\n        tail := pos\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_available_length_string(src, length, end) -> array\n    {\n        let size := 0\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let result := and(add(length, 31), not(31))\n        size := add(result, 0x20)\n        let memPtr := 0\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(result, 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        array := memPtr\n        mstore(memPtr, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), src, length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n    }\n    function abi_decode_string(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        array := abi_decode_available_length_string(add(offset, 0x20), calldataload(offset), end)\n    }\n    function abi_decode_tuple_t_addresst_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_enum$_IPType_$12747(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_string(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_string(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, 0xffffffffffffffff) { revert(0, 0) }\n        value3 := abi_decode_string(add(headStart, offset_2), dataEnd)\n        let value := calldataload(add(headStart, 128))\n        if iszero(lt(value, 4)) { revert(0, 0) }\n        value4 := value\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        let value := 0\n        value := calldataload(add(headStart, 64))\n        value2 := value\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value3 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_9733be426b13e9a9d956b569fa7cbe74e4c1780e75f1f56e803452958eccf8dd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"IPNFT: index out of bounds\")\n        tail := add(headStart, 96)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_stringliteral_10de41d09c4ac47b36ce55dc8332112954fd07dfed42e96d8fd589ebdddfe212__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"IPNFT: token does not exist\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_t_enum$_IPType_$12747_t_string_memory_ptr__to_t_uint8_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        abi_encode_enum_IPType(value0, headStart)\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_string(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory_with_cleanup(add(value1, 0x20), end_1, length_1)\n        end := add(end_1, length_1)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n}","id":66,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063979f52921161007c578063979f52921461028b578063a22cb4651461029e578063b88d4fde146102b1578063c87b56dd146102c4578063e985e9c5146102d7578063f2fde38b146102ea57600080fd5b806370a0823114610237578063715018a61461024a5780638462151c146102525780638da5cb5b1461027257806395d89b411461028357600080fd5b806323b872dd116100ff57806323b872dd146101cb5780632f745c59146101de57806342842e0e146101f15780634effbf20146102045780636352211e1461022457600080fd5b806301ffc9a71461013c57806306fdde0314610164578063081812fc14610179578063095ea7b3146101a457806318160ddd146101b9575b600080fd5b61014f61014a36600461142c565b6102fd565b60405190151581526020015b60405180910390f35b61016c610328565b60405161015b9190611499565b61018c6101873660046114ac565b6103ba565b6040516001600160a01b03909116815260200161015b565b6101b76101b23660046114e1565b6103e3565b005b6008545b60405190815260200161015b565b6101b76101d936600461150b565b6103f2565b6101bd6101ec3660046114e1565b610482565b6101b76101ff36600461150b565b61059c565b6102176102123660046114ac565b6105bc565b60405161015b9190611580565b61018c6102323660046114ac565b6107c9565b6101bd6102453660046115e3565b6107d4565b6101b761081c565b6102656102603660046115e3565b610830565b60405161015b91906115fe565b6007546001600160a01b031661018c565b61016c6108c8565b6101bd6102993660046116f1565b6108d7565b6101b76102ac3660046117af565b6109f3565b6101b76102bf3660046117eb565b6109fe565b61016c6102d23660046114ac565b610a16565b61014f6102e5366004611867565b610b27565b6101b76102f83660046115e3565b610b55565b60006001600160e01b03198216632483248360e11b1480610322575061032282610b93565b92915050565b6060600080546103379061189a565b80601f01602080910402602001604051908101604052809291908181526020018280546103639061189a565b80156103b05780601f10610385576101008083540402835291602001916103b0565b820191906000526020600020905b81548152906001019060200180831161039357829003601f168201915b5050505050905090565b60006103c582610be3565b506000828152600460205260409020546001600160a01b0316610322565b6103ee828233610c1c565b5050565b6001600160a01b03821661042157604051633250574960e11b8152600060048201526024015b60405180910390fd5b600061042e838333610c29565b9050836001600160a01b0316816001600160a01b03161461047c576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610418565b50505050565b600061048d836107d4565b82106104db5760405162461bcd60e51b815260206004820152601a60248201527f49504e46543a20696e646578206f7574206f6620626f756e64730000000000006044820152606401610418565b6000805b600854811015610553576000818152600260205260409020546001600160a01b0316151580156105285750846001600160a01b031661051d826107c9565b6001600160a01b0316145b1561054b5783820361053d5791506103229050565b81610547816118d4565b9250505b6001016104df565b5060405162461bcd60e51b815260206004820152601a60248201527f49504e46543a20696e646578206f7574206f6620626f756e64730000000000006044820152606401610418565b6105b7838383604051806020016040528060008152506109fe565b505050565b6105e5604080516080810182526060808252602082015290810160008152602001600081525090565b6000828152600260205260409020546001600160a01b03166106495760405162461bcd60e51b815260206004820152601b60248201527f49504e46543a20746f6b656e20646f6573206e6f7420657869737400000000006044820152606401610418565b600082815260096020526040908190208151608081019092528054829082906106719061189a565b80601f016020809104026020016040519081016040528092919081815260200182805461069d9061189a565b80156106ea5780601f106106bf576101008083540402835291602001916106ea565b820191906000526020600020905b8154815290600101906020018083116106cd57829003601f168201915b505050505081526020016001820180546107039061189a565b80601f016020809104026020016040519081016040528092919081815260200182805461072f9061189a565b801561077c5780601f106107515761010080835404028352916020019161077c565b820191906000526020600020905b81548152906001019060200180831161075f57829003601f168201915b5050509183525050600282015460209091019060ff1660038111156107a3576107a3611548565b60038111156107b4576107b4611548565b81526020016003820154815250509050919050565b600061032282610be3565b60006001600160a01b038216610800576040516322718ad960e21b815260006004820152602401610418565b506001600160a01b031660009081526003602052604090205490565b610824610c40565b61082e6000610c6d565b565b6060600061083d836107d4565b905060008167ffffffffffffffff81111561085a5761085a611641565b604051908082528060200260200182016040528015610883578160200160208202803683370190505b50905060005b828110156108c05761089b8582610482565b8282815181106108ad576108ad6118fb565b6020908102919091010152600101610889565b509392505050565b6060600180546103379061189a565b60006108e1610c40565b6008805490819060006108f3836118d4565b91905055506109028782610cbf565b61090c8187610cd9565b604051806080016040528086815260200185815260200184600381111561093557610935611548565b81524260209182015260008381526009909152604090208151819061095a9082611958565b506020820151600182019061096f9082611958565b50604082015160028201805460ff1916600183600381111561099357610993611548565b021790555060608201518160030155905050866001600160a01b0316817fa11168e0b0496738928286f747e505f139d6440da347cb53c2508178dcc2419b85886040516109e1929190611a17565b60405180910390a39695505050505050565b6103ee338383610d29565b610a098484846103f2565b61047c3385858585610dc8565b6060610a2182610be3565b5060008281526006602052604081208054610a3b9061189a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a679061189a565b8015610ab45780601f10610a8957610100808354040283529160200191610ab4565b820191906000526020600020905b815481529060010190602001808311610a9757829003601f168201915b505050505090506000610ad260408051602081019091526000815290565b90508051600003610ae4575092915050565b815115610b16578082604051602001610afe929190611a37565b60405160208183030381529060405292505050919050565b610b1f84610ef3565b949350505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610b5d610c40565b6001600160a01b038116610b8757604051631e4fbdf760e01b815260006004820152602401610418565b610b9081610c6d565b50565b60006001600160e01b031982166380ac58cd60e01b1480610bc457506001600160e01b03198216635b5e139f60e01b145b8061032257506301ffc9a760e01b6001600160e01b0319831614610322565b6000818152600260205260408120546001600160a01b03168061032257604051637e27328960e01b815260048101849052602401610418565b6105b78383836001610f68565b600080610c3785858561106e565b95945050505050565b6007546001600160a01b0316331461082e5760405163118cdaa760e01b8152336004820152602401610418565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6103ee828260405180602001604052806000815250611167565b6000828152600660205260409020610cf18282611958565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b6001600160a01b038216610d5b57604051630b61174360e31b81526001600160a01b0383166004820152602401610418565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610eec57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610e0a908890889087908790600401611a66565b6020604051808303816000875af1925050508015610e45575060408051601f3d908101601f19168201909252610e4291810190611aa3565b60015b610eae573d808015610e73576040519150601f19603f3d011682016040523d82523d6000602084013e610e78565b606091505b508051600003610ea657604051633250574960e11b81526001600160a01b0385166004820152602401610418565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610eea57604051633250574960e11b81526001600160a01b0385166004820152602401610418565b505b5050505050565b6060610efe82610be3565b506000610f1660408051602081019091526000815290565b90506000815111610f365760405180602001604052806000815250610f61565b80610f408461117f565b604051602001610f51929190611a37565b6040516020818303038152906040525b9392505050565b8080610f7c57506001600160a01b03821615155b1561103e576000610f8c84610be3565b90506001600160a01b03831615801590610fb85750826001600160a01b0316816001600160a01b031614155b8015610fcb5750610fc98184610b27565b155b15610ff45760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610418565b811561103c5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6000828152600260205260408120546001600160a01b039081169083161561109b5761109b818486611212565b6001600160a01b038116156110d9576110b8600085600080610f68565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615611108576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6111718383611276565b6105b7336000858585610dc8565b6060600061118c836112db565b600101905060008167ffffffffffffffff8111156111ac576111ac611641565b6040519080825280601f01601f1916602001820160405280156111d6576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846111e057509392505050565b61121d8383836113b3565b6105b7576001600160a01b03831661124b57604051637e27328960e01b815260048101829052602401610418565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610418565b6001600160a01b0382166112a057604051633250574960e11b815260006004820152602401610418565b60006112ae83836000610c29565b90506001600160a01b038116156105b7576040516339e3563760e11b815260006004820152602401610418565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061131a5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611346576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061136457662386f26fc10000830492506010015b6305f5e100831061137c576305f5e100830492506008015b612710831061139057612710830492506004015b606483106113a2576064830492506002015b600a83106103225760010192915050565b60006001600160a01b03831615801590610b1f5750826001600160a01b0316846001600160a01b031614806113ed57506113ed8484610b27565b80610b1f5750506000908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b031981168114610b9057600080fd5b60006020828403121561143e57600080fd5b8135610f6181611416565b60005b8381101561146457818101518382015260200161144c565b50506000910152565b60008151808452611485816020860160208601611449565b601f01601f19169290920160200192915050565b602081526000610f61602083018461146d565b6000602082840312156114be57600080fd5b5035919050565b80356001600160a01b03811681146114dc57600080fd5b919050565b600080604083850312156114f457600080fd5b6114fd836114c5565b946020939093013593505050565b60008060006060848603121561152057600080fd5b611529846114c5565b9250611537602085016114c5565b929592945050506040919091013590565b634e487b7160e01b600052602160045260246000fd5b6004811061157c57634e487b7160e01b600052602160045260246000fd5b9052565b60208152600082516080602084015261159c60a084018261146d565b90506020840151601f198483030160408501526115b9828261146d565b91505060408401516115ce606085018261155e565b50606084015160808401528091505092915050565b6000602082840312156115f557600080fd5b610f61826114c5565b602080825282518282018190526000918401906040840190835b81811015611636578351835260209384019390920191600101611618565b509095945050505050565b634e487b7160e01b600052604160045260246000fd5b60008067ffffffffffffffff84111561167257611672611641565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156116a1576116a1611641565b6040528381529050808284018510156116b957600080fd5b83836020830137600060208583010152509392505050565b600082601f8301126116e257600080fd5b610f6183833560208501611657565b600080600080600060a0868803121561170957600080fd5b611712866114c5565b9450602086013567ffffffffffffffff81111561172e57600080fd5b61173a888289016116d1565b945050604086013567ffffffffffffffff81111561175757600080fd5b611763888289016116d1565b935050606086013567ffffffffffffffff81111561178057600080fd5b61178c888289016116d1565b9250506080860135600481106117a157600080fd5b809150509295509295909350565b600080604083850312156117c257600080fd5b6117cb836114c5565b9150602083013580151581146117e057600080fd5b809150509250929050565b6000806000806080858703121561180157600080fd5b61180a856114c5565b9350611818602086016114c5565b925060408501359150606085013567ffffffffffffffff81111561183b57600080fd5b8501601f8101871361184c57600080fd5b61185b87823560208401611657565b91505092959194509250565b6000806040838503121561187a57600080fd5b611883836114c5565b9150611891602084016114c5565b90509250929050565b600181811c908216806118ae57607f821691505b6020821081036118ce57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600182016118f457634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fd5b601f8211156105b757806000526020600020601f840160051c810160208510156119385750805b601f840160051c820191505b81811015610eec5760008155600101611944565b815167ffffffffffffffff81111561197257611972611641565b61198681611980845461189a565b84611911565b6020601f8211600181146119ba57600083156119a25750848201515b600019600385901b1c1916600184901b178455610eec565b600084815260208120601f198516915b828110156119ea57878501518255602094850194600190920191016119ca565b5084821015611a085786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b611a21818461155e565b604060208201526000610b1f604083018461146d565b60008351611a49818460208801611449565b835190830190611a5d818360208801611449565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611a999083018461146d565b9695505050505050565b600060208284031215611ab557600080fd5b8151610f618161141656fea2646970667358221220ad69675a6376761914c70ee81a6d89d7d29cf223e7ee01ad132dc8fd1536d8db64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0x979F5292 GT PUSH2 0x7C JUMPI DUP1 PUSH4 0x979F5292 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x29E JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x2D7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x237 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x24A JUMPI DUP1 PUSH4 0x8462151C EQ PUSH2 0x252 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x272 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x1DE JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x4EFFBF20 EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x179 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1B9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14F PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0x142C JUMP JUMPDEST PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16C PUSH2 0x328 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15B SWAP2 SWAP1 PUSH2 0x1499 JUMP JUMPDEST PUSH2 0x18C PUSH2 0x187 CALLDATASIZE PUSH1 0x4 PUSH2 0x14AC JUMP JUMPDEST PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15B JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x1B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x14E1 JUMP JUMPDEST PUSH2 0x3E3 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x8 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x15B JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x1D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x150B JUMP JUMPDEST PUSH2 0x3F2 JUMP JUMPDEST PUSH2 0x1BD PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0x14E1 JUMP JUMPDEST PUSH2 0x482 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0x150B JUMP JUMPDEST PUSH2 0x59C JUMP JUMPDEST PUSH2 0x217 PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0x14AC JUMP JUMPDEST PUSH2 0x5BC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15B SWAP2 SWAP1 PUSH2 0x1580 JUMP JUMPDEST PUSH2 0x18C PUSH2 0x232 CALLDATASIZE PUSH1 0x4 PUSH2 0x14AC JUMP JUMPDEST PUSH2 0x7C9 JUMP JUMPDEST PUSH2 0x1BD PUSH2 0x245 CALLDATASIZE PUSH1 0x4 PUSH2 0x15E3 JUMP JUMPDEST PUSH2 0x7D4 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x81C JUMP JUMPDEST PUSH2 0x265 PUSH2 0x260 CALLDATASIZE PUSH1 0x4 PUSH2 0x15E3 JUMP JUMPDEST PUSH2 0x830 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15B SWAP2 SWAP1 PUSH2 0x15FE JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x18C JUMP JUMPDEST PUSH2 0x16C PUSH2 0x8C8 JUMP JUMPDEST PUSH2 0x1BD PUSH2 0x299 CALLDATASIZE PUSH1 0x4 PUSH2 0x16F1 JUMP JUMPDEST PUSH2 0x8D7 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x2AC CALLDATASIZE PUSH1 0x4 PUSH2 0x17AF JUMP JUMPDEST PUSH2 0x9F3 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x17EB JUMP JUMPDEST PUSH2 0x9FE JUMP JUMPDEST PUSH2 0x16C PUSH2 0x2D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x14AC JUMP JUMPDEST PUSH2 0xA16 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x2E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1867 JUMP JUMPDEST PUSH2 0xB27 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x2F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x15E3 JUMP JUMPDEST PUSH2 0xB55 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x24832483 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x322 JUMPI POP PUSH2 0x322 DUP3 PUSH2 0xB93 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x337 SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x363 SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3B0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x385 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3B0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x393 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C5 DUP3 PUSH2 0xBE3 JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x322 JUMP JUMPDEST PUSH2 0x3EE DUP3 DUP3 CALLER PUSH2 0xC1C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x421 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x42E DUP4 DUP4 CALLER PUSH2 0xC29 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x47C JUMPI PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x418 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48D DUP4 PUSH2 0x7D4 JUMP JUMPDEST DUP3 LT PUSH2 0x4DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x49504E46543A20696E646578206F7574206F6620626F756E6473000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST PUSH1 0x8 SLOAD DUP2 LT ISZERO PUSH2 0x553 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO DUP1 ISZERO PUSH2 0x528 JUMPI POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x51D DUP3 PUSH2 0x7C9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST ISZERO PUSH2 0x54B JUMPI DUP4 DUP3 SUB PUSH2 0x53D JUMPI SWAP2 POP PUSH2 0x322 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x547 DUP2 PUSH2 0x18D4 JUMP JUMPDEST SWAP3 POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x4DF JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x49504E46543A20696E646578206F7574206F6620626F756E6473000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x418 JUMP JUMPDEST PUSH2 0x5B7 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x9FE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x5E5 PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 DUP2 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x649 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x49504E46543A20746F6B656E20646F6573206E6F742065786973740000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP2 MLOAD PUSH1 0x80 DUP2 ADD SWAP1 SWAP3 MSTORE DUP1 SLOAD DUP3 SWAP1 DUP3 SWAP1 PUSH2 0x671 SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x69D SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x6EA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6BF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6EA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6CD JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH2 0x703 SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x72F SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x77C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x751 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x77C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x75F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH1 0xFF AND PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7A3 JUMPI PUSH2 0x7A3 PUSH2 0x1548 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x7B4 JUMPI PUSH2 0x7B4 PUSH2 0x1548 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x322 DUP3 PUSH2 0xBE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x800 JUMPI PUSH1 0x40 MLOAD PUSH4 0x22718AD9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x824 PUSH2 0xC40 JUMP JUMPDEST PUSH2 0x82E PUSH1 0x0 PUSH2 0xC6D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x83D DUP4 PUSH2 0x7D4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x85A JUMPI PUSH2 0x85A PUSH2 0x1641 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x883 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x8C0 JUMPI PUSH2 0x89B DUP6 DUP3 PUSH2 0x482 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x8AD JUMPI PUSH2 0x8AD PUSH2 0x18FB JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x889 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x337 SWAP1 PUSH2 0x189A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8E1 PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x8 DUP1 SLOAD SWAP1 DUP2 SWAP1 PUSH1 0x0 PUSH2 0x8F3 DUP4 PUSH2 0x18D4 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH2 0x902 DUP8 DUP3 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0x90C DUP2 DUP8 PUSH2 0xCD9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x935 JUMPI PUSH2 0x935 PUSH2 0x1548 JUMP JUMPDEST DUP2 MSTORE TIMESTAMP PUSH1 0x20 SWAP2 DUP3 ADD MSTORE PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x9 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 MLOAD DUP2 SWAP1 PUSH2 0x95A SWAP1 DUP3 PUSH2 0x1958 JUMP JUMPDEST POP PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x1 DUP3 ADD SWAP1 PUSH2 0x96F SWAP1 DUP3 PUSH2 0x1958 JUMP JUMPDEST POP PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x993 JUMPI PUSH2 0x993 PUSH2 0x1548 JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD SSTORE SWAP1 POP POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0xA11168E0B0496738928286F747E505F139D6440DA347CB53C2508178DCC2419B DUP6 DUP9 PUSH1 0x40 MLOAD PUSH2 0x9E1 SWAP3 SWAP2 SWAP1 PUSH2 0x1A17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3EE CALLER DUP4 DUP4 PUSH2 0xD29 JUMP JUMPDEST PUSH2 0xA09 DUP5 DUP5 DUP5 PUSH2 0x3F2 JUMP JUMPDEST PUSH2 0x47C CALLER DUP6 DUP6 DUP6 DUP6 PUSH2 0xDC8 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA21 DUP3 PUSH2 0xBE3 JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0xA3B SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xA67 SWAP1 PUSH2 0x189A JUMP JUMPDEST DUP1 ISZERO PUSH2 0xAB4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA89 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xAB4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA97 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0xAD2 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xAE4 JUMPI POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xB16 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xAFE SWAP3 SWAP2 SWAP1 PUSH2 0x1A37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB1F DUP5 PUSH2 0xEF3 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xB5D PUSH2 0xC40 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB87 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST PUSH2 0xB90 DUP2 PUSH2 0xC6D JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xBC4 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x322 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x322 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST PUSH2 0x5B7 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0xF68 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xC37 DUP6 DUP6 DUP6 PUSH2 0x106E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x82E JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x3EE DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1167 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xCF1 DUP3 DUP3 PUSH2 0x1958 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH32 0xF8E1A15ABA9398E019F0B49DF1A4FDE98EE17AE345CB5F6B5E2C27F5033E8CE7 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xD5B JUMPI PUSH1 0x40 MLOAD PUSH4 0xB611743 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0xEEC JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xE0A SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x1A66 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xE45 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xE42 SWAP2 DUP2 ADD SWAP1 PUSH2 0x1AA3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xEAE JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xE73 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE78 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xEA6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ PUSH2 0xEEA JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEFE DUP3 PUSH2 0xBE3 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xF16 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0xF36 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xF61 JUMP JUMPDEST DUP1 PUSH2 0xF40 DUP5 PUSH2 0x117F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF51 SWAP3 SWAP2 SWAP1 PUSH2 0x1A37 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP1 PUSH2 0xF7C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x103E JUMPI PUSH1 0x0 PUSH2 0xF8C DUP5 PUSH2 0xBE3 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xFB8 JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xFCB JUMPI POP PUSH2 0xFC9 DUP2 DUP5 PUSH2 0xB27 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xFF4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x103C JUMPI DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP1 DUP4 AND ISZERO PUSH2 0x109B JUMPI PUSH2 0x109B DUP2 DUP5 DUP7 PUSH2 0x1212 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x10D9 JUMPI PUSH2 0x10B8 PUSH1 0x0 DUP6 PUSH1 0x0 DUP1 PUSH2 0xF68 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x1108 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP8 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1171 DUP4 DUP4 PUSH2 0x1276 JUMP JUMPDEST PUSH2 0x5B7 CALLER PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0xDC8 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x118C DUP4 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11AC JUMPI PUSH2 0x11AC PUSH2 0x1641 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x11D6 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0x11E0 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x121D DUP4 DUP4 DUP4 PUSH2 0x13B3 JUMP JUMPDEST PUSH2 0x5B7 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x124B JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x177E802F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x12A0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12AE DUP4 DUP4 PUSH1 0x0 PUSH2 0xC29 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x5B7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x39E35637 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x418 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0x131A JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1346 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1364 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x137C JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x1390 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x13A2 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x322 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xB1F JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x13ED JUMPI POP PUSH2 0x13ED DUP5 DUP5 PUSH2 0xB27 JUMP JUMPDEST DUP1 PUSH2 0xB1F JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xB90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x143E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xF61 DUP2 PUSH2 0x1416 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1464 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x144C JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x1485 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1449 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xF61 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x146D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x14DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x14F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x14FD DUP4 PUSH2 0x14C5 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1529 DUP5 PUSH2 0x14C5 JUMP JUMPDEST SWAP3 POP PUSH2 0x1537 PUSH1 0x20 DUP6 ADD PUSH2 0x14C5 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x157C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH1 0x80 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x159C PUSH1 0xA0 DUP5 ADD DUP3 PUSH2 0x146D JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x1F NOT DUP5 DUP4 SUB ADD PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x15B9 DUP3 DUP3 PUSH2 0x146D JUMP JUMPDEST SWAP2 POP POP PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x15CE PUSH1 0x60 DUP6 ADD DUP3 PUSH2 0x155E JUMP JUMPDEST POP PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF61 DUP3 PUSH2 0x14C5 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1636 JUMPI DUP4 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1618 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT ISZERO PUSH2 0x1672 JUMPI PUSH2 0x1672 PUSH2 0x1641 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x16A1 JUMPI PUSH2 0x16A1 PUSH2 0x1641 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE SWAP1 POP DUP1 DUP3 DUP5 ADD DUP6 LT ISZERO PUSH2 0x16B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP4 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x16E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF61 DUP4 DUP4 CALLDATALOAD PUSH1 0x20 DUP6 ADD PUSH2 0x1657 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1709 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1712 DUP7 PUSH2 0x14C5 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x172E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x173A DUP9 DUP3 DUP10 ADD PUSH2 0x16D1 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1763 DUP9 DUP3 DUP10 ADD PUSH2 0x16D1 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x178C DUP9 DUP3 DUP10 ADD PUSH2 0x16D1 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0x17A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x17C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17CB DUP4 PUSH2 0x14C5 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x17E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1801 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x180A DUP6 PUSH2 0x14C5 JUMP JUMPDEST SWAP4 POP PUSH2 0x1818 PUSH1 0x20 DUP7 ADD PUSH2 0x14C5 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x183B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x184C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x185B DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x1657 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x187A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1883 DUP4 PUSH2 0x14C5 JUMP JUMPDEST SWAP2 POP PUSH2 0x1891 PUSH1 0x20 DUP5 ADD PUSH2 0x14C5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x18AE JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x18CE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x18F4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x5B7 JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1938 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xEEC JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1944 JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1972 JUMPI PUSH2 0x1972 PUSH2 0x1641 JUMP JUMPDEST PUSH2 0x1986 DUP2 PUSH2 0x1980 DUP5 SLOAD PUSH2 0x189A JUMP JUMPDEST DUP5 PUSH2 0x1911 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x19BA JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x19A2 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0xEEC JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x19EA JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x19CA JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x1A08 JUMPI DUP7 DUP5 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x1A21 DUP2 DUP5 PUSH2 0x155E JUMP JUMPDEST PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xB1F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x146D JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1A49 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1449 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1A5D DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x1449 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x1A99 SWAP1 DUP4 ADD DUP5 PUSH2 0x146D JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1AB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF61 DUP2 PUSH2 0x1416 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD PUSH10 0x675A6376761914C70EE8 BYTE PUSH14 0x89D7D29CF223E7EE01AD132DC8FD ISZERO CALLDATASIZE 0xD8 0xDB PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"351:3900:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;938:207:43;;;;;;:::i;:::-;;:::i;:::-;;;565:14:66;;558:22;540:41;;528:2;513:18;938:207:43;;;;;;;;2364:89:40;;;:::i;:::-;;;;;;;:::i;3496:154::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1743:32:66;;;1725:51;;1713:2;1698:18;3496:154:40;1579:203:66;3322:113:40;;;;;;:::i;:::-;;:::i;:::-;;2474:89:58;2544:12;;2474:89;;;2416:25:66;;;2404:2;2389:18;2474:89:58;2270:177:66;4142:578:40;;;;;;:::i;:::-;;:::i;3223:507:58:-;;;;;;:::i;:::-;;:::i;4786:132:40:-;;;;;;:::i;:::-;;:::i;2225:178:58:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2184:118:40:-;;;;;;:::i;:::-;;:::i;1919:208::-;;;;;;:::i;:::-;;:::i;2293:101:28:-;;;:::i;2679:353:58:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1638:85:28:-;1710:6;;-1:-1:-1;;;;;1710:6:28;1638:85;;2517:93:40;;;:::i;1498:619:58:-;;;;;;:::i;:::-;;:::i;3717:144:40:-;;;;;;:::i;:::-;;:::i;4984:233::-;;;;;;:::i;:::-;;:::i;1211:593:43:-;;;;;;:::i;:::-;;:::i;3927:153:40:-;;;;;;:::i;:::-;;:::i;2543:215:28:-;;;;;;:::i;:::-;;:::i;938:207:43:-;1040:4;-1:-1:-1;;;;;;1063:35:43;;-1:-1:-1;;;1063:35:43;;:75;;;1102:36;1126:11;1102:23;:36::i;:::-;1056:82;938:207;-1:-1:-1;;938:207:43:o;2364:89:40:-;2409:13;2441:5;2434:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2364:89;:::o;3496:154::-;3563:7;3582:22;3596:7;3582:13;:22::i;:::-;-1:-1:-1;6033:7:40;6059:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6059:24:40;3622:21;5963:127;3322:113;3393:35;3402:2;3406:7;735:10:46;3393:8:40;:35::i;:::-;3322:113;;:::o;4142:578::-;-1:-1:-1;;;;;4236:16:40;;4232:87;;4275:33;;-1:-1:-1;;;4275:33:40;;4305:1;4275:33;;;1725:51:66;1698:18;;4275:33:40;;;;;;;;4232:87;4537:21;4561:34;4569:2;4573:7;735:10:46;4561:7:40;:34::i;:::-;4537:58;;4626:4;-1:-1:-1;;;;;4609:21:40;:13;-1:-1:-1;;;;;4609:21:40;;4605:109;;4653:50;;-1:-1:-1;;;4653:50:40;;-1:-1:-1;;;;;8765:32:66;;;4653:50:40;;;8747:51:66;8814:18;;;8807:34;;;8877:32;;8857:18;;;8850:60;8720:18;;4653:50:40;8545:371:66;4605:109:40;4222:498;4142:578;;;:::o;3223:507:58:-;3325:7;3360:16;3370:5;3360:9;:16::i;:::-;3352:5;:24;3344:63;;;;-1:-1:-1;;;3344:63:58;;9123:2:66;3344:63:58;;;9105:21:66;9162:2;9142:18;;;9135:30;9201:28;9181:18;;;9174:56;9247:18;;3344:63:58;8921:350:66;3344:63:58;3418:13;3450:9;3445:232;3469:12;;3465:1;:16;3445:232;;;3846:4;5824:16:40;;;:7;:16;;;;;;-1:-1:-1;;;;;5824:16:40;3869:31:58;;3506:33;;;;;3534:5;-1:-1:-1;;;;;3520:19:58;:10;3528:1;3520:7;:10::i;:::-;-1:-1:-1;;;;;3520:19:58;;3506:33;3502:165;;;3572:5;3563;:14;3559:69;;3608:1;-1:-1:-1;3601:8:58;;-1:-1:-1;3601:8:58;3559:69;3645:7;;;;:::i;:::-;;;;3502:165;3483:3;;3445:232;;;-1:-1:-1;3687:36:58;;-1:-1:-1;;;3687:36:58;;9123:2:66;3687:36:58;;;9105:21:66;9162:2;9142:18;;;9135:30;9201:28;9181:18;;;9174:56;9247:18;;3687:36:58;8921:350:66;4786:132:40;4872:39;4889:4;4895:2;4899:7;4872:39;;;;;;;;;;;;:16;:39::i;:::-;4786:132;;;:::o;2225:178:58:-;2282:13;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2282:13:58;3846:4;5824:16:40;;;:7;:16;;;;;;-1:-1:-1;;;;;5824:16:40;2307:56:58;;;;-1:-1:-1;;;2307:56:58;;9715:2:66;2307:56:58;;;9697:21:66;9754:2;9734:18;;;9727:30;9793:29;9773:18;;;9766:57;9840:18;;2307:56:58;9513:351:66;2307:56:58;2380:16;;;;:7;:16;;;;;;;2373:23;;;;;;;;;;;;2380:16;;2373:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2373:23:58;;;-1:-1:-1;;2373:23:58;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;2225:178;;;:::o;2184:118:40:-;2247:7;2273:22;2287:7;2273:13;:22::i;1919:208::-;1982:7;-1:-1:-1;;;;;2005:19:40;;2001:87;;2047:30;;-1:-1:-1;;;2047:30:40;;2074:1;2047:30;;;1725:51:66;1698:18;;2047:30:40;1579:203:66;2001:87:40;-1:-1:-1;;;;;;2104:16:40;;;;;:9;:16;;;;;;;1919:208::o;2293:101:28:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2679:353:58:-;2752:16;2780:18;2801:16;2811:5;2801:9;:16::i;:::-;2780:37;;2827:25;2869:10;2855:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2855:25:58;;2827:53;;2896:9;2891:109;2915:10;2911:1;:14;2891:109;;;2960:29;2980:5;2987:1;2960:19;:29::i;:::-;2946:8;2955:1;2946:11;;;;;;;;:::i;:::-;;;;;;;;;;:43;2927:3;;2891:109;;;-1:-1:-1;3017:8:58;2679:353;-1:-1:-1;;;2679:353:58:o;2517:93:40:-;2564:13;2596:7;2589:14;;;;;:::i;1498:619:58:-;1678:7;1531:13:28;:11;:13::i;:::-;1715:12:58::1;::::0;;;;;1697:15:::1;1737:14;1715:12:::0;1737:14:::1;:::i;:::-;;;;;;1762:22;1772:2;1776:7;1762:9;:22::i;:::-;1794:26;1807:7;1816:3;1794:12;:26::i;:::-;1880:150;;;;;;;;1908:5;1880:150;;;;1940:11;1880:150;;;;1973:6;1880:150;;;;;;;;:::i;:::-;::::0;;2004:15:::1;1880:150;::::0;;::::1;::::0;-1:-1:-1;1861:16:58;;;:7:::1;:16:::0;;;;;;:169;;:16;;:169:::1;::::0;:16;:169:::1;:::i;:::-;-1:-1:-1::0;1861:169:58::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;1861:169:58::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;1861:169:58::1;::::0;;::::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2067:2;-1:-1:-1::0;;;;;2046:39:58::1;2058:7;2046:39;2071:6;2079:5;2046:39;;;;;;;:::i;:::-;;;;;;;;2103:7:::0;1498:619;-1:-1:-1;;;;;;1498:619:58:o;3717:144:40:-;3802:52;735:10:46;3835:8:40;3845;3802:18;:52::i;4984:233::-;5097:31;5110:4;5116:2;5120:7;5097:12;:31::i;:::-;5138:72;735:10:46;5186:4:40;5192:2;5196:7;5205:4;5138:33;:72::i;1211:593:43:-;1284:13;1309:22;1323:7;1309:13;:22::i;:::-;-1:-1:-1;1342:23:43;1368:19;;;:10;:19;;;;;1342:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1397:18;1418:10;3249:9:40;;;;;;;;;-1:-1:-1;3249:9:40;;;3173:92;1418:10:43;1397:31;;1507:4;1501:18;1523:1;1501:23;1497:70;;-1:-1:-1;1547:9:43;1211:593;-1:-1:-1;;1211:593:43:o;1497:70::-;1666:23;;:27;1662:95;;1730:4;1736:9;1716:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1709:37;;;;1211:593;;;:::o;1662:95::-;1774:23;1789:7;1774:14;:23::i;:::-;1767:30;1211:593;-1:-1:-1;;;;1211:593:43:o;3927:153:40:-;-1:-1:-1;;;;;4038:25:40;;;4015:4;4038:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3927:153::o;2543:215:28:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:28;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:28;;2700:1:::1;2672:31;::::0;::::1;1725:51:66::0;1698:18;;2672:31:28::1;1579:203:66::0;2623:91:28::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;1560:300:40:-;1662:4;-1:-1:-1;;;;;;1697:40:40;;-1:-1:-1;;;1697:40:40;;:104;;-1:-1:-1;;;;;;;1753:48:40;;-1:-1:-1;;;1753:48:40;1697:104;:156;;;-1:-1:-1;;;;;;;;;;862:40:51;;;1817:36:40;763:146:51;16212:241:40;16275:7;5824:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5824:16:40;;16337:88;;16383:31;;-1:-1:-1;;;16383:31:40;;;;;2416:25:66;;;2389:18;;16383:31:40;2270:177:66;14492:120:40;14572:33;14581:2;14585:7;14594:4;14600;14572:8;:33::i;3980:269:58:-;4097:7;4116:12;4131:32;4145:2;4149:7;4158:4;4131:13;:32::i;:::-;4116:47;3980:269;-1:-1:-1;;;;;3980:269:58:o;1796:162:28:-;1710:6;;-1:-1:-1;;;;;1710:6:28;735:10:46;1855:23:28;1851:101;;1901:40;;-1:-1:-1;;;1901:40:28;;735:10:46;1901:40:28;;;1725:51:66;1698:18;;1901:40:28;1579:203:66;2912:187:28;3004:6;;;-1:-1:-1;;;;;3020:17:28;;;-1:-1:-1;;;;;;3020:17:28;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;10656:100:40:-;10723:26;10733:2;10737:7;10723:26;;;;;;;;;;;;:9;:26::i;1932:167:43:-;2023:19;;;;:10;:19;;;;;:31;2045:9;2023:19;:31;:::i;:::-;-1:-1:-1;2069:23:43;;2416:25:66;;;2069:23:43;;2404:2:66;2389:18;2069:23:43;;;;;;;1932:167;;:::o;15665:312:40:-;-1:-1:-1;;;;;15772:22:40;;15768:91;;15817:31;;-1:-1:-1;;;15817:31:40;;-1:-1:-1;;;;;1743:32:66;;15817:31:40;;;1725:51:66;1698:18;;15817:31:40;1579:203:66;15768:91:40;-1:-1:-1;;;;;15868:25:40;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;15868:46:40;;;;;;;;;;15929:41;;540::66;;;15929::40;;513:18:66;15929:41:40;;;;;;;15665:312;;;:::o;993:924:45:-;-1:-1:-1;;;;;1173:14:45;;;:18;1169:742;;1211:67;;-1:-1:-1;;;1211:67:45;;-1:-1:-1;;;;;1211:36:45;;;;;:67;;1248:8;;1258:4;;1264:7;;1273:4;;1211:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1211:67:45;;;;;;;;-1:-1:-1;;1211:67:45;;;;;;;;;;;;:::i;:::-;;;1207:694;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1568:6;:13;1585:1;1568:18;1564:323;;1672:39;;-1:-1:-1;;;1672:39:45;;-1:-1:-1;;;;;1743:32:66;;1672:39:45;;;1725:51:66;1698:18;;1672:39:45;1579:203:66;1564:323:45;1839:6;1833:13;1824:6;1820:2;1816:15;1809:38;1207:694;-1:-1:-1;;;;;;1325:51:45;;-1:-1:-1;;;1325:51:45;1321:182;;1445:39;;-1:-1:-1;;;1445:39:45;;-1:-1:-1;;;;;1743:32:66;;1445:39:45;;;1725:51:66;1698:18;;1445:39:45;1579:203:66;1321:182:45;1279:238;1207:694;993:924;;;;;:::o;2676:255:40:-;2740:13;2765:22;2779:7;2765:13;:22::i;:::-;;2798:21;2822:10;3249:9;;;;;;;;;-1:-1:-1;3249:9:40;;;3173:92;2822:10;2798:34;;2873:1;2855:7;2849:21;:25;:75;;;;;;;;;;;;;;;;;2891:7;2900:18;:7;:16;:18::i;:::-;2877:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2849:75;2842:82;2676:255;-1:-1:-1;;;2676:255:40:o;14794:662::-;14954:9;:31;;;-1:-1:-1;;;;;;14967:18:40;;;;14954:31;14950:460;;;15001:13;15017:22;15031:7;15017:13;:22::i;:::-;15001:38;-1:-1:-1;;;;;;15167:18:40;;;;;;:35;;;15198:4;-1:-1:-1;;;;;15189:13:40;:5;-1:-1:-1;;;;;15189:13:40;;;15167:35;:69;;;;;15207:29;15224:5;15231:4;15207:16;:29::i;:::-;15206:30;15167:69;15163:142;;;15263:27;;-1:-1:-1;;;15263:27:40;;-1:-1:-1;;;;;1743:32:66;;15263:27:40;;;1725:51:66;1698:18;;15263:27:40;1579:203:66;15163:142:40;15323:9;15319:81;;;15377:7;15373:2;-1:-1:-1;;;;;15357:28:40;15366:5;-1:-1:-1;;;;;15357:28:40;;;;;;;;;;;15319:81;14987:423;14950:460;-1:-1:-1;;15420:24:40;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15420:29:40;-1:-1:-1;;;;;15420:29:40;;;;;;;;;;14794:662::o;8861:795::-;8947:7;5824:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5824:16:40;;;;9058:18;;;9054:86;;9092:37;9109:4;9115;9121:7;9092:16;:37::i;:::-;-1:-1:-1;;;;;9184:18:40;;;9180:256;;9300:48;9317:1;9321:7;9338:1;9342:5;9300:8;:48::i;:::-;-1:-1:-1;;;;;9391:15:40;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;9391:20:40;;;9180:256;-1:-1:-1;;;;;9450:16:40;;;9446:107;;-1:-1:-1;;;;;9510:13:40;;;;;;:9;:13;;;;;:18;;9527:1;9510:18;;;9446:107;9563:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9563:21:40;-1:-1:-1;;;;;9563:21:40;;;;;;;;;9600:27;;9563:16;;9600:27;;;;;;;9645:4;8861:795;-1:-1:-1;;;;8861:795:40:o;10977:207::-;11071:18;11077:2;11081:7;11071:5;:18::i;:::-;11099:78;735:10:46;11155:1:40;11159:2;11163:7;11172:4;11099:33;:78::i;1308:632:48:-;1364:13;1413:14;1430:17;1441:5;1430:10;:17::i;:::-;1450:1;1430:21;1413:38;;1465:20;1499:6;1488:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1488:18:48;-1:-1:-1;1465:41:48;-1:-1:-1;1595:28:48;;;1611:2;1595:28;1650:247;-1:-1:-1;;1681:5:48;-1:-1:-1;;;1780:2:48;1769:14;;1764:32;1681:5;1751:46;1841:2;1832:11;;;-1:-1:-1;1861:21:48;1650:247;1861:21;-1:-1:-1;1917:6:48;1308:632;-1:-1:-1;;;1308:632:48:o;7105:368:40:-;7217:38;7231:5;7238:7;7247;7217:13;:38::i;:::-;7212:255;;-1:-1:-1;;;;;7275:19:40;;7271:186;;7321:31;;-1:-1:-1;;;7321:31:40;;;;;2416:25:66;;;2389:18;;7321:31:40;2270:177:66;7271:186:40;7398:44;;-1:-1:-1;;;7398:44:40;;-1:-1:-1;;;;;14016:32:66;;7398:44:40;;;13998:51:66;14065:18;;;14058:34;;;13971:18;;7398:44:40;13824:274:66;9978:327:40;-1:-1:-1;;;;;10045:16:40;;10041:87;;10084:33;;-1:-1:-1;;;10084:33:40;;10114:1;10084:33;;;1725:51:66;1698:18;;10084:33:40;1579:203:66;10041:87:40;10137:21;10161:32;10169:2;10173:7;10190:1;10161:7;:32::i;:::-;10137:56;-1:-1:-1;;;;;;10207:27:40;;;10203:96;;10257:31;;-1:-1:-1;;;10257:31:40;;10285:1;10257:31;;;1725:51:66;1698:18;;10257:31:40;1579:203:66;29154:916:53;29207:7;;-1:-1:-1;;;29282:17:53;;29278:103;;-1:-1:-1;;;29319:17:53;;;-1:-1:-1;29364:2:53;29354:12;29278:103;29407:8;29398:5;:17;29394:103;;29444:8;29435:17;;;-1:-1:-1;29480:2:53;29470:12;29394:103;29523:8;29514:5;:17;29510:103;;29560:8;29551:17;;;-1:-1:-1;29596:2:53;29586:12;29510:103;29639:7;29630:5;:16;29626:100;;29675:7;29666:16;;;-1:-1:-1;29710:1:53;29700:11;29626:100;29752:7;29743:5;:16;29739:100;;29788:7;29779:16;;;-1:-1:-1;29823:1:53;29813:11;29739:100;29865:7;29856:5;:16;29852:100;;29901:7;29892:16;;;-1:-1:-1;29936:1:53;29926:11;29852:100;29978:7;29969:5;:16;29965:66;;30015:1;30005:11;30057:6;29154:916;-1:-1:-1;;29154:916:53:o;6401:272:40:-;6504:4;-1:-1:-1;;;;;6539:21:40;;;;;;:127;;;6586:7;-1:-1:-1;;;;;6577:16:40;:5;-1:-1:-1;;;;;6577:16:40;;:52;;;;6597:32;6614:5;6621:7;6597:16;:32::i;:::-;6577:88;;;-1:-1:-1;;6033:7:40;6059:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6059:24:40;;;6633:32;;;;6520:146;-1:-1:-1;6401:272:40:o;14:131:66:-;-1:-1:-1;;;;;;88:32:66;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:66;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:66;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:66:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:226::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1521:23:66;;1348:226;-1:-1:-1;1348:226:66:o;1787:173::-;1855:20;;-1:-1:-1;;;;;1904:31:66;;1894:42;;1884:70;;1950:1;1947;1940:12;1884:70;1787:173;;;:::o;1965:300::-;2033:6;2041;2094:2;2082:9;2073:7;2069:23;2065:32;2062:52;;;2110:1;2107;2100:12;2062:52;2133:29;2152:9;2133:29;:::i;:::-;2123:39;2231:2;2216:18;;;;2203:32;;-1:-1:-1;;;1965:300:66:o;2452:374::-;2529:6;2537;2545;2598:2;2586:9;2577:7;2573:23;2569:32;2566:52;;;2614:1;2611;2604:12;2566:52;2637:29;2656:9;2637:29;:::i;:::-;2627:39;;2685:38;2719:2;2708:9;2704:18;2685:38;:::i;:::-;2452:374;;2675:48;;-1:-1:-1;;;2792:2:66;2777:18;;;;2764:32;;2452:374::o;2831:127::-;2892:10;2887:3;2883:20;2880:1;2873:31;2923:4;2920:1;2913:15;2947:4;2944:1;2937:15;2963:234;3041:1;3034:5;3031:12;3021:143;;3086:10;3081:3;3077:20;3074:1;3067:31;3121:4;3118:1;3111:15;3149:4;3146:1;3139:15;3021:143;3173:18;;2963:234::o;3202:740::-;3381:2;3370:9;3363:21;3344:4;3419:6;3413:13;3462:4;3457:2;3446:9;3442:18;3435:32;3490:52;3537:3;3526:9;3522:19;3508:12;3490:52;:::i;:::-;3476:66;;3591:2;3583:6;3579:15;3573:22;3663:2;3659:7;3647:9;3639:6;3635:22;3631:36;3626:2;3615:9;3611:18;3604:64;3691:41;3725:6;3709:14;3691:41;:::i;:::-;3677:55;;;3781:2;3773:6;3769:15;3763:22;3794:58;3848:2;3837:9;3833:18;3817:14;3794:58;:::i;:::-;;3908:2;3900:6;3896:15;3890:22;3883:4;3872:9;3868:20;3861:52;3930:6;3922:14;;;3202:740;;;;:::o;3947:186::-;4006:6;4059:2;4047:9;4038:7;4034:23;4030:32;4027:52;;;4075:1;4072;4065:12;4027:52;4098:29;4117:9;4098:29;:::i;4138:611::-;4328:2;4340:21;;;4410:13;;4313:18;;;4432:22;;;4280:4;;4511:15;;;4485:2;4470:18;;;4280:4;4554:169;4568:6;4565:1;4562:13;4554:169;;;4629:13;;4617:26;;4672:2;4698:15;;;;4663:12;;;;4590:1;4583:9;4554:169;;;-1:-1:-1;4740:3:66;;4138:611;-1:-1:-1;;;;;4138:611:66:o;4754:127::-;4815:10;4810:3;4806:20;4803:1;4796:31;4846:4;4843:1;4836:15;4870:4;4867:1;4860:15;4886:716;4951:5;4983:1;5007:18;4999:6;4996:30;4993:56;;;5029:18;;:::i;:::-;-1:-1:-1;5184:2:66;5178:9;-1:-1:-1;;5097:2:66;5076:15;;5072:29;;5242:2;5230:15;5226:29;5214:42;;5307:22;;;5286:18;5271:34;;5268:62;5265:88;;;5333:18;;:::i;:::-;5369:2;5362:22;5417;;;5402:6;-1:-1:-1;5402:6:66;5454:16;;;5451:25;-1:-1:-1;5448:45:66;;;5489:1;5486;5479:12;5448:45;5539:6;5534:3;5527:4;5519:6;5515:17;5502:44;5594:1;5587:4;5578:6;5570;5566:19;5562:30;5555:41;;4886:716;;;;;:::o;5607:222::-;5650:5;5703:3;5696:4;5688:6;5684:17;5680:27;5670:55;;5721:1;5718;5711:12;5670:55;5743:80;5819:3;5810:6;5797:20;5790:4;5782:6;5778:17;5743:80;:::i;5834:986::-;5971:6;5979;5987;5995;6003;6056:3;6044:9;6035:7;6031:23;6027:33;6024:53;;;6073:1;6070;6063:12;6024:53;6096:29;6115:9;6096:29;:::i;:::-;6086:39;;6176:2;6165:9;6161:18;6148:32;6203:18;6195:6;6192:30;6189:50;;;6235:1;6232;6225:12;6189:50;6258;6300:7;6291:6;6280:9;6276:22;6258:50;:::i;:::-;6248:60;;;6361:2;6350:9;6346:18;6333:32;6390:18;6380:8;6377:32;6374:52;;;6422:1;6419;6412:12;6374:52;6445;6489:7;6478:8;6467:9;6463:24;6445:52;:::i;:::-;6435:62;;;6550:2;6539:9;6535:18;6522:32;6579:18;6569:8;6566:32;6563:52;;;6611:1;6608;6601:12;6563:52;6634;6678:7;6667:8;6656:9;6652:24;6634:52;:::i;:::-;6624:62;;;6736:3;6725:9;6721:19;6708:33;6770:1;6763:5;6760:12;6750:40;;6786:1;6783;6776:12;6750:40;6809:5;6799:15;;;5834:986;;;;;;;;:::o;6825:347::-;6890:6;6898;6951:2;6939:9;6930:7;6926:23;6922:32;6919:52;;;6967:1;6964;6957:12;6919:52;6990:29;7009:9;6990:29;:::i;:::-;6980:39;;7069:2;7058:9;7054:18;7041:32;7116:5;7109:13;7102:21;7095:5;7092:32;7082:60;;7138:1;7135;7128:12;7082:60;7161:5;7151:15;;;6825:347;;;;;:::o;7177:713::-;7272:6;7280;7288;7296;7349:3;7337:9;7328:7;7324:23;7320:33;7317:53;;;7366:1;7363;7356:12;7317:53;7389:29;7408:9;7389:29;:::i;:::-;7379:39;;7437:38;7471:2;7460:9;7456:18;7437:38;:::i;:::-;7427:48;-1:-1:-1;7544:2:66;7529:18;;7516:32;;-1:-1:-1;7623:2:66;7608:18;;7595:32;7650:18;7639:30;;7636:50;;;7682:1;7679;7672:12;7636:50;7705:22;;7758:4;7750:13;;7746:27;-1:-1:-1;7736:55:66;;7787:1;7784;7777:12;7736:55;7810:74;7876:7;7871:2;7858:16;7853:2;7849;7845:11;7810:74;:::i;:::-;7800:84;;;7177:713;;;;;;;:::o;7895:260::-;7963:6;7971;8024:2;8012:9;8003:7;7999:23;7995:32;7992:52;;;8040:1;8037;8030:12;7992:52;8063:29;8082:9;8063:29;:::i;:::-;8053:39;;8111:38;8145:2;8134:9;8130:18;8111:38;:::i;:::-;8101:48;;7895:260;;;;;:::o;8160:380::-;8239:1;8235:12;;;;8282;;;8303:61;;8357:4;8349:6;8345:17;8335:27;;8303:61;8410:2;8402:6;8399:14;8379:18;8376:38;8373:161;;8456:10;8451:3;8447:20;8444:1;8437:31;8491:4;8488:1;8481:15;8519:4;8516:1;8509:15;8373:161;;8160:380;;;:::o;9276:232::-;9315:3;9336:17;;;9333:140;;9395:10;9390:3;9386:20;9383:1;9376:31;9430:4;9427:1;9420:15;9458:4;9455:1;9448:15;9333:140;-1:-1:-1;9500:1:66;9489:13;;9276:232::o;9869:127::-;9930:10;9925:3;9921:20;9918:1;9911:31;9961:4;9958:1;9951:15;9985:4;9982:1;9975:15;10127:518;10229:2;10224:3;10221:11;10218:421;;;10265:5;10262:1;10255:16;10309:4;10306:1;10296:18;10379:2;10367:10;10363:19;10360:1;10356:27;10350:4;10346:38;10415:4;10403:10;10400:20;10397:47;;;-1:-1:-1;10438:4:66;10397:47;10493:2;10488:3;10484:12;10481:1;10477:20;10471:4;10467:31;10457:41;;10548:81;10566:2;10559:5;10556:13;10548:81;;;10625:1;10611:16;;10592:1;10581:13;10548:81;;10821:1299;10947:3;10941:10;10974:18;10966:6;10963:30;10960:56;;;10996:18;;:::i;:::-;11025:97;11115:6;11075:38;11107:4;11101:11;11075:38;:::i;:::-;11069:4;11025:97;:::i;:::-;11171:4;11202:2;11191:14;;11219:1;11214:649;;;;11907:1;11924:6;11921:89;;;-1:-1:-1;11976:19:66;;;11970:26;11921:89;-1:-1:-1;;10778:1:66;10774:11;;;10770:24;10766:29;10756:40;10802:1;10798:11;;;10753:57;12023:81;;11184:930;;11214:649;10074:1;10067:14;;;10111:4;10098:18;;-1:-1:-1;;11250:20:66;;;11368:222;11382:7;11379:1;11376:14;11368:222;;;11464:19;;;11458:26;11443:42;;11571:4;11556:20;;;;11524:1;11512:14;;;;11398:12;11368:222;;;11372:3;11618:6;11609:7;11606:19;11603:201;;;11679:19;;;11673:26;-1:-1:-1;;11762:1:66;11758:14;;;11774:3;11754:24;11750:37;11746:42;11731:58;11716:74;;11603:201;-1:-1:-1;;;;11850:1:66;11834:14;;;11830:22;11817:36;;-1:-1:-1;10821:1299:66:o;12125:317::-;12294:41;12325:9;12317:6;12294:41;:::i;:::-;12371:2;12366;12355:9;12351:18;12344:30;12275:4;12391:45;12432:2;12421:9;12417:18;12409:6;12391:45;:::i;12447:496::-;12626:3;12664:6;12658:13;12680:66;12739:6;12734:3;12727:4;12719:6;12715:17;12680:66;:::i;:::-;12809:13;;12768:16;;;;12831:70;12809:13;12768:16;12878:4;12866:17;;12831:70;:::i;:::-;12917:20;;12447:496;-1:-1:-1;;;;12447:496:66:o;12948:485::-;-1:-1:-1;;;;;13179:32:66;;;13161:51;;13248:32;;13243:2;13228:18;;13221:60;13312:2;13297:18;;13290:34;;;13360:3;13355:2;13340:18;;13333:31;;;-1:-1:-1;;13381:46:66;;13407:19;;13399:6;13381:46;:::i;:::-;13373:54;12948:485;-1:-1:-1;;;;;;12948:485:66:o;13438:249::-;13507:6;13560:2;13548:9;13539:7;13535:23;13531:32;13528:52;;;13576:1;13573;13566:12;13528:52;13608:9;13602:16;13627:30;13651:5;13627:30;:::i"},"gasEstimates":{"creation":{"codeDepositCost":"1380400","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"31537","balanceOf(address)":"2612","getApproved(uint256)":"infinite","getIPInfo(uint256)":"infinite","isApprovedForAll(address,address)":"infinite","mint(address,string,string,string,uint8)":"infinite","name()":"infinite","owner()":"2420","ownerOf(uint256)":"infinite","renounceOwnership()":"infinite","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26703","supportsInterface(bytes4)":"infinite","symbol()":"infinite","tokenOfOwnerByIndex(address,uint256)":"infinite","tokenURI(uint256)":"infinite","tokensOfOwner(address)":"infinite","totalSupply()":"2393","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"28468"},"internal":{"_exists(uint256)":"infinite","_update(address,uint256,address)":"infinite"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","getIPInfo(uint256)":"4effbf20","isApprovedForAll(address,address)":"e985e9c5","mint(address,string,string,string,uint8)":"979f5292","name()":"06fdde03","owner()":"8da5cb5b","ownerOf(uint256)":"6352211e","renounceOwnership()":"715018a6","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","tokensOfOwner(address)":"8462151c","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"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\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toTokenId\",\"type\":\"uint256\"}],\"name\":\"BatchMetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IPNFT.IPType\",\"name\":\"ipType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"}],\"name\":\"IPNFTMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MetadataUpdate\",\"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\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getIPInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"enum IPNFT.IPType\",\"name\":\"ipType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"}],\"internalType\":\"struct IPNFT.IPInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"title\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"},{\"internalType\":\"enum IPNFT.IPType\",\"name\":\"ipType\",\"type\":\"uint8\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"tokensOfOwner\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is used to create and manage intellectual property NFTs\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"BatchMetadataUpdate(uint256,uint256)\":{\"details\":\"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs.\"},\"MetadataUpdate(uint256)\":{\"details\":\"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getIPInfo(uint256)\":{\"details\":\"Gets the intellectual property information\",\"params\":{\"tokenId\":\"Token ID\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"mint(address,string,string,string,uint8)\":{\"details\":\"Mints a new intellectual property NFT\",\"params\":{\"description\":\"The IP description\",\"ipType\":\"The IP type\",\"title\":\"The IP title\",\"to\":\"The receiver address of the token\",\"uri\":\"The token metadata URI\"},\"returns\":{\"_0\":\"The newly minted token ID\"}},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Returns the token ID at a given index of an owner's token list\",\"params\":{\"index\":\"The index in the owner's token list\",\"owner\":\"The owner address\"}},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"tokensOfOwner(address)\":{\"details\":\"Gets all tokens owned by a specific address\",\"params\":{\"owner\":\"The owner address\"}},\"totalSupply()\":{\"details\":\"Gets the total number of minted NFTs\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"IPNFT\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/IPNFT.sol\":\"IPNFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC4906.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC4906.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\nimport {IERC721} from \\\"./IERC721.sol\\\";\\n\\n/// @title ERC-721 Metadata Update Extension\\ninterface IERC4906 is IERC165, IERC721 {\\n    /// @dev This event emits when the metadata of a token is changed.\\n    /// So that the third-party platforms such as NFT market could\\n    /// timely update the images and related attributes of the NFT.\\n    event MetadataUpdate(uint256 _tokenId);\\n\\n    /// @dev This event emits when the metadata of a range of tokens is changed.\\n    /// So that the third-party platforms such as NFT market could\\n    /// timely update the images and related attributes of the NFTs.\\n    event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);\\n}\\n\",\"keccak256\":\"0x1b8691e244f6e11d987459993671db0af33e6a29f7805eac6a9925cc6b601957\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721} from \\\"../token/ERC721/IERC721.sol\\\";\\n\",\"keccak256\":\"0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721} from \\\"./IERC721.sol\\\";\\nimport {IERC721Metadata} from \\\"./extensions/IERC721Metadata.sol\\\";\\nimport {ERC721Utils} from \\\"./utils/ERC721Utils.sol\\\";\\nimport {Context} from \\\"../../utils/Context.sol\\\";\\nimport {Strings} from \\\"../../utils/Strings.sol\\\";\\nimport {IERC165, ERC165} from \\\"../../utils/introspection/ERC165.sol\\\";\\nimport {IERC721Errors} from \\\"../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\nabstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Errors {\\n    using Strings for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    mapping(uint256 tokenId => address) private _owners;\\n\\n    mapping(address owner => uint256) private _balances;\\n\\n    mapping(uint256 tokenId => address) private _tokenApprovals;\\n\\n    mapping(address owner => mapping(address operator => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n        return\\n            interfaceId == type(IERC721).interfaceId ||\\n            interfaceId == type(IERC721Metadata).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual returns (uint256) {\\n        if (owner == address(0)) {\\n            revert ERC721InvalidOwner(address(0));\\n        }\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual returns (address) {\\n        return _requireOwned(tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual returns (string memory) {\\n        _requireOwned(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string.concat(baseURI, tokenId.toString()) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual {\\n        _approve(to, tokenId, _msgSender());\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual returns (address) {\\n        _requireOwned(tokenId);\\n\\n        return _getApproved(tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) public virtual {\\n        if (to == address(0)) {\\n            revert ERC721InvalidReceiver(address(0));\\n        }\\n        // Setting an \\\"auth\\\" arguments enables the `_isAuthorized` check which verifies that the token exists\\n        // (from != 0). Therefore, it is not needed to verify that the return value is not 0 here.\\n        address previousOwner = _update(to, tokenId, _msgSender());\\n        if (previousOwner != from) {\\n            revert ERC721IncorrectOwner(from, tokenId, previousOwner);\\n        }\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) public {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual {\\n        transferFrom(from, to, tokenId);\\n        ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n     *\\n     * IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\\n     * core ERC-721 logic MUST be matched with the use of {_increaseBalance} to keep balances\\n     * consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\\n     * `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`.\\n     */\\n    function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n        return _owners[tokenId];\\n    }\\n\\n    /**\\n     * @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted.\\n     */\\n    function _getApproved(uint256 tokenId) internal view virtual returns (address) {\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\\n     * particular (ignoring whether it is owned by `owner`).\\n     *\\n     * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\\n     * assumption.\\n     */\\n    function _isAuthorized(address owner, address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        return\\n            spender != address(0) &&\\n            (owner == spender || isApprovedForAll(owner, spender) || _getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\\n     * Reverts if:\\n     * - `spender` does not have approval from `owner` for `tokenId`.\\n     * - `spender` does not have approval to manage all of `owner`'s assets.\\n     *\\n     * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\\n     * assumption.\\n     */\\n    function _checkAuthorized(address owner, address spender, uint256 tokenId) internal view virtual {\\n        if (!_isAuthorized(owner, spender, tokenId)) {\\n            if (owner == address(0)) {\\n                revert ERC721NonexistentToken(tokenId);\\n            } else {\\n                revert ERC721InsufficientApproval(spender, tokenId);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n     *\\n     * NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\\n     * a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\\n     *\\n     * WARNING: Increasing an account's balance using this function tends to be paired with an override of the\\n     * {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\\n     * remain consistent with one another.\\n     */\\n    function _increaseBalance(address account, uint128 value) internal virtual {\\n        unchecked {\\n            _balances[account] += value;\\n        }\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\\n     * (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\\n     *\\n     * The `auth` argument is optional. If the value passed is non 0, then this function will check that\\n     * `auth` is either the owner of the token, or approved to operate on the token (by the owner).\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}.\\n     */\\n    function _update(address to, uint256 tokenId, address auth) internal virtual returns (address) {\\n        address from = _ownerOf(tokenId);\\n\\n        // Perform (optional) operator check\\n        if (auth != address(0)) {\\n            _checkAuthorized(from, auth, tokenId);\\n        }\\n\\n        // Execute the update\\n        if (from != address(0)) {\\n            // Clear approval. No need to re-authorize or emit the Approval event\\n            _approve(address(0), tokenId, address(0), false);\\n\\n            unchecked {\\n                _balances[from] -= 1;\\n            }\\n        }\\n\\n        if (to != address(0)) {\\n            unchecked {\\n                _balances[to] += 1;\\n            }\\n        }\\n\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        return from;\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal {\\n        if (to == address(0)) {\\n            revert ERC721InvalidReceiver(address(0));\\n        }\\n        address previousOwner = _update(to, tokenId, address(0));\\n        if (previousOwner != address(0)) {\\n            revert ERC721InvalidSender(address(0));\\n        }\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\\n        _mint(to, tokenId);\\n        ERC721Utils.checkOnERC721Received(_msgSender(), address(0), to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     * This is an internal function that does not check if the sender is authorized to operate on the token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal {\\n        address previousOwner = _update(address(0), tokenId, address(0));\\n        if (previousOwner == address(0)) {\\n            revert ERC721NonexistentToken(tokenId);\\n        }\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(address from, address to, uint256 tokenId) internal {\\n        if (to == address(0)) {\\n            revert ERC721InvalidReceiver(address(0));\\n        }\\n        address previousOwner = _update(to, tokenId, address(0));\\n        if (previousOwner == address(0)) {\\n            revert ERC721NonexistentToken(tokenId);\\n        } else if (previousOwner != from) {\\n            revert ERC721IncorrectOwner(from, tokenId, previousOwner);\\n        }\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\\n     * are aware of the ERC-721 standard to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is like {safeTransferFrom} in the sense that it invokes\\n     * {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - `to` cannot be the zero address.\\n     * - `from` cannot be the zero address.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(address from, address to, uint256 tokenId) internal {\\n        _safeTransfer(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\\n        _transfer(from, to, tokenId);\\n        ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\\n     * either the owner of the token, or approved to operate on all tokens held by this owner.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address to, uint256 tokenId, address auth) internal {\\n        _approve(to, tokenId, auth, true);\\n    }\\n\\n    /**\\n     * @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\\n     * emitted in the context of transfers.\\n     */\\n    function _approve(address to, uint256 tokenId, address auth, bool emitEvent) internal virtual {\\n        // Avoid reading the owner unless necessary\\n        if (emitEvent || auth != address(0)) {\\n            address owner = _requireOwned(tokenId);\\n\\n            // We do not use _isAuthorized because single-token approvals should not be able to call approve\\n            if (auth != address(0) && owner != auth && !isApprovedForAll(owner, auth)) {\\n                revert ERC721InvalidApprover(auth);\\n            }\\n\\n            if (emitEvent) {\\n                emit Approval(owner, to, tokenId);\\n            }\\n        }\\n\\n        _tokenApprovals[tokenId] = to;\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Requirements:\\n     * - operator can't be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\\n        if (operator == address(0)) {\\n            revert ERC721InvalidOperator(operator);\\n        }\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\\n     * Returns the owner.\\n     *\\n     * Overrides to ownership logic should be done to {_ownerOf}.\\n     */\\n    function _requireOwned(uint256 tokenId) internal view returns (address) {\\n        address owner = _ownerOf(tokenId);\\n        if (owner == address(0)) {\\n            revert ERC721NonexistentToken(tokenId);\\n        }\\n        return owner;\\n    }\\n}\\n\",\"keccak256\":\"0x39ed367e54765186281efcfe83e47cf0ad62cc879f10e191360712507125f29a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\\n     *   {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title ERC-721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC-721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be\\n     * reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC721/extensions/ERC721URIStorage.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ERC721} from \\\"../ERC721.sol\\\";\\nimport {Strings} from \\\"../../../utils/Strings.sol\\\";\\nimport {IERC4906} from \\\"../../../interfaces/IERC4906.sol\\\";\\nimport {IERC165} from \\\"../../../interfaces/IERC165.sol\\\";\\n\\n/**\\n * @dev ERC-721 token with storage based token URI management.\\n */\\nabstract contract ERC721URIStorage is IERC4906, ERC721 {\\n    using Strings for uint256;\\n\\n    // Interface ID as defined in ERC-4906. This does not correspond to a traditional interface ID as ERC-4906 only\\n    // defines events and does not include any external function.\\n    bytes4 private constant ERC4906_INTERFACE_ID = bytes4(0x49064906);\\n\\n    // Optional mapping for token URIs\\n    mapping(uint256 tokenId => string) private _tokenURIs;\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, IERC165) returns (bool) {\\n        return interfaceId == ERC4906_INTERFACE_ID || super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        _requireOwned(tokenId);\\n\\n        string memory _tokenURI = _tokenURIs[tokenId];\\n        string memory base = _baseURI();\\n\\n        // If there is no base URI, return the token URI.\\n        if (bytes(base).length == 0) {\\n            return _tokenURI;\\n        }\\n        // If both are set, concatenate the baseURI and tokenURI (via string.concat).\\n        if (bytes(_tokenURI).length > 0) {\\n            return string.concat(base, _tokenURI);\\n        }\\n\\n        return super.tokenURI(tokenId);\\n    }\\n\\n    /**\\n     * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\\n     *\\n     * Emits {IERC4906-MetadataUpdate}.\\n     */\\n    function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\\n        _tokenURIs[tokenId] = _tokenURI;\\n        emit MetadataUpdate(tokenId);\\n    }\\n}\\n\",\"keccak256\":\"0x2b27b58570ff2456c7e65022a356c7e4f205bfabf95d0e870855a86587bb1356\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721} from \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC721/utils/ERC721Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721Receiver} from \\\"../IERC721Receiver.sol\\\";\\nimport {IERC721Errors} from \\\"../../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Library that provide common ERC-721 utility functions.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-721[ERC-721].\\n *\\n * _Available since v5.1._\\n */\\nlibrary ERC721Utils {\\n    /**\\n     * @dev Performs an acceptance check for the provided `operator` by calling {IERC721Receiver-onERC721Received}\\n     * on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).\\n     *\\n     * The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).\\n     * Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept\\n     * the transfer.\\n     */\\n    function checkOnERC721Received(\\n        address operator,\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length > 0) {\\n            try IERC721Receiver(to).onERC721Received(operator, from, tokenId, data) returns (bytes4 retval) {\\n                if (retval != IERC721Receiver.onERC721Received.selector) {\\n                    // Token rejected\\n                    revert IERC721Errors.ERC721InvalidReceiver(to);\\n                }\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    // non-IERC721Receiver implementer\\n                    revert IERC721Errors.ERC721InvalidReceiver(to);\\n                } else {\\n                    assembly (\\\"memory-safe\\\") {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xddab643169f47a2c5291afafcbfdca045d9e6835553307d090bc048b6dabd0ac\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Panic.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Helper library for emitting standardized panic codes.\\n *\\n * ```solidity\\n * contract Example {\\n *      using Panic for uint256;\\n *\\n *      // Use any of the declared internal constants\\n *      function foo() { Panic.GENERIC.panic(); }\\n *\\n *      // Alternatively\\n *      function foo() { Panic.panic(Panic.GENERIC); }\\n * }\\n * ```\\n *\\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\\n *\\n * _Available since v5.1._\\n */\\n// slither-disable-next-line unused-state\\nlibrary Panic {\\n    /// @dev generic / unspecified error\\n    uint256 internal constant GENERIC = 0x00;\\n    /// @dev used by the assert() builtin\\n    uint256 internal constant ASSERT = 0x01;\\n    /// @dev arithmetic underflow or overflow\\n    uint256 internal constant UNDER_OVERFLOW = 0x11;\\n    /// @dev division or modulo by zero\\n    uint256 internal constant DIVISION_BY_ZERO = 0x12;\\n    /// @dev enum conversion error\\n    uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\\n    /// @dev invalid encoding in storage\\n    uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\\n    /// @dev empty array pop\\n    uint256 internal constant EMPTY_ARRAY_POP = 0x31;\\n    /// @dev array out of bounds access\\n    uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\\n    /// @dev resource error (too large allocation or too large array)\\n    uint256 internal constant RESOURCE_ERROR = 0x41;\\n    /// @dev calling invalid internal function\\n    uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\\n\\n    /// @dev Reverts with a panic code. Recommended to use with\\n    /// the internal constants with predefined codes.\\n    function panic(uint256 code) internal pure {\\n        assembly (\\\"memory-safe\\\") {\\n            mstore(0x00, 0x4e487b71)\\n            mstore(0x20, code)\\n            revert(0x1c, 0x24)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Math} from \\\"./math/Math.sol\\\";\\nimport {SafeCast} from \\\"./math/SafeCast.sol\\\";\\nimport {SignedMath} from \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    using SafeCast for *;\\n\\n    bytes16 private constant HEX_DIGITS = \\\"0123456789abcdef\\\";\\n    uint8 private constant ADDRESS_LENGTH = 20;\\n    uint256 private constant SPECIAL_CHARS_LOOKUP =\\n        (1 << 0x08) | // backspace\\n            (1 << 0x09) | // tab\\n            (1 << 0x0a) | // newline\\n            (1 << 0x0c) | // form feed\\n            (1 << 0x0d) | // carriage return\\n            (1 << 0x22) | // double quote\\n            (1 << 0x5c); // backslash\\n\\n    /**\\n     * @dev The `value` string doesn't fit in the specified `length`.\\n     */\\n    error StringsInsufficientHexLength(uint256 value, uint256 length);\\n\\n    /**\\n     * @dev The string being parsed contains characters that are not in scope of the given base.\\n     */\\n    error StringsInvalidChar();\\n\\n    /**\\n     * @dev The string being parsed is not a properly formatted address.\\n     */\\n    error StringsInvalidAddressFormat();\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            uint256 length = Math.log10(value) + 1;\\n            string memory buffer = new string(length);\\n            uint256 ptr;\\n            assembly (\\\"memory-safe\\\") {\\n                ptr := add(buffer, add(32, length))\\n            }\\n            while (true) {\\n                ptr--;\\n                assembly (\\\"memory-safe\\\") {\\n                    mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\\n                }\\n                value /= 10;\\n                if (value == 0) break;\\n            }\\n            return buffer;\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n     */\\n    function toStringSigned(int256 value) internal pure returns (string memory) {\\n        return string.concat(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value)));\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            return toHexString(value, Math.log256(value) + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        uint256 localValue = value;\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = HEX_DIGITS[localValue & 0xf];\\n            localValue >>= 4;\\n        }\\n        if (localValue != 0) {\\n            revert StringsInsufficientHexLength(value, length);\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\\n     * representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\\n     * representation, according to EIP-55.\\n     */\\n    function toChecksumHexString(address addr) internal pure returns (string memory) {\\n        bytes memory buffer = bytes(toHexString(addr));\\n\\n        // hash the hex part of buffer (skip length + 2 bytes, length 40)\\n        uint256 hashValue;\\n        assembly (\\\"memory-safe\\\") {\\n            hashValue := shr(96, keccak256(add(buffer, 0x22), 40))\\n        }\\n\\n        for (uint256 i = 41; i > 1; --i) {\\n            // possible values for buffer[i] are 48 (0) to 57 (9) and 97 (a) to 102 (f)\\n            if (hashValue & 0xf > 7 && uint8(buffer[i]) > 96) {\\n                // case shift by xoring with 0x20\\n                buffer[i] ^= 0x20;\\n            }\\n            hashValue >>= 4;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Returns true if the two strings are equal.\\n     */\\n    function equal(string memory a, string memory b) internal pure returns (bool) {\\n        return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\\n    }\\n\\n    /**\\n     * @dev Parse a decimal string and returns the value as a `uint256`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `[0-9]*`\\n     * - The result must fit into an `uint256` type\\n     */\\n    function parseUint(string memory input) internal pure returns (uint256) {\\n        return parseUint(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `[0-9]*`\\n     * - The result must fit into an `uint256` type\\n     */\\n    function parseUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\\n        (bool success, uint256 value) = tryParseUint(input, begin, end);\\n        if (!success) revert StringsInvalidChar();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseUint(string memory input) internal pure returns (bool success, uint256 value) {\\n        return _tryParseUintUncheckedBounds(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid\\n     * character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseUint(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, uint256 value) {\\n        if (end > bytes(input).length || begin > end) return (false, 0);\\n        return _tryParseUintUncheckedBounds(input, begin, end);\\n    }\\n\\n    /**\\n     * @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\\n     */\\n    function _tryParseUintUncheckedBounds(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) private pure returns (bool success, uint256 value) {\\n        bytes memory buffer = bytes(input);\\n\\n        uint256 result = 0;\\n        for (uint256 i = begin; i < end; ++i) {\\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\\n            if (chr > 9) return (false, 0);\\n            result *= 10;\\n            result += chr;\\n        }\\n        return (true, result);\\n    }\\n\\n    /**\\n     * @dev Parse a decimal string and returns the value as a `int256`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `[-+]?[0-9]*`\\n     * - The result must fit in an `int256` type.\\n     */\\n    function parseInt(string memory input) internal pure returns (int256) {\\n        return parseInt(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `[-+]?[0-9]*`\\n     * - The result must fit in an `int256` type.\\n     */\\n    function parseInt(string memory input, uint256 begin, uint256 end) internal pure returns (int256) {\\n        (bool success, int256 value) = tryParseInt(input, begin, end);\\n        if (!success) revert StringsInvalidChar();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if\\n     * the result does not fit in a `int256`.\\n     *\\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\\n     */\\n    function tryParseInt(string memory input) internal pure returns (bool success, int256 value) {\\n        return _tryParseIntUncheckedBounds(input, 0, bytes(input).length);\\n    }\\n\\n    uint256 private constant ABS_MIN_INT256 = 2 ** 255;\\n\\n    /**\\n     * @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid\\n     * character or if the result does not fit in a `int256`.\\n     *\\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\\n     */\\n    function tryParseInt(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, int256 value) {\\n        if (end > bytes(input).length || begin > end) return (false, 0);\\n        return _tryParseIntUncheckedBounds(input, begin, end);\\n    }\\n\\n    /**\\n     * @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that\\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\\n     */\\n    function _tryParseIntUncheckedBounds(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) private pure returns (bool success, int256 value) {\\n        bytes memory buffer = bytes(input);\\n\\n        // Check presence of a negative sign.\\n        bytes1 sign = begin == end ? bytes1(0) : bytes1(_unsafeReadBytesOffset(buffer, begin)); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\\n        bool positiveSign = sign == bytes1(\\\"+\\\");\\n        bool negativeSign = sign == bytes1(\\\"-\\\");\\n        uint256 offset = (positiveSign || negativeSign).toUint();\\n\\n        (bool absSuccess, uint256 absValue) = tryParseUint(input, begin + offset, end);\\n\\n        if (absSuccess && absValue < ABS_MIN_INT256) {\\n            return (true, negativeSign ? -int256(absValue) : int256(absValue));\\n        } else if (absSuccess && negativeSign && absValue == ABS_MIN_INT256) {\\n            return (true, type(int256).min);\\n        } else return (false, 0);\\n    }\\n\\n    /**\\n     * @dev Parse a hexadecimal string (with or without \\\"0x\\\" prefix), and returns the value as a `uint256`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]*`\\n     * - The result must fit in an `uint256` type.\\n     */\\n    function parseHexUint(string memory input) internal pure returns (uint256) {\\n        return parseHexUint(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]*`\\n     * - The result must fit in an `uint256` type.\\n     */\\n    function parseHexUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\\n        (bool success, uint256 value) = tryParseHexUint(input, begin, end);\\n        if (!success) revert StringsInvalidChar();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseHexUint(string memory input) internal pure returns (bool success, uint256 value) {\\n        return _tryParseHexUintUncheckedBounds(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an\\n     * invalid character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseHexUint(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, uint256 value) {\\n        if (end > bytes(input).length || begin > end) return (false, 0);\\n        return _tryParseHexUintUncheckedBounds(input, begin, end);\\n    }\\n\\n    /**\\n     * @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\\n     */\\n    function _tryParseHexUintUncheckedBounds(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) private pure returns (bool success, uint256 value) {\\n        bytes memory buffer = bytes(input);\\n\\n        // skip 0x prefix if present\\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(buffer, begin)) == bytes2(\\\"0x\\\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\\n        uint256 offset = hasPrefix.toUint() * 2;\\n\\n        uint256 result = 0;\\n        for (uint256 i = begin + offset; i < end; ++i) {\\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\\n            if (chr > 15) return (false, 0);\\n            result *= 16;\\n            unchecked {\\n                // Multiplying by 16 is equivalent to a shift of 4 bits (with additional overflow check).\\n                // This guarantees that adding a value < 16 will not cause an overflow, hence the unchecked.\\n                result += chr;\\n            }\\n        }\\n        return (true, result);\\n    }\\n\\n    /**\\n     * @dev Parse a hexadecimal string (with or without \\\"0x\\\" prefix), and returns the value as an `address`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]{40}`\\n     */\\n    function parseAddress(string memory input) internal pure returns (address) {\\n        return parseAddress(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}`\\n     */\\n    function parseAddress(string memory input, uint256 begin, uint256 end) internal pure returns (address) {\\n        (bool success, address value) = tryParseAddress(input, begin, end);\\n        if (!success) revert StringsInvalidAddressFormat();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly\\n     * formatted address. See {parseAddress-string} requirements.\\n     */\\n    function tryParseAddress(string memory input) internal pure returns (bool success, address value) {\\n        return tryParseAddress(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly\\n     * formatted address. See {parseAddress-string-uint256-uint256} requirements.\\n     */\\n    function tryParseAddress(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, address value) {\\n        if (end > bytes(input).length || begin > end) return (false, address(0));\\n\\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(bytes(input), begin)) == bytes2(\\\"0x\\\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\\n        uint256 expectedLength = 40 + hasPrefix.toUint() * 2;\\n\\n        // check that input is the correct length\\n        if (end - begin == expectedLength) {\\n            // length guarantees that this does not overflow, and value is at most type(uint160).max\\n            (bool s, uint256 v) = _tryParseHexUintUncheckedBounds(input, begin, end);\\n            return (s, address(uint160(v)));\\n        } else {\\n            return (false, address(0));\\n        }\\n    }\\n\\n    function _tryParseChr(bytes1 chr) private pure returns (uint8) {\\n        uint8 value = uint8(chr);\\n\\n        // Try to parse `chr`:\\n        // - Case 1: [0-9]\\n        // - Case 2: [a-f]\\n        // - Case 3: [A-F]\\n        // - otherwise not supported\\n        unchecked {\\n            if (value > 47 && value < 58) value -= 48;\\n            else if (value > 96 && value < 103) value -= 87;\\n            else if (value > 64 && value < 71) value -= 55;\\n            else return type(uint8).max;\\n        }\\n\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata.\\n     *\\n     * WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped.\\n     *\\n     * NOTE: This function escapes all unicode characters, and not just the ones in ranges defined in section 2.5 of\\n     * RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). ECMAScript's `JSON.parse` does recover escaped unicode\\n     * characters that are not in this range, but other tooling may provide different results.\\n     */\\n    function escapeJSON(string memory input) internal pure returns (string memory) {\\n        bytes memory buffer = bytes(input);\\n        bytes memory output = new bytes(2 * buffer.length); // worst case scenario\\n        uint256 outputLength = 0;\\n\\n        for (uint256 i; i < buffer.length; ++i) {\\n            bytes1 char = bytes1(_unsafeReadBytesOffset(buffer, i));\\n            if (((SPECIAL_CHARS_LOOKUP & (1 << uint8(char))) != 0)) {\\n                output[outputLength++] = \\\"\\\\\\\\\\\";\\n                if (char == 0x08) output[outputLength++] = \\\"b\\\";\\n                else if (char == 0x09) output[outputLength++] = \\\"t\\\";\\n                else if (char == 0x0a) output[outputLength++] = \\\"n\\\";\\n                else if (char == 0x0c) output[outputLength++] = \\\"f\\\";\\n                else if (char == 0x0d) output[outputLength++] = \\\"r\\\";\\n                else if (char == 0x5c) output[outputLength++] = \\\"\\\\\\\\\\\";\\n                else if (char == 0x22) {\\n                    // solhint-disable-next-line quotes\\n                    output[outputLength++] = '\\\"';\\n                }\\n            } else {\\n                output[outputLength++] = char;\\n            }\\n        }\\n        // write the actual length and deallocate unused memory\\n        assembly (\\\"memory-safe\\\") {\\n            mstore(output, outputLength)\\n            mstore(0x40, add(output, shl(5, shr(5, add(outputLength, 63)))))\\n        }\\n\\n        return string(output);\\n    }\\n\\n    /**\\n     * @dev Reads a bytes32 from a bytes array without bounds checking.\\n     *\\n     * NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\\n     * assembly block as such would prevent some optimizations.\\n     */\\n    function _unsafeReadBytesOffset(bytes memory buffer, uint256 offset) private pure returns (bytes32 value) {\\n        // This is not memory safe in the general case, but all calls to this private function are within bounds.\\n        assembly (\\\"memory-safe\\\") {\\n            value := mload(add(buffer, add(0x20, offset)))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x81c274a60a7ae232ae3dc9ff3a4011b4849a853c13b0832cd3351bb1bb2f0dae\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Panic} from \\\"../Panic.sol\\\";\\nimport {SafeCast} from \\\"./SafeCast.sol\\\";\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n    enum Rounding {\\n        Floor, // Toward negative infinity\\n        Ceil, // Toward positive infinity\\n        Trunc, // Toward zero\\n        Expand // Away from zero\\n    }\\n\\n    /**\\n     * @dev Return the 512-bit addition of two uint256.\\n     *\\n     * The result is stored in two 256 variables such that sum = high * 2\\u00b2\\u2075\\u2076 + low.\\n     */\\n    function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\\n        assembly (\\\"memory-safe\\\") {\\n            low := add(a, b)\\n            high := lt(low, a)\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the 512-bit multiplication of two uint256.\\n     *\\n     * The result is stored in two 256 variables such that product = high * 2\\u00b2\\u2075\\u2076 + low.\\n     */\\n    function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\\n        // 512-bit multiply [high low] = x * y. Compute the product mod 2\\u00b2\\u2075\\u2076 and mod 2\\u00b2\\u2075\\u2076 - 1, then use\\n        // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n        // variables such that product = high * 2\\u00b2\\u2075\\u2076 + low.\\n        assembly (\\\"memory-safe\\\") {\\n            let mm := mulmod(a, b, not(0))\\n            low := mul(a, b)\\n            high := sub(sub(mm, low), lt(mm, low))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a + b;\\n            success = c >= a;\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a - b;\\n            success = c <= a;\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a * b;\\n            assembly (\\\"memory-safe\\\") {\\n                // Only true when the multiplication doesn't overflow\\n                // (c / a == b) || (a == 0)\\n                success := or(eq(div(c, a), b), iszero(a))\\n            }\\n            // equivalent to: success ? c : 0\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\\n     */\\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            success = b > 0;\\n            assembly (\\\"memory-safe\\\") {\\n                // The `DIV` opcode returns zero when the denominator is 0.\\n                result := div(a, b)\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\\n     */\\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            success = b > 0;\\n            assembly (\\\"memory-safe\\\") {\\n                // The `MOD` opcode returns zero when the denominator is 0.\\n                result := mod(a, b)\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating addition, bounds to `2\\u00b2\\u2075\\u2076 - 1` instead of overflowing.\\n     */\\n    function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (bool success, uint256 result) = tryAdd(a, b);\\n        return ternary(success, result, type(uint256).max);\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing.\\n     */\\n    function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (, uint256 result) = trySub(a, b);\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating multiplication, bounds to `2\\u00b2\\u2075\\u2076 - 1` instead of overflowing.\\n     */\\n    function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (bool success, uint256 result) = tryMul(a, b);\\n        return ternary(success, result, type(uint256).max);\\n    }\\n\\n    /**\\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\\n     *\\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\\n     * one branch when needed, making this function more expensive.\\n     */\\n    function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\\n        unchecked {\\n            // branchless ternary works because:\\n            // b ^ (a ^ b) == a\\n            // b ^ 0 == b\\n            return b ^ ((a ^ b) * SafeCast.toUint(condition));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the largest of two numbers.\\n     */\\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return ternary(a > b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two numbers.\\n     */\\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return ternary(a < b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the average of two numbers. The result is rounded towards\\n     * zero.\\n     */\\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // (a + b) / 2 can overflow.\\n        return (a & b) + (a ^ b) / 2;\\n    }\\n\\n    /**\\n     * @dev Returns the ceiling of the division of two numbers.\\n     *\\n     * This differs from standard division with `/` in that it rounds towards infinity instead\\n     * of rounding towards zero.\\n     */\\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n        if (b == 0) {\\n            // Guarantee the same behavior as in a regular Solidity division.\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n\\n        // The following calculation ensures accurate ceiling division without overflow.\\n        // Since a is non-zero, (a - 1) / b will not overflow.\\n        // The largest possible result occurs when (a - 1) / b is type(uint256).max,\\n        // but the largest value we can obtain is type(uint256).max - 1, which happens\\n        // when a = type(uint256).max and b = 1.\\n        unchecked {\\n            return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\\n     * denominator == 0.\\n     *\\n     * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\\n     * Uniswap Labs also under MIT license.\\n     */\\n    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n        unchecked {\\n            (uint256 high, uint256 low) = mul512(x, y);\\n\\n            // Handle non-overflow cases, 256 by 256 division.\\n            if (high == 0) {\\n                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n                // The surrounding unchecked block does not change this fact.\\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n                return low / denominator;\\n            }\\n\\n            // Make sure the result is less than 2\\u00b2\\u2075\\u2076. Also prevents denominator == 0.\\n            if (denominator <= high) {\\n                Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\\n            }\\n\\n            ///////////////////////////////////////////////\\n            // 512 by 256 division.\\n            ///////////////////////////////////////////////\\n\\n            // Make division exact by subtracting the remainder from [high low].\\n            uint256 remainder;\\n            assembly (\\\"memory-safe\\\") {\\n                // Compute remainder using mulmod.\\n                remainder := mulmod(x, y, denominator)\\n\\n                // Subtract 256 bit number from 512 bit number.\\n                high := sub(high, gt(remainder, low))\\n                low := sub(low, remainder)\\n            }\\n\\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\\n            // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\\n\\n            uint256 twos = denominator & (0 - denominator);\\n            assembly (\\\"memory-safe\\\") {\\n                // Divide denominator by twos.\\n                denominator := div(denominator, twos)\\n\\n                // Divide [high low] by twos.\\n                low := div(low, twos)\\n\\n                // Flip twos such that it is 2\\u00b2\\u2075\\u2076 / twos. If twos is zero, then it becomes one.\\n                twos := add(div(sub(0, twos), twos), 1)\\n            }\\n\\n            // Shift in bits from high into low.\\n            low |= high * twos;\\n\\n            // Invert denominator mod 2\\u00b2\\u2075\\u2076. Now that denominator is an odd number, it has an inverse modulo 2\\u00b2\\u2075\\u2076 such\\n            // that denominator * inv \\u2261 1 mod 2\\u00b2\\u2075\\u2076. Compute the inverse by starting with a seed that is correct for\\n            // four bits. That is, denominator * inv \\u2261 1 mod 2\\u2074.\\n            uint256 inverse = (3 * denominator) ^ 2;\\n\\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\\n            // works in modular arithmetic, doubling the correct bits in each step.\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u2078\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b9\\u2076\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b3\\u00b2\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u2076\\u2074\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b9\\u00b2\\u2078\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b2\\u2075\\u2076\\n\\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n            // This will give us the correct result modulo 2\\u00b2\\u2075\\u2076. Since the preconditions guarantee that the outcome is\\n            // less than 2\\u00b2\\u2075\\u2076, this is the final result. We don't need to compute the high bits of the result and high\\n            // is no longer required.\\n            result = low * inverse;\\n            return result;\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates x * y / denominator with full precision, following the selected rounding direction.\\n     */\\n    function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n        return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\\n    }\\n\\n    /**\\n     * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256.\\n     */\\n    function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) {\\n        unchecked {\\n            (uint256 high, uint256 low) = mul512(x, y);\\n            if (high >= 1 << n) {\\n                Panic.panic(Panic.UNDER_OVERFLOW);\\n            }\\n            return (high << (256 - n)) | (low >> n);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates x * y >> n with full precision, following the selected rounding direction.\\n     */\\n    function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) {\\n        return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0);\\n    }\\n\\n    /**\\n     * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\\n     *\\n     * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\\n     * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\\n     *\\n     * If the input value is not inversible, 0 is returned.\\n     *\\n     * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\\n     * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\\n     */\\n    function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\\n        unchecked {\\n            if (n == 0) return 0;\\n\\n            // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\\n            // Used to compute integers x and y such that: ax + ny = gcd(a, n).\\n            // When the gcd is 1, then the inverse of a modulo n exists and it's x.\\n            // ax + ny = 1\\n            // ax = 1 + (-y)n\\n            // ax \\u2261 1 (mod n) # x is the inverse of a modulo n\\n\\n            // If the remainder is 0 the gcd is n right away.\\n            uint256 remainder = a % n;\\n            uint256 gcd = n;\\n\\n            // Therefore the initial coefficients are:\\n            // ax + ny = gcd(a, n) = n\\n            // 0a + 1n = n\\n            int256 x = 0;\\n            int256 y = 1;\\n\\n            while (remainder != 0) {\\n                uint256 quotient = gcd / remainder;\\n\\n                (gcd, remainder) = (\\n                    // The old remainder is the next gcd to try.\\n                    remainder,\\n                    // Compute the next remainder.\\n                    // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\\n                    // where gcd is at most n (capped to type(uint256).max)\\n                    gcd - remainder * quotient\\n                );\\n\\n                (x, y) = (\\n                    // Increment the coefficient of a.\\n                    y,\\n                    // Decrement the coefficient of n.\\n                    // Can overflow, but the result is casted to uint256 so that the\\n                    // next value of y is \\\"wrapped around\\\" to a value between 0 and n - 1.\\n                    x - y * int256(quotient)\\n                );\\n            }\\n\\n            if (gcd != 1) return 0; // No inverse exists.\\n            return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\\n        }\\n    }\\n\\n    /**\\n     * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\\n     *\\n     * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\\n     * prime, then `a**(p-1) \\u2261 1 mod p`. As a consequence, we have `a * a**(p-2) \\u2261 1 mod p`, which means that\\n     * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\\n     *\\n     * NOTE: this function does NOT check that `p` is a prime greater than `2`.\\n     */\\n    function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\\n        unchecked {\\n            return Math.modExp(a, p - 2, p);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\\n     *\\n     * Requirements:\\n     * - modulus can't be zero\\n     * - underlying staticcall to precompile must succeed\\n     *\\n     * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\\n     * sure the chain you're using it on supports the precompiled contract for modular exponentiation\\n     * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\\n     * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\\n     * interpreted as 0.\\n     */\\n    function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\\n        (bool success, uint256 result) = tryModExp(b, e, m);\\n        if (!success) {\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\\n     * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\\n     * to operate modulo 0 or if the underlying precompile reverted.\\n     *\\n     * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\\n     * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\\n     * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\\n     * of a revert, but the result may be incorrectly interpreted as 0.\\n     */\\n    function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\\n        if (m == 0) return (false, 0);\\n        assembly (\\\"memory-safe\\\") {\\n            let ptr := mload(0x40)\\n            // | Offset    | Content    | Content (Hex)                                                      |\\n            // |-----------|------------|--------------------------------------------------------------------|\\n            // | 0x00:0x1f | size of b  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x20:0x3f | size of e  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x40:0x5f | size of m  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x60:0x7f | value of b | 0x<.............................................................b> |\\n            // | 0x80:0x9f | value of e | 0x<.............................................................e> |\\n            // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\\n            mstore(ptr, 0x20)\\n            mstore(add(ptr, 0x20), 0x20)\\n            mstore(add(ptr, 0x40), 0x20)\\n            mstore(add(ptr, 0x60), b)\\n            mstore(add(ptr, 0x80), e)\\n            mstore(add(ptr, 0xa0), m)\\n\\n            // Given the result < m, it's guaranteed to fit in 32 bytes,\\n            // so we can use the memory scratch space located at offset 0.\\n            success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\\n            result := mload(0x00)\\n        }\\n    }\\n\\n    /**\\n     * @dev Variant of {modExp} that supports inputs of arbitrary length.\\n     */\\n    function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\\n        (bool success, bytes memory result) = tryModExp(b, e, m);\\n        if (!success) {\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\\n     */\\n    function tryModExp(\\n        bytes memory b,\\n        bytes memory e,\\n        bytes memory m\\n    ) internal view returns (bool success, bytes memory result) {\\n        if (_zeroBytes(m)) return (false, new bytes(0));\\n\\n        uint256 mLen = m.length;\\n\\n        // Encode call args in result and move the free memory pointer\\n        result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\\n\\n        assembly (\\\"memory-safe\\\") {\\n            let dataPtr := add(result, 0x20)\\n            // Write result on top of args to avoid allocating extra memory.\\n            success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\\n            // Overwrite the length.\\n            // result.length > returndatasize() is guaranteed because returndatasize() == m.length\\n            mstore(result, mLen)\\n            // Set the memory pointer after the returned data.\\n            mstore(0x40, add(dataPtr, mLen))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns whether the provided byte array is zero.\\n     */\\n    function _zeroBytes(bytes memory byteArray) private pure returns (bool) {\\n        for (uint256 i = 0; i < byteArray.length; ++i) {\\n            if (byteArray[i] != 0) {\\n                return false;\\n            }\\n        }\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\\n     * towards zero.\\n     *\\n     * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\\n     * using integer operations.\\n     */\\n    function sqrt(uint256 a) internal pure returns (uint256) {\\n        unchecked {\\n            // Take care of easy edge cases when a == 0 or a == 1\\n            if (a <= 1) {\\n                return a;\\n            }\\n\\n            // In this function, we use Newton's method to get a root of `f(x) := x\\u00b2 - a`. It involves building a\\n            // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\\n            // the current value as `\\u03b5_n = | x_n - sqrt(a) |`.\\n            //\\n            // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\\n            // of the target. (i.e. `2**(e-1) \\u2264 sqrt(a) < 2**e`). We know that `e \\u2264 128` because `(2\\u00b9\\u00b2\\u2078)\\u00b2 = 2\\u00b2\\u2075\\u2076` is\\n            // bigger than any uint256.\\n            //\\n            // By noticing that\\n            // `2**(e-1) \\u2264 sqrt(a) < 2**e \\u2192 (2**(e-1))\\u00b2 \\u2264 a < (2**e)\\u00b2 \\u2192 2**(2*e-2) \\u2264 a < 2**(2*e)`\\n            // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\\n            // to the msb function.\\n            uint256 aa = a;\\n            uint256 xn = 1;\\n\\n            if (aa >= (1 << 128)) {\\n                aa >>= 128;\\n                xn <<= 64;\\n            }\\n            if (aa >= (1 << 64)) {\\n                aa >>= 64;\\n                xn <<= 32;\\n            }\\n            if (aa >= (1 << 32)) {\\n                aa >>= 32;\\n                xn <<= 16;\\n            }\\n            if (aa >= (1 << 16)) {\\n                aa >>= 16;\\n                xn <<= 8;\\n            }\\n            if (aa >= (1 << 8)) {\\n                aa >>= 8;\\n                xn <<= 4;\\n            }\\n            if (aa >= (1 << 4)) {\\n                aa >>= 4;\\n                xn <<= 2;\\n            }\\n            if (aa >= (1 << 2)) {\\n                xn <<= 1;\\n            }\\n\\n            // We now have x_n such that `x_n = 2**(e-1) \\u2264 sqrt(a) < 2**e = 2 * x_n`. This implies \\u03b5_n \\u2264 2**(e-1).\\n            //\\n            // We can refine our estimation by noticing that the middle of that interval minimizes the error.\\n            // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to \\u03b5_n \\u2264 2**(e-2).\\n            // This is going to be our x_0 (and \\u03b5_0)\\n            xn = (3 * xn) >> 1; // \\u03b5_0 := | x_0 - sqrt(a) | \\u2264 2**(e-2)\\n\\n            // From here, Newton's method give us:\\n            // x_{n+1} = (x_n + a / x_n) / 2\\n            //\\n            // One should note that:\\n            // x_{n+1}\\u00b2 - a = ((x_n + a / x_n) / 2)\\u00b2 - a\\n            //              = ((x_n\\u00b2 + a) / (2 * x_n))\\u00b2 - a\\n            //              = (x_n\\u2074 + 2 * a * x_n\\u00b2 + a\\u00b2) / (4 * x_n\\u00b2) - a\\n            //              = (x_n\\u2074 + 2 * a * x_n\\u00b2 + a\\u00b2 - 4 * a * x_n\\u00b2) / (4 * x_n\\u00b2)\\n            //              = (x_n\\u2074 - 2 * a * x_n\\u00b2 + a\\u00b2) / (4 * x_n\\u00b2)\\n            //              = (x_n\\u00b2 - a)\\u00b2 / (2 * x_n)\\u00b2\\n            //              = ((x_n\\u00b2 - a) / (2 * x_n))\\u00b2\\n            //              \\u2265 0\\n            // Which proves that for all n \\u2265 1, sqrt(a) \\u2264 x_n\\n            //\\n            // This gives us the proof of quadratic convergence of the sequence:\\n            // \\u03b5_{n+1} = | x_{n+1} - sqrt(a) |\\n            //         = | (x_n + a / x_n) / 2 - sqrt(a) |\\n            //         = | (x_n\\u00b2 + a - 2*x_n*sqrt(a)) / (2 * x_n) |\\n            //         = | (x_n - sqrt(a))\\u00b2 / (2 * x_n) |\\n            //         = | \\u03b5_n\\u00b2 / (2 * x_n) |\\n            //         = \\u03b5_n\\u00b2 / | (2 * x_n) |\\n            //\\n            // For the first iteration, we have a special case where x_0 is known:\\n            // \\u03b5_1 = \\u03b5_0\\u00b2 / | (2 * x_0) |\\n            //     \\u2264 (2**(e-2))\\u00b2 / (2 * (2**(e-1) + 2**(e-2)))\\n            //     \\u2264 2**(2*e-4) / (3 * 2**(e-1))\\n            //     \\u2264 2**(e-3) / 3\\n            //     \\u2264 2**(e-3-log2(3))\\n            //     \\u2264 2**(e-4.5)\\n            //\\n            // For the following iterations, we use the fact that, 2**(e-1) \\u2264 sqrt(a) \\u2264 x_n:\\n            // \\u03b5_{n+1} = \\u03b5_n\\u00b2 / | (2 * x_n) |\\n            //         \\u2264 (2**(e-k))\\u00b2 / (2 * 2**(e-1))\\n            //         \\u2264 2**(2*e-2*k) / 2**e\\n            //         \\u2264 2**(e-2*k)\\n            xn = (xn + a / xn) >> 1; // \\u03b5_1 := | x_1 - sqrt(a) | \\u2264 2**(e-4.5)  -- special case, see above\\n            xn = (xn + a / xn) >> 1; // \\u03b5_2 := | x_2 - sqrt(a) | \\u2264 2**(e-9)    -- general case with k = 4.5\\n            xn = (xn + a / xn) >> 1; // \\u03b5_3 := | x_3 - sqrt(a) | \\u2264 2**(e-18)   -- general case with k = 9\\n            xn = (xn + a / xn) >> 1; // \\u03b5_4 := | x_4 - sqrt(a) | \\u2264 2**(e-36)   -- general case with k = 18\\n            xn = (xn + a / xn) >> 1; // \\u03b5_5 := | x_5 - sqrt(a) | \\u2264 2**(e-72)   -- general case with k = 36\\n            xn = (xn + a / xn) >> 1; // \\u03b5_6 := | x_6 - sqrt(a) | \\u2264 2**(e-144)  -- general case with k = 72\\n\\n            // Because e \\u2264 128 (as discussed during the first estimation phase), we know have reached a precision\\n            // \\u03b5_6 \\u2264 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\\n            // sqrt(a) or sqrt(a) + 1.\\n            return xn - SafeCast.toUint(xn > a / xn);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates sqrt(a), following the selected rounding direction.\\n     */\\n    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = sqrt(a);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 2 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     */\\n    function log2(uint256 x) internal pure returns (uint256 r) {\\n        // If value has upper 128 bits set, log2 result is at least 128\\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\\n        // If upper 64 bits of 128-bit half set, add 64 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\\n        // If upper 32 bits of 64-bit half set, add 32 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\\n        // If upper 16 bits of 32-bit half set, add 16 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\\n        // If upper 8 bits of 16-bit half set, add 8 to result\\n        r |= SafeCast.toUint((x >> r) > 0xff) << 3;\\n        // If upper 4 bits of 8-bit half set, add 4 to result\\n        r |= SafeCast.toUint((x >> r) > 0xf) << 2;\\n\\n        // Shifts value right by the current result and use it as an index into this lookup table:\\n        //\\n        // | x (4 bits) |  index  | table[index] = MSB position |\\n        // |------------|---------|-----------------------------|\\n        // |    0000    |    0    |        table[0] = 0         |\\n        // |    0001    |    1    |        table[1] = 0         |\\n        // |    0010    |    2    |        table[2] = 1         |\\n        // |    0011    |    3    |        table[3] = 1         |\\n        // |    0100    |    4    |        table[4] = 2         |\\n        // |    0101    |    5    |        table[5] = 2         |\\n        // |    0110    |    6    |        table[6] = 2         |\\n        // |    0111    |    7    |        table[7] = 2         |\\n        // |    1000    |    8    |        table[8] = 3         |\\n        // |    1001    |    9    |        table[9] = 3         |\\n        // |    1010    |   10    |        table[10] = 3        |\\n        // |    1011    |   11    |        table[11] = 3        |\\n        // |    1100    |   12    |        table[12] = 3        |\\n        // |    1101    |   13    |        table[13] = 3        |\\n        // |    1110    |   14    |        table[14] = 3        |\\n        // |    1111    |   15    |        table[15] = 3        |\\n        //\\n        // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes.\\n        assembly (\\\"memory-safe\\\") {\\n            r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000))\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log2(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 10 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     */\\n    function log10(uint256 value) internal pure returns (uint256) {\\n        uint256 result = 0;\\n        unchecked {\\n            if (value >= 10 ** 64) {\\n                value /= 10 ** 64;\\n                result += 64;\\n            }\\n            if (value >= 10 ** 32) {\\n                value /= 10 ** 32;\\n                result += 32;\\n            }\\n            if (value >= 10 ** 16) {\\n                value /= 10 ** 16;\\n                result += 16;\\n            }\\n            if (value >= 10 ** 8) {\\n                value /= 10 ** 8;\\n                result += 8;\\n            }\\n            if (value >= 10 ** 4) {\\n                value /= 10 ** 4;\\n                result += 4;\\n            }\\n            if (value >= 10 ** 2) {\\n                value /= 10 ** 2;\\n                result += 2;\\n            }\\n            if (value >= 10 ** 1) {\\n                result += 1;\\n            }\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log10(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 256 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     *\\n     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n     */\\n    function log256(uint256 x) internal pure returns (uint256 r) {\\n        // If value has upper 128 bits set, log2 result is at least 128\\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\\n        // If upper 64 bits of 128-bit half set, add 64 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\\n        // If upper 32 bits of 64-bit half set, add 32 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\\n        // If upper 16 bits of 32-bit half set, add 16 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\\n        // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8\\n        return (r >> 3) | SafeCast.toUint((x >> r) > 0xff);\\n    }\\n\\n    /**\\n     * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log256(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\\n     */\\n    function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\\n        return uint8(rounding) % 2 == 1;\\n    }\\n}\\n\",\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n */\\nlibrary SafeCast {\\n    /**\\n     * @dev Value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\\n\\n    /**\\n     * @dev An int value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedIntToUint(int256 value);\\n\\n    /**\\n     * @dev Value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\\n\\n    /**\\n     * @dev An uint value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedUintToInt(uint256 value);\\n\\n    /**\\n     * @dev Returns the downcasted uint248 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint248).\\n     *\\n     * Counterpart to Solidity's `uint248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toUint248(uint256 value) internal pure returns (uint248) {\\n        if (value > type(uint248).max) {\\n            revert SafeCastOverflowedUintDowncast(248, value);\\n        }\\n        return uint248(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint240 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint240).\\n     *\\n     * Counterpart to Solidity's `uint240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toUint240(uint256 value) internal pure returns (uint240) {\\n        if (value > type(uint240).max) {\\n            revert SafeCastOverflowedUintDowncast(240, value);\\n        }\\n        return uint240(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint232 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint232).\\n     *\\n     * Counterpart to Solidity's `uint232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toUint232(uint256 value) internal pure returns (uint232) {\\n        if (value > type(uint232).max) {\\n            revert SafeCastOverflowedUintDowncast(232, value);\\n        }\\n        return uint232(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint224 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint224).\\n     *\\n     * Counterpart to Solidity's `uint224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toUint224(uint256 value) internal pure returns (uint224) {\\n        if (value > type(uint224).max) {\\n            revert SafeCastOverflowedUintDowncast(224, value);\\n        }\\n        return uint224(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint216 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint216).\\n     *\\n     * Counterpart to Solidity's `uint216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toUint216(uint256 value) internal pure returns (uint216) {\\n        if (value > type(uint216).max) {\\n            revert SafeCastOverflowedUintDowncast(216, value);\\n        }\\n        return uint216(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint208 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint208).\\n     *\\n     * Counterpart to Solidity's `uint208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toUint208(uint256 value) internal pure returns (uint208) {\\n        if (value > type(uint208).max) {\\n            revert SafeCastOverflowedUintDowncast(208, value);\\n        }\\n        return uint208(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint200 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint200).\\n     *\\n     * Counterpart to Solidity's `uint200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toUint200(uint256 value) internal pure returns (uint200) {\\n        if (value > type(uint200).max) {\\n            revert SafeCastOverflowedUintDowncast(200, value);\\n        }\\n        return uint200(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint192 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint192).\\n     *\\n     * Counterpart to Solidity's `uint192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toUint192(uint256 value) internal pure returns (uint192) {\\n        if (value > type(uint192).max) {\\n            revert SafeCastOverflowedUintDowncast(192, value);\\n        }\\n        return uint192(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint184 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint184).\\n     *\\n     * Counterpart to Solidity's `uint184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toUint184(uint256 value) internal pure returns (uint184) {\\n        if (value > type(uint184).max) {\\n            revert SafeCastOverflowedUintDowncast(184, value);\\n        }\\n        return uint184(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint176 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint176).\\n     *\\n     * Counterpart to Solidity's `uint176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toUint176(uint256 value) internal pure returns (uint176) {\\n        if (value > type(uint176).max) {\\n            revert SafeCastOverflowedUintDowncast(176, value);\\n        }\\n        return uint176(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint168 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint168).\\n     *\\n     * Counterpart to Solidity's `uint168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toUint168(uint256 value) internal pure returns (uint168) {\\n        if (value > type(uint168).max) {\\n            revert SafeCastOverflowedUintDowncast(168, value);\\n        }\\n        return uint168(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint160 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint160).\\n     *\\n     * Counterpart to Solidity's `uint160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toUint160(uint256 value) internal pure returns (uint160) {\\n        if (value > type(uint160).max) {\\n            revert SafeCastOverflowedUintDowncast(160, value);\\n        }\\n        return uint160(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint152 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint152).\\n     *\\n     * Counterpart to Solidity's `uint152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toUint152(uint256 value) internal pure returns (uint152) {\\n        if (value > type(uint152).max) {\\n            revert SafeCastOverflowedUintDowncast(152, value);\\n        }\\n        return uint152(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint144 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint144).\\n     *\\n     * Counterpart to Solidity's `uint144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toUint144(uint256 value) internal pure returns (uint144) {\\n        if (value > type(uint144).max) {\\n            revert SafeCastOverflowedUintDowncast(144, value);\\n        }\\n        return uint144(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint136 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint136).\\n     *\\n     * Counterpart to Solidity's `uint136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toUint136(uint256 value) internal pure returns (uint136) {\\n        if (value > type(uint136).max) {\\n            revert SafeCastOverflowedUintDowncast(136, value);\\n        }\\n        return uint136(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint128 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint128).\\n     *\\n     * Counterpart to Solidity's `uint128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toUint128(uint256 value) internal pure returns (uint128) {\\n        if (value > type(uint128).max) {\\n            revert SafeCastOverflowedUintDowncast(128, value);\\n        }\\n        return uint128(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint120 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint120).\\n     *\\n     * Counterpart to Solidity's `uint120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toUint120(uint256 value) internal pure returns (uint120) {\\n        if (value > type(uint120).max) {\\n            revert SafeCastOverflowedUintDowncast(120, value);\\n        }\\n        return uint120(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint112 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint112).\\n     *\\n     * Counterpart to Solidity's `uint112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toUint112(uint256 value) internal pure returns (uint112) {\\n        if (value > type(uint112).max) {\\n            revert SafeCastOverflowedUintDowncast(112, value);\\n        }\\n        return uint112(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint104 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint104).\\n     *\\n     * Counterpart to Solidity's `uint104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toUint104(uint256 value) internal pure returns (uint104) {\\n        if (value > type(uint104).max) {\\n            revert SafeCastOverflowedUintDowncast(104, value);\\n        }\\n        return uint104(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint96 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint96).\\n     *\\n     * Counterpart to Solidity's `uint96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toUint96(uint256 value) internal pure returns (uint96) {\\n        if (value > type(uint96).max) {\\n            revert SafeCastOverflowedUintDowncast(96, value);\\n        }\\n        return uint96(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint88 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint88).\\n     *\\n     * Counterpart to Solidity's `uint88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toUint88(uint256 value) internal pure returns (uint88) {\\n        if (value > type(uint88).max) {\\n            revert SafeCastOverflowedUintDowncast(88, value);\\n        }\\n        return uint88(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint80 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint80).\\n     *\\n     * Counterpart to Solidity's `uint80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toUint80(uint256 value) internal pure returns (uint80) {\\n        if (value > type(uint80).max) {\\n            revert SafeCastOverflowedUintDowncast(80, value);\\n        }\\n        return uint80(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint72 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint72).\\n     *\\n     * Counterpart to Solidity's `uint72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toUint72(uint256 value) internal pure returns (uint72) {\\n        if (value > type(uint72).max) {\\n            revert SafeCastOverflowedUintDowncast(72, value);\\n        }\\n        return uint72(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint64 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint64).\\n     *\\n     * Counterpart to Solidity's `uint64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toUint64(uint256 value) internal pure returns (uint64) {\\n        if (value > type(uint64).max) {\\n            revert SafeCastOverflowedUintDowncast(64, value);\\n        }\\n        return uint64(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint56 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint56).\\n     *\\n     * Counterpart to Solidity's `uint56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toUint56(uint256 value) internal pure returns (uint56) {\\n        if (value > type(uint56).max) {\\n            revert SafeCastOverflowedUintDowncast(56, value);\\n        }\\n        return uint56(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint48 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint48).\\n     *\\n     * Counterpart to Solidity's `uint48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toUint48(uint256 value) internal pure returns (uint48) {\\n        if (value > type(uint48).max) {\\n            revert SafeCastOverflowedUintDowncast(48, value);\\n        }\\n        return uint48(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint40 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint40).\\n     *\\n     * Counterpart to Solidity's `uint40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toUint40(uint256 value) internal pure returns (uint40) {\\n        if (value > type(uint40).max) {\\n            revert SafeCastOverflowedUintDowncast(40, value);\\n        }\\n        return uint40(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint32 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint32).\\n     *\\n     * Counterpart to Solidity's `uint32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toUint32(uint256 value) internal pure returns (uint32) {\\n        if (value > type(uint32).max) {\\n            revert SafeCastOverflowedUintDowncast(32, value);\\n        }\\n        return uint32(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint24 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint24).\\n     *\\n     * Counterpart to Solidity's `uint24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toUint24(uint256 value) internal pure returns (uint24) {\\n        if (value > type(uint24).max) {\\n            revert SafeCastOverflowedUintDowncast(24, value);\\n        }\\n        return uint24(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint16 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint16).\\n     *\\n     * Counterpart to Solidity's `uint16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toUint16(uint256 value) internal pure returns (uint16) {\\n        if (value > type(uint16).max) {\\n            revert SafeCastOverflowedUintDowncast(16, value);\\n        }\\n        return uint16(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint8 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint8).\\n     *\\n     * Counterpart to Solidity's `uint8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toUint8(uint256 value) internal pure returns (uint8) {\\n        if (value > type(uint8).max) {\\n            revert SafeCastOverflowedUintDowncast(8, value);\\n        }\\n        return uint8(value);\\n    }\\n\\n    /**\\n     * @dev Converts a signed int256 into an unsigned uint256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be greater than or equal to 0.\\n     */\\n    function toUint256(int256 value) internal pure returns (uint256) {\\n        if (value < 0) {\\n            revert SafeCastOverflowedIntToUint(value);\\n        }\\n        return uint256(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int248 from int256, reverting on\\n     * overflow (when the input is less than smallest int248 or\\n     * greater than largest int248).\\n     *\\n     * Counterpart to Solidity's `int248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n        downcasted = int248(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(248, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int240 from int256, reverting on\\n     * overflow (when the input is less than smallest int240 or\\n     * greater than largest int240).\\n     *\\n     * Counterpart to Solidity's `int240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n        downcasted = int240(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(240, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int232 from int256, reverting on\\n     * overflow (when the input is less than smallest int232 or\\n     * greater than largest int232).\\n     *\\n     * Counterpart to Solidity's `int232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n        downcasted = int232(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(232, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int224 from int256, reverting on\\n     * overflow (when the input is less than smallest int224 or\\n     * greater than largest int224).\\n     *\\n     * Counterpart to Solidity's `int224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n        downcasted = int224(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(224, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int216 from int256, reverting on\\n     * overflow (when the input is less than smallest int216 or\\n     * greater than largest int216).\\n     *\\n     * Counterpart to Solidity's `int216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n        downcasted = int216(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(216, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int208 from int256, reverting on\\n     * overflow (when the input is less than smallest int208 or\\n     * greater than largest int208).\\n     *\\n     * Counterpart to Solidity's `int208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n        downcasted = int208(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(208, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int200 from int256, reverting on\\n     * overflow (when the input is less than smallest int200 or\\n     * greater than largest int200).\\n     *\\n     * Counterpart to Solidity's `int200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n        downcasted = int200(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(200, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int192 from int256, reverting on\\n     * overflow (when the input is less than smallest int192 or\\n     * greater than largest int192).\\n     *\\n     * Counterpart to Solidity's `int192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n        downcasted = int192(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(192, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int184 from int256, reverting on\\n     * overflow (when the input is less than smallest int184 or\\n     * greater than largest int184).\\n     *\\n     * Counterpart to Solidity's `int184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n        downcasted = int184(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(184, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int176 from int256, reverting on\\n     * overflow (when the input is less than smallest int176 or\\n     * greater than largest int176).\\n     *\\n     * Counterpart to Solidity's `int176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n        downcasted = int176(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(176, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int168 from int256, reverting on\\n     * overflow (when the input is less than smallest int168 or\\n     * greater than largest int168).\\n     *\\n     * Counterpart to Solidity's `int168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n        downcasted = int168(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(168, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int160 from int256, reverting on\\n     * overflow (when the input is less than smallest int160 or\\n     * greater than largest int160).\\n     *\\n     * Counterpart to Solidity's `int160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n        downcasted = int160(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(160, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int152 from int256, reverting on\\n     * overflow (when the input is less than smallest int152 or\\n     * greater than largest int152).\\n     *\\n     * Counterpart to Solidity's `int152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n        downcasted = int152(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(152, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int144 from int256, reverting on\\n     * overflow (when the input is less than smallest int144 or\\n     * greater than largest int144).\\n     *\\n     * Counterpart to Solidity's `int144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n        downcasted = int144(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(144, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int136 from int256, reverting on\\n     * overflow (when the input is less than smallest int136 or\\n     * greater than largest int136).\\n     *\\n     * Counterpart to Solidity's `int136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n        downcasted = int136(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(136, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int128 from int256, reverting on\\n     * overflow (when the input is less than smallest int128 or\\n     * greater than largest int128).\\n     *\\n     * Counterpart to Solidity's `int128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n        downcasted = int128(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(128, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int120 from int256, reverting on\\n     * overflow (when the input is less than smallest int120 or\\n     * greater than largest int120).\\n     *\\n     * Counterpart to Solidity's `int120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n        downcasted = int120(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(120, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int112 from int256, reverting on\\n     * overflow (when the input is less than smallest int112 or\\n     * greater than largest int112).\\n     *\\n     * Counterpart to Solidity's `int112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n        downcasted = int112(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(112, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int104 from int256, reverting on\\n     * overflow (when the input is less than smallest int104 or\\n     * greater than largest int104).\\n     *\\n     * Counterpart to Solidity's `int104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n        downcasted = int104(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(104, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int96 from int256, reverting on\\n     * overflow (when the input is less than smallest int96 or\\n     * greater than largest int96).\\n     *\\n     * Counterpart to Solidity's `int96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n        downcasted = int96(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(96, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int88 from int256, reverting on\\n     * overflow (when the input is less than smallest int88 or\\n     * greater than largest int88).\\n     *\\n     * Counterpart to Solidity's `int88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n        downcasted = int88(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(88, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int80 from int256, reverting on\\n     * overflow (when the input is less than smallest int80 or\\n     * greater than largest int80).\\n     *\\n     * Counterpart to Solidity's `int80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n        downcasted = int80(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(80, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int72 from int256, reverting on\\n     * overflow (when the input is less than smallest int72 or\\n     * greater than largest int72).\\n     *\\n     * Counterpart to Solidity's `int72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n        downcasted = int72(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(72, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int64 from int256, reverting on\\n     * overflow (when the input is less than smallest int64 or\\n     * greater than largest int64).\\n     *\\n     * Counterpart to Solidity's `int64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n        downcasted = int64(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(64, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int56 from int256, reverting on\\n     * overflow (when the input is less than smallest int56 or\\n     * greater than largest int56).\\n     *\\n     * Counterpart to Solidity's `int56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n        downcasted = int56(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(56, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int48 from int256, reverting on\\n     * overflow (when the input is less than smallest int48 or\\n     * greater than largest int48).\\n     *\\n     * Counterpart to Solidity's `int48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n        downcasted = int48(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(48, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int40 from int256, reverting on\\n     * overflow (when the input is less than smallest int40 or\\n     * greater than largest int40).\\n     *\\n     * Counterpart to Solidity's `int40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n        downcasted = int40(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(40, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int32 from int256, reverting on\\n     * overflow (when the input is less than smallest int32 or\\n     * greater than largest int32).\\n     *\\n     * Counterpart to Solidity's `int32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n        downcasted = int32(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(32, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int24 from int256, reverting on\\n     * overflow (when the input is less than smallest int24 or\\n     * greater than largest int24).\\n     *\\n     * Counterpart to Solidity's `int24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n        downcasted = int24(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(24, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int16 from int256, reverting on\\n     * overflow (when the input is less than smallest int16 or\\n     * greater than largest int16).\\n     *\\n     * Counterpart to Solidity's `int16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n        downcasted = int16(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(16, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int8 from int256, reverting on\\n     * overflow (when the input is less than smallest int8 or\\n     * greater than largest int8).\\n     *\\n     * Counterpart to Solidity's `int8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n        downcasted = int8(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(8, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts an unsigned uint256 into a signed int256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be less than or equal to maxInt256.\\n     */\\n    function toInt256(uint256 value) internal pure returns (int256) {\\n        // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n        if (value > uint256(type(int256).max)) {\\n            revert SafeCastOverflowedUintToInt(value);\\n        }\\n        return int256(value);\\n    }\\n\\n    /**\\n     * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\\n     */\\n    function toUint(bool b) internal pure returns (uint256 u) {\\n        assembly (\\\"memory-safe\\\") {\\n            u := iszero(iszero(b))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {SafeCast} from \\\"./SafeCast.sol\\\";\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n    /**\\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\\n     *\\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\\n     * one branch when needed, making this function more expensive.\\n     */\\n    function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {\\n        unchecked {\\n            // branchless ternary works because:\\n            // b ^ (a ^ b) == a\\n            // b ^ 0 == b\\n            return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the largest of two signed numbers.\\n     */\\n    function max(int256 a, int256 b) internal pure returns (int256) {\\n        return ternary(a > b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two signed numbers.\\n     */\\n    function min(int256 a, int256 b) internal pure returns (int256) {\\n        return ternary(a < b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the average of two signed numbers without overflow.\\n     * The result is rounded towards zero.\\n     */\\n    function average(int256 a, int256 b) internal pure returns (int256) {\\n        // Formula from the book \\\"Hacker's Delight\\\"\\n        int256 x = (a & b) + ((a ^ b) >> 1);\\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\\n    }\\n\\n    /**\\n     * @dev Returns the absolute unsigned value of a signed value.\\n     */\\n    function abs(int256 n) internal pure returns (uint256) {\\n        unchecked {\\n            // Formula from the \\\"Bit Twiddling Hacks\\\" by Sean Eron Anderson.\\n            // Since `n` is a signed integer, the generated bytecode will use the SAR opcode to perform the right shift,\\n            // taking advantage of the most significant (or \\\"sign\\\" bit) in two's complement representation.\\n            // This opcode adds new most significant bits set to the value of the previous most significant bit. As a result,\\n            // the mask will either be `bytes32(0)` (if n is positive) or `~bytes32(0)` (if n is negative).\\n            int256 mask = n >> 255;\\n\\n            // A `bytes32(0)` mask leaves the input unchanged, while a `~bytes32(0)` mask complements it.\\n            return uint256((n + mask) ^ mask);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\"},\"contracts/IPNFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.28;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/ERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\n/**\\n * @title IPNFT\\n * @dev This contract is used to create and manage intellectual property NFTs\\n */\\ncontract IPNFT is ERC721URIStorage, Ownable {\\n    // Token ID counter\\n    uint256 private _nextTokenId;\\n\\n    // Intellectual property types\\n    enum IPType {\\n        Patent,\\n        Trademark,\\n        Copyright,\\n        Other\\n    }\\n\\n    // Intellectual property NFT information\\n    struct IPInfo {\\n        string title; // IP title\\n        string description; // IP description\\n        IPType ipType; // IP type\\n        uint256 createdAt; // Creation timestamp\\n    }\\n\\n    // Mapping from token ID to IP info\\n    mapping(uint256 => IPInfo) private _ipInfo;\\n\\n    // Events\\n    event IPNFTMinted(\\n        uint256 indexed tokenId,\\n        address indexed owner,\\n        IPType ipType,\\n        string title\\n    );\\n\\n    constructor(\\n        address initialOwner\\n    ) ERC721(\\\"Intellectual Property NFT\\\", \\\"IPNFT\\\") Ownable(initialOwner) {}\\n\\n    /**\\n     * @dev Mints a new intellectual property NFT\\n     * @param to The receiver address of the token\\n     * @param uri The token metadata URI\\n     * @param title The IP title\\n     * @param description The IP description\\n     * @param ipType The IP type\\n     * @return The newly minted token ID\\n     */\\n    function mint(\\n        address to,\\n        string memory uri,\\n        string memory title,\\n        string memory description,\\n        IPType ipType\\n    ) public onlyOwner returns (uint256) {\\n        uint256 tokenId = _nextTokenId;\\n        _nextTokenId++;\\n\\n        _safeMint(to, tokenId);\\n        _setTokenURI(tokenId, uri);\\n\\n        // Set IP information\\n        _ipInfo[tokenId] = IPInfo({\\n            title: title,\\n            description: description,\\n            ipType: ipType,\\n            createdAt: block.timestamp\\n        });\\n\\n        emit IPNFTMinted(tokenId, to, ipType, title);\\n\\n        return tokenId;\\n    }\\n\\n    /**\\n     * @dev Gets the intellectual property information\\n     * @param tokenId Token ID\\n     */\\n    function getIPInfo(uint256 tokenId) public view returns (IPInfo memory) {\\n        require(_exists(tokenId), \\\"IPNFT: token does not exist\\\");\\n        return _ipInfo[tokenId];\\n    }\\n\\n    /**\\n     * @dev Gets the total number of minted NFTs\\n     */\\n    function totalSupply() public view returns (uint256) {\\n        return _nextTokenId;\\n    }\\n\\n    /**\\n     * @dev Gets all tokens owned by a specific address\\n     * @param owner The owner address\\n     */\\n    function tokensOfOwner(\\n        address owner\\n    ) public view returns (uint256[] memory) {\\n        uint256 tokenCount = balanceOf(owner);\\n        uint256[] memory tokenIds = new uint256[](tokenCount);\\n\\n        for (uint256 i = 0; i < tokenCount; i++) {\\n            tokenIds[i] = tokenOfOwnerByIndex(owner, i);\\n        }\\n\\n        return tokenIds;\\n    }\\n\\n    /**\\n     * @dev Returns the token ID at a given index of an owner's token list\\n     * @param owner The owner address\\n     * @param index The index in the owner's token list\\n     */\\n    function tokenOfOwnerByIndex(\\n        address owner,\\n        uint256 index\\n    ) public view returns (uint256) {\\n        require(index < balanceOf(owner), \\\"IPNFT: index out of bounds\\\");\\n\\n        uint256 count = 0;\\n        for (uint256 i = 0; i < _nextTokenId; i++) {\\n            if (_exists(i) && ownerOf(i) == owner) {\\n                if (count == index) {\\n                    return i;\\n                }\\n                count++;\\n            }\\n        }\\n\\n        revert(\\\"IPNFT: index out of bounds\\\");\\n    }\\n\\n    /**\\n     * @dev Checks if a token exists\\n     */\\n    function _exists(uint256 tokenId) internal view returns (bool) {\\n        return _ownerOf(tokenId) != address(0);\\n    }\\n\\n    // Override _update to add custom logic when transferring NFTs\\n    function _update(\\n        address to,\\n        uint256 tokenId,\\n        address auth\\n    ) internal override returns (address) {\\n        address from = super._update(to, tokenId, auth);\\n\\n        // Add any custom transfer logic here if needed\\n\\n        return from;\\n    }\\n}\\n\",\"keccak256\":\"0x6b28c007b3086ed2cfa5e56cf97fde06e0dcbdc3f53ec67d29b5ab4047111b44\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":5365,"contract":"contracts/IPNFT.sol:IPNFT","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":5367,"contract":"contracts/IPNFT.sol:IPNFT","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":5371,"contract":"contracts/IPNFT.sol:IPNFT","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":5375,"contract":"contracts/IPNFT.sol:IPNFT","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":5379,"contract":"contracts/IPNFT.sol:IPNFT","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":5385,"contract":"contracts/IPNFT.sol:IPNFT","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":6452,"contract":"contracts/IPNFT.sol:IPNFT","label":"_tokenURIs","offset":0,"slot":"6","type":"t_mapping(t_uint256,t_string_storage)"},{"astId":3841,"contract":"contracts/IPNFT.sol:IPNFT","label":"_owner","offset":0,"slot":"7","type":"t_address"},{"astId":12742,"contract":"contracts/IPNFT.sol:IPNFT","label":"_nextTokenId","offset":0,"slot":"8","type":"t_uint256"},{"astId":12762,"contract":"contracts/IPNFT.sol:IPNFT","label":"_ipInfo","offset":0,"slot":"9","type":"t_mapping(t_uint256,t_struct(IPInfo)12757_storage)"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_enum(IPType)12747":{"encoding":"inplace","label":"enum IPNFT.IPType","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_string_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => string)","numberOfBytes":"32","value":"t_string_storage"},"t_mapping(t_uint256,t_struct(IPInfo)12757_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct IPNFT.IPInfo)","numberOfBytes":"32","value":"t_struct(IPInfo)12757_storage"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_struct(IPInfo)12757_storage":{"encoding":"inplace","label":"struct IPNFT.IPInfo","members":[{"astId":12749,"contract":"contracts/IPNFT.sol:IPNFT","label":"title","offset":0,"slot":"0","type":"t_string_storage"},{"astId":12751,"contract":"contracts/IPNFT.sol:IPNFT","label":"description","offset":0,"slot":"1","type":"t_string_storage"},{"astId":12754,"contract":"contracts/IPNFT.sol:IPNFT","label":"ipType","offset":0,"slot":"2","type":"t_enum(IPType)12747"},{"astId":12756,"contract":"contracts/IPNFT.sol:IPNFT","label":"createdAt","offset":0,"slot":"3","type":"t_uint256"}],"numberOfBytes":"128"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/Lock.sol":{"Lock":{"abi":[{"inputs":[{"internalType":"uint256","name":"_unlockTime","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"when","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13066":{"entryPoint":null,"id":13066,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":151,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:604:66","nodeType":"YulBlock","src":"0:604:66","statements":[{"nativeSrc":"6:3:66","nodeType":"YulBlock","src":"6:3:66","statements":[]},{"body":{"nativeSrc":"95:103:66","nodeType":"YulBlock","src":"95:103:66","statements":[{"body":{"nativeSrc":"141:16:66","nodeType":"YulBlock","src":"141:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"150:1:66","nodeType":"YulLiteral","src":"150:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"153:1:66","nodeType":"YulLiteral","src":"153:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"143:6:66","nodeType":"YulIdentifier","src":"143:6:66"},"nativeSrc":"143:12:66","nodeType":"YulFunctionCall","src":"143:12:66"},"nativeSrc":"143:12:66","nodeType":"YulExpressionStatement","src":"143:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"116:7:66","nodeType":"YulIdentifier","src":"116:7:66"},{"name":"headStart","nativeSrc":"125:9:66","nodeType":"YulIdentifier","src":"125:9:66"}],"functionName":{"name":"sub","nativeSrc":"112:3:66","nodeType":"YulIdentifier","src":"112:3:66"},"nativeSrc":"112:23:66","nodeType":"YulFunctionCall","src":"112:23:66"},{"kind":"number","nativeSrc":"137:2:66","nodeType":"YulLiteral","src":"137:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"108:3:66","nodeType":"YulIdentifier","src":"108:3:66"},"nativeSrc":"108:32:66","nodeType":"YulFunctionCall","src":"108:32:66"},"nativeSrc":"105:52:66","nodeType":"YulIf","src":"105:52:66"},{"nativeSrc":"166:26:66","nodeType":"YulAssignment","src":"166:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"182:9:66","nodeType":"YulIdentifier","src":"182:9:66"}],"functionName":{"name":"mload","nativeSrc":"176:5:66","nodeType":"YulIdentifier","src":"176:5:66"},"nativeSrc":"176:16:66","nodeType":"YulFunctionCall","src":"176:16:66"},"variableNames":[{"name":"value0","nativeSrc":"166:6:66","nodeType":"YulIdentifier","src":"166:6:66"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"14:184:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"61:9:66","nodeType":"YulTypedName","src":"61:9:66","type":""},{"name":"dataEnd","nativeSrc":"72:7:66","nodeType":"YulTypedName","src":"72:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"84:6:66","nodeType":"YulTypedName","src":"84:6:66","type":""}],"src":"14:184:66"},{"body":{"nativeSrc":"377:225:66","nodeType":"YulBlock","src":"377:225:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"394:9:66","nodeType":"YulIdentifier","src":"394:9:66"},{"kind":"number","nativeSrc":"405:2:66","nodeType":"YulLiteral","src":"405:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"387:6:66","nodeType":"YulIdentifier","src":"387:6:66"},"nativeSrc":"387:21:66","nodeType":"YulFunctionCall","src":"387:21:66"},"nativeSrc":"387:21:66","nodeType":"YulExpressionStatement","src":"387:21:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"428:9:66","nodeType":"YulIdentifier","src":"428:9:66"},{"kind":"number","nativeSrc":"439:2:66","nodeType":"YulLiteral","src":"439:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"424:3:66","nodeType":"YulIdentifier","src":"424:3:66"},"nativeSrc":"424:18:66","nodeType":"YulFunctionCall","src":"424:18:66"},{"kind":"number","nativeSrc":"444:2:66","nodeType":"YulLiteral","src":"444:2:66","type":"","value":"35"}],"functionName":{"name":"mstore","nativeSrc":"417:6:66","nodeType":"YulIdentifier","src":"417:6:66"},"nativeSrc":"417:30:66","nodeType":"YulFunctionCall","src":"417:30:66"},"nativeSrc":"417:30:66","nodeType":"YulExpressionStatement","src":"417:30:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"467:9:66","nodeType":"YulIdentifier","src":"467:9:66"},{"kind":"number","nativeSrc":"478:2:66","nodeType":"YulLiteral","src":"478:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"463:3:66","nodeType":"YulIdentifier","src":"463:3:66"},"nativeSrc":"463:18:66","nodeType":"YulFunctionCall","src":"463:18:66"},{"hexValue":"556e6c6f636b2074696d652073686f756c6420626520696e2074686520667574","kind":"string","nativeSrc":"483:34:66","nodeType":"YulLiteral","src":"483:34:66","type":"","value":"Unlock time should be in the fut"}],"functionName":{"name":"mstore","nativeSrc":"456:6:66","nodeType":"YulIdentifier","src":"456:6:66"},"nativeSrc":"456:62:66","nodeType":"YulFunctionCall","src":"456:62:66"},"nativeSrc":"456:62:66","nodeType":"YulExpressionStatement","src":"456:62:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"538:9:66","nodeType":"YulIdentifier","src":"538:9:66"},{"kind":"number","nativeSrc":"549:2:66","nodeType":"YulLiteral","src":"549:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"534:3:66","nodeType":"YulIdentifier","src":"534:3:66"},"nativeSrc":"534:18:66","nodeType":"YulFunctionCall","src":"534:18:66"},{"hexValue":"757265","kind":"string","nativeSrc":"554:5:66","nodeType":"YulLiteral","src":"554:5:66","type":"","value":"ure"}],"functionName":{"name":"mstore","nativeSrc":"527:6:66","nodeType":"YulIdentifier","src":"527:6:66"},"nativeSrc":"527:33:66","nodeType":"YulFunctionCall","src":"527:33:66"},"nativeSrc":"527:33:66","nodeType":"YulExpressionStatement","src":"527:33:66"},{"nativeSrc":"569:27:66","nodeType":"YulAssignment","src":"569:27:66","value":{"arguments":[{"name":"headStart","nativeSrc":"581:9:66","nodeType":"YulIdentifier","src":"581:9:66"},{"kind":"number","nativeSrc":"592:3:66","nodeType":"YulLiteral","src":"592:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"577:3:66","nodeType":"YulIdentifier","src":"577:3:66"},"nativeSrc":"577:19:66","nodeType":"YulFunctionCall","src":"577:19:66"},"variableNames":[{"name":"tail","nativeSrc":"569:4:66","nodeType":"YulIdentifier","src":"569:4:66"}]}]},"name":"abi_encode_tuple_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"203:399:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"354:9:66","nodeType":"YulTypedName","src":"354:9:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"368:4:66","nodeType":"YulTypedName","src":"368:4:66","type":""}],"src":"203:399:66"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_f6fa9918d4578fba07be58c41841a4c6937c19725f7f4601884cd186799a8413__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"Unlock time should be in the fut\")\n        mstore(add(headStart, 96), \"ure\")\n        tail := add(headStart, 128)\n    }\n}","id":66,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040526040516102a03803806102a08339810160408190526020916097565b804210607e5760405162461bcd60e51b815260206004820152602360248201527f556e6c6f636b2074696d652073686f756c6420626520696e207468652066757460448201526275726560e81b606482015260840160405180910390fd5b600055600180546001600160a01b0319163317905560af565b60006020828403121560a857600080fd5b5051919050565b6101e2806100be6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063251c1aa3146100465780633ccfd60b146100625780638da5cb5b1461006c575b600080fd5b61004f60005481565b6040519081526020015b60405180910390f35b61006a610097565b005b60015461007f906001600160a01b031681565b6040516001600160a01b039091168152602001610059565b6000544210156100e75760405162461bcd60e51b8152602060048201526016602482015275165bdd4818d85b89dd081dda5d1a191c985dc81e595d60521b60448201526064015b60405180910390fd5b6001546001600160a01b031633146101385760405162461bcd60e51b81526020600482015260146024820152732cb7ba9030b932b713ba103a34329037bbb732b960611b60448201526064016100de565b604080514781524260208201527fbf2ed60bd5b5965d685680c01195c9514e4382e28e3a5a2d2d5244bf59411b93910160405180910390a16001546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156101a9573d6000803e3d6000fd5b5056fea2646970667358221220a5f5db0a771abbe055624274ba9761ec66659cf167251b8c4785eeb840f116d764736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x2A0 CODESIZE SUB DUP1 PUSH2 0x2A0 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH1 0x20 SWAP2 PUSH1 0x97 JUMP JUMPDEST DUP1 TIMESTAMP LT PUSH1 0x7E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E6C6F636B2074696D652073686F756C6420626520696E2074686520667574 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x757265 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH1 0xAF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1E2 DUP1 PUSH2 0xBE PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x251C1AA3 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x62 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4F PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6A PUSH2 0x97 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x7F SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x59 JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0xE7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x165BDD4818D85B89DD081DDA5D1A191C985DC81E595D PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x138 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x2CB7BA9030B932B713BA103A34329037BBB732B9 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xDE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SELFBALANCE DUP2 MSTORE TIMESTAMP PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xBF2ED60BD5B5965D685680C01195C9514E4382E28E3A5A2D2D5244BF59411B93 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 CREATE2 0xDB EXP PUSH24 0x1ABBE055624274BA9761EC66659CF167251B8C4785EEB840 CALL AND 0xD7 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"141:866:59:-:0;;;271:238;;;;;;;;;;;;;;;;;;:::i;:::-;358:11;340:15;:29;319:111;;;;-1:-1:-1;;;319:111:59;;405:2:66;319:111:59;;;387:21:66;444:2;424:18;;;417:30;483:34;463:18;;;456:62;-1:-1:-1;;;534:18:66;;;527:33;577:19;;319:111:59;;;;;;;;441:10;:24;475:5;:27;;-1:-1:-1;;;;;;475:27:59;491:10;475:27;;;141:866;;14:184:66;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;-1:-1:-1;176:16:66;;14:184;-1:-1:-1;14:184:66:o;203:399::-;141:866:59;;;;;;"},"deployedBytecode":{"functionDebugData":{"@owner_13034":{"entryPoint":null,"id":13034,"parameterSlots":0,"returnSlots":0},"@unlockTime_13032":{"entryPoint":null,"id":13032,"parameterSlots":0,"returnSlots":0},"@withdraw_13106":{"entryPoint":151,"id":13106,"parameterSlots":0,"returnSlots":0},"abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:1370:66","nodeType":"YulBlock","src":"0:1370:66","statements":[{"nativeSrc":"6:3:66","nodeType":"YulBlock","src":"6:3:66","statements":[]},{"body":{"nativeSrc":"115:76:66","nodeType":"YulBlock","src":"115:76:66","statements":[{"nativeSrc":"125:26:66","nodeType":"YulAssignment","src":"125:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"137:9:66","nodeType":"YulIdentifier","src":"137:9:66"},{"kind":"number","nativeSrc":"148:2:66","nodeType":"YulLiteral","src":"148:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"133:3:66","nodeType":"YulIdentifier","src":"133:3:66"},"nativeSrc":"133:18:66","nodeType":"YulFunctionCall","src":"133:18:66"},"variableNames":[{"name":"tail","nativeSrc":"125:4:66","nodeType":"YulIdentifier","src":"125:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"167:9:66","nodeType":"YulIdentifier","src":"167:9:66"},{"name":"value0","nativeSrc":"178:6:66","nodeType":"YulIdentifier","src":"178:6:66"}],"functionName":{"name":"mstore","nativeSrc":"160:6:66","nodeType":"YulIdentifier","src":"160:6:66"},"nativeSrc":"160:25:66","nodeType":"YulFunctionCall","src":"160:25:66"},"nativeSrc":"160:25:66","nodeType":"YulExpressionStatement","src":"160:25:66"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"14:177:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"84:9:66","nodeType":"YulTypedName","src":"84:9:66","type":""},{"name":"value0","nativeSrc":"95:6:66","nodeType":"YulTypedName","src":"95:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"106:4:66","nodeType":"YulTypedName","src":"106:4:66","type":""}],"src":"14:177:66"},{"body":{"nativeSrc":"313:102:66","nodeType":"YulBlock","src":"313:102:66","statements":[{"nativeSrc":"323:26:66","nodeType":"YulAssignment","src":"323:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"335:9:66","nodeType":"YulIdentifier","src":"335:9:66"},{"kind":"number","nativeSrc":"346:2:66","nodeType":"YulLiteral","src":"346:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"331:3:66","nodeType":"YulIdentifier","src":"331:3:66"},"nativeSrc":"331:18:66","nodeType":"YulFunctionCall","src":"331:18:66"},"variableNames":[{"name":"tail","nativeSrc":"323:4:66","nodeType":"YulIdentifier","src":"323:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"365:9:66","nodeType":"YulIdentifier","src":"365:9:66"},{"arguments":[{"name":"value0","nativeSrc":"380:6:66","nodeType":"YulIdentifier","src":"380:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"396:3:66","nodeType":"YulLiteral","src":"396:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"401:1:66","nodeType":"YulLiteral","src":"401:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"392:3:66","nodeType":"YulIdentifier","src":"392:3:66"},"nativeSrc":"392:11:66","nodeType":"YulFunctionCall","src":"392:11:66"},{"kind":"number","nativeSrc":"405:1:66","nodeType":"YulLiteral","src":"405:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"388:3:66","nodeType":"YulIdentifier","src":"388:3:66"},"nativeSrc":"388:19:66","nodeType":"YulFunctionCall","src":"388:19:66"}],"functionName":{"name":"and","nativeSrc":"376:3:66","nodeType":"YulIdentifier","src":"376:3:66"},"nativeSrc":"376:32:66","nodeType":"YulFunctionCall","src":"376:32:66"}],"functionName":{"name":"mstore","nativeSrc":"358:6:66","nodeType":"YulIdentifier","src":"358:6:66"},"nativeSrc":"358:51:66","nodeType":"YulFunctionCall","src":"358:51:66"},"nativeSrc":"358:51:66","nodeType":"YulExpressionStatement","src":"358:51:66"}]},"name":"abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed","nativeSrc":"196:219:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"282:9:66","nodeType":"YulTypedName","src":"282:9:66","type":""},{"name":"value0","nativeSrc":"293:6:66","nodeType":"YulTypedName","src":"293:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"304:4:66","nodeType":"YulTypedName","src":"304:4:66","type":""}],"src":"196:219:66"},{"body":{"nativeSrc":"594:172:66","nodeType":"YulBlock","src":"594:172:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"611:9:66","nodeType":"YulIdentifier","src":"611:9:66"},{"kind":"number","nativeSrc":"622:2:66","nodeType":"YulLiteral","src":"622:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"604:6:66","nodeType":"YulIdentifier","src":"604:6:66"},"nativeSrc":"604:21:66","nodeType":"YulFunctionCall","src":"604:21:66"},"nativeSrc":"604:21:66","nodeType":"YulExpressionStatement","src":"604:21:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"645:9:66","nodeType":"YulIdentifier","src":"645:9:66"},{"kind":"number","nativeSrc":"656:2:66","nodeType":"YulLiteral","src":"656:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"641:3:66","nodeType":"YulIdentifier","src":"641:3:66"},"nativeSrc":"641:18:66","nodeType":"YulFunctionCall","src":"641:18:66"},{"kind":"number","nativeSrc":"661:2:66","nodeType":"YulLiteral","src":"661:2:66","type":"","value":"22"}],"functionName":{"name":"mstore","nativeSrc":"634:6:66","nodeType":"YulIdentifier","src":"634:6:66"},"nativeSrc":"634:30:66","nodeType":"YulFunctionCall","src":"634:30:66"},"nativeSrc":"634:30:66","nodeType":"YulExpressionStatement","src":"634:30:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"684:9:66","nodeType":"YulIdentifier","src":"684:9:66"},{"kind":"number","nativeSrc":"695:2:66","nodeType":"YulLiteral","src":"695:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"680:3:66","nodeType":"YulIdentifier","src":"680:3:66"},"nativeSrc":"680:18:66","nodeType":"YulFunctionCall","src":"680:18:66"},{"hexValue":"596f752063616e277420776974686472617720796574","kind":"string","nativeSrc":"700:24:66","nodeType":"YulLiteral","src":"700:24:66","type":"","value":"You can't withdraw yet"}],"functionName":{"name":"mstore","nativeSrc":"673:6:66","nodeType":"YulIdentifier","src":"673:6:66"},"nativeSrc":"673:52:66","nodeType":"YulFunctionCall","src":"673:52:66"},"nativeSrc":"673:52:66","nodeType":"YulExpressionStatement","src":"673:52:66"},{"nativeSrc":"734:26:66","nodeType":"YulAssignment","src":"734:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"746:9:66","nodeType":"YulIdentifier","src":"746:9:66"},{"kind":"number","nativeSrc":"757:2:66","nodeType":"YulLiteral","src":"757:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"742:3:66","nodeType":"YulIdentifier","src":"742:3:66"},"nativeSrc":"742:18:66","nodeType":"YulFunctionCall","src":"742:18:66"},"variableNames":[{"name":"tail","nativeSrc":"734:4:66","nodeType":"YulIdentifier","src":"734:4:66"}]}]},"name":"abi_encode_tuple_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"420:346:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"571:9:66","nodeType":"YulTypedName","src":"571:9:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"585:4:66","nodeType":"YulTypedName","src":"585:4:66","type":""}],"src":"420:346:66"},{"body":{"nativeSrc":"945:170:66","nodeType":"YulBlock","src":"945:170:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"962:9:66","nodeType":"YulIdentifier","src":"962:9:66"},{"kind":"number","nativeSrc":"973:2:66","nodeType":"YulLiteral","src":"973:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"955:6:66","nodeType":"YulIdentifier","src":"955:6:66"},"nativeSrc":"955:21:66","nodeType":"YulFunctionCall","src":"955:21:66"},"nativeSrc":"955:21:66","nodeType":"YulExpressionStatement","src":"955:21:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"996:9:66","nodeType":"YulIdentifier","src":"996:9:66"},{"kind":"number","nativeSrc":"1007:2:66","nodeType":"YulLiteral","src":"1007:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"992:3:66","nodeType":"YulIdentifier","src":"992:3:66"},"nativeSrc":"992:18:66","nodeType":"YulFunctionCall","src":"992:18:66"},{"kind":"number","nativeSrc":"1012:2:66","nodeType":"YulLiteral","src":"1012:2:66","type":"","value":"20"}],"functionName":{"name":"mstore","nativeSrc":"985:6:66","nodeType":"YulIdentifier","src":"985:6:66"},"nativeSrc":"985:30:66","nodeType":"YulFunctionCall","src":"985:30:66"},"nativeSrc":"985:30:66","nodeType":"YulExpressionStatement","src":"985:30:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1035:9:66","nodeType":"YulIdentifier","src":"1035:9:66"},{"kind":"number","nativeSrc":"1046:2:66","nodeType":"YulLiteral","src":"1046:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1031:3:66","nodeType":"YulIdentifier","src":"1031:3:66"},"nativeSrc":"1031:18:66","nodeType":"YulFunctionCall","src":"1031:18:66"},{"hexValue":"596f75206172656e277420746865206f776e6572","kind":"string","nativeSrc":"1051:22:66","nodeType":"YulLiteral","src":"1051:22:66","type":"","value":"You aren't the owner"}],"functionName":{"name":"mstore","nativeSrc":"1024:6:66","nodeType":"YulIdentifier","src":"1024:6:66"},"nativeSrc":"1024:50:66","nodeType":"YulFunctionCall","src":"1024:50:66"},"nativeSrc":"1024:50:66","nodeType":"YulExpressionStatement","src":"1024:50:66"},{"nativeSrc":"1083:26:66","nodeType":"YulAssignment","src":"1083:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1095:9:66","nodeType":"YulIdentifier","src":"1095:9:66"},{"kind":"number","nativeSrc":"1106:2:66","nodeType":"YulLiteral","src":"1106:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1091:3:66","nodeType":"YulIdentifier","src":"1091:3:66"},"nativeSrc":"1091:18:66","nodeType":"YulFunctionCall","src":"1091:18:66"},"variableNames":[{"name":"tail","nativeSrc":"1083:4:66","nodeType":"YulIdentifier","src":"1083:4:66"}]}]},"name":"abi_encode_tuple_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"771:344:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"922:9:66","nodeType":"YulTypedName","src":"922:9:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"936:4:66","nodeType":"YulTypedName","src":"936:4:66","type":""}],"src":"771:344:66"},{"body":{"nativeSrc":"1249:119:66","nodeType":"YulBlock","src":"1249:119:66","statements":[{"nativeSrc":"1259:26:66","nodeType":"YulAssignment","src":"1259:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1271:9:66","nodeType":"YulIdentifier","src":"1271:9:66"},{"kind":"number","nativeSrc":"1282:2:66","nodeType":"YulLiteral","src":"1282:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1267:3:66","nodeType":"YulIdentifier","src":"1267:3:66"},"nativeSrc":"1267:18:66","nodeType":"YulFunctionCall","src":"1267:18:66"},"variableNames":[{"name":"tail","nativeSrc":"1259:4:66","nodeType":"YulIdentifier","src":"1259:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1301:9:66","nodeType":"YulIdentifier","src":"1301:9:66"},{"name":"value0","nativeSrc":"1312:6:66","nodeType":"YulIdentifier","src":"1312:6:66"}],"functionName":{"name":"mstore","nativeSrc":"1294:6:66","nodeType":"YulIdentifier","src":"1294:6:66"},"nativeSrc":"1294:25:66","nodeType":"YulFunctionCall","src":"1294:25:66"},"nativeSrc":"1294:25:66","nodeType":"YulExpressionStatement","src":"1294:25:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1339:9:66","nodeType":"YulIdentifier","src":"1339:9:66"},{"kind":"number","nativeSrc":"1350:2:66","nodeType":"YulLiteral","src":"1350:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1335:3:66","nodeType":"YulIdentifier","src":"1335:3:66"},"nativeSrc":"1335:18:66","nodeType":"YulFunctionCall","src":"1335:18:66"},{"name":"value1","nativeSrc":"1355:6:66","nodeType":"YulIdentifier","src":"1355:6:66"}],"functionName":{"name":"mstore","nativeSrc":"1328:6:66","nodeType":"YulIdentifier","src":"1328:6:66"},"nativeSrc":"1328:34:66","nodeType":"YulFunctionCall","src":"1328:34:66"},"nativeSrc":"1328:34:66","nodeType":"YulExpressionStatement","src":"1328:34:66"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"1120:248:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1210:9:66","nodeType":"YulTypedName","src":"1210:9:66","type":""},{"name":"value1","nativeSrc":"1221:6:66","nodeType":"YulTypedName","src":"1221:6:66","type":""},{"name":"value0","nativeSrc":"1229:6:66","nodeType":"YulTypedName","src":"1229:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1240:4:66","nodeType":"YulTypedName","src":"1240:4:66","type":""}],"src":"1120:248:66"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_address_payable__to_t_address_payable__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_09be2a1d7c98765b8c1bd9ab3700b54ab19d501eebe572af39b71382f17d12e8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"You can't withdraw yet\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_345d93c1110e55177ee5f687f392a2e775da2aa3d491c8308e925f0505e3530a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"You aren't the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n}","id":66,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c8063251c1aa3146100465780633ccfd60b146100625780638da5cb5b1461006c575b600080fd5b61004f60005481565b6040519081526020015b60405180910390f35b61006a610097565b005b60015461007f906001600160a01b031681565b6040516001600160a01b039091168152602001610059565b6000544210156100e75760405162461bcd60e51b8152602060048201526016602482015275165bdd4818d85b89dd081dda5d1a191c985dc81e595d60521b60448201526064015b60405180910390fd5b6001546001600160a01b031633146101385760405162461bcd60e51b81526020600482015260146024820152732cb7ba9030b932b713ba103a34329037bbb732b960611b60448201526064016100de565b604080514781524260208201527fbf2ed60bd5b5965d685680c01195c9514e4382e28e3a5a2d2d5244bf59411b93910160405180910390a16001546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156101a9573d6000803e3d6000fd5b5056fea2646970667358221220a5f5db0a771abbe055624274ba9761ec66659cf167251b8c4785eeb840f116d764736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x251C1AA3 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x62 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x6C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4F PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6A PUSH2 0x97 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x7F SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x59 JUMP JUMPDEST PUSH1 0x0 SLOAD TIMESTAMP LT ISZERO PUSH2 0xE7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x165BDD4818D85B89DD081DDA5D1A191C985DC81E595D PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x138 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x2CB7BA9030B932B713BA103A34329037BBB732B9 PUSH1 0x61 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xDE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SELFBALANCE DUP2 MSTORE TIMESTAMP PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xBF2ED60BD5B5965D685680C01195C9514E4382E28E3A5A2D2D5244BF59411B93 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP2 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 CREATE2 0xDB EXP PUSH24 0x1ABBE055624274BA9761EC66659CF167251B8C4785EEB840 CALL AND 0xD7 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"141:866:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;161:22;;;;;;;;;160:25:66;;;148:2;133:18;161:22:59;;;;;;;;515:490;;;:::i;:::-;;189:28;;;;;-1:-1:-1;;;;;189:28:59;;;;;;-1:-1:-1;;;;;376:32:66;;;358:51;;346:2;331:18;189:28:59;196:219:66;515:490:59;785:10;;766:15;:29;;758:64;;;;-1:-1:-1;;;758:64:59;;622:2:66;758:64:59;;;604:21:66;661:2;641:18;;;634:30;-1:-1:-1;;;680:18:66;;;673:52;742:18;;758:64:59;;;;;;;;;854:5;;-1:-1:-1;;;;;854:5:59;840:10;:19;832:52;;;;-1:-1:-1;;;832:52:59;;973:2:66;832:52:59;;;955:21:66;1012:2;992:18;;;985:30;-1:-1:-1;;;1031:18:66;;;1024:50;1091:18;;832:52:59;771:344:66;832:52:59;900:50;;;911:21;1294:25:66;;934:15:59;1350:2:66;1335:18;;1328:34;900:50:59;;1267:18:66;900:50:59;;;;;;;961:5;;:37;;-1:-1:-1;;;;;961:5:59;;;;976:21;961:37;;;;;:5;:37;:5;:37;976:21;961:5;:37;;;;;;;;;;;;;;;;;;;;;515:490::o"},"gasEstimates":{"creation":{"codeDepositCost":"96400","executionCost":"infinite","totalCost":"infinite"},"external":{"owner()":"2359","unlockTime()":"2262","withdraw()":"infinite"}},"methodIdentifiers":{"owner()":"8da5cb5b","unlockTime()":"251c1aa3","withdraw()":"3ccfd60b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_unlockTime\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"when\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Lock.sol\":\"Lock\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/Lock.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.8.28;\\n\\n// Uncomment this line to use console.log\\n// import \\\"hardhat/console.sol\\\";\\n\\ncontract Lock {\\n    uint public unlockTime;\\n    address payable public owner;\\n\\n    event Withdrawal(uint amount, uint when);\\n\\n    constructor(uint _unlockTime) payable {\\n        require(\\n            block.timestamp < _unlockTime,\\n            \\\"Unlock time should be in the future\\\"\\n        );\\n\\n        unlockTime = _unlockTime;\\n        owner = payable(msg.sender);\\n    }\\n\\n    function withdraw() public {\\n        // Uncomment this line, and the import of \\\"hardhat/console.sol\\\", to print a log in your terminal\\n        // console.log(\\\"Unlock time is %o and block timestamp is %o\\\", unlockTime, block.timestamp);\\n\\n        require(block.timestamp >= unlockTime, \\\"You can't withdraw yet\\\");\\n        require(msg.sender == owner, \\\"You aren't the owner\\\");\\n\\n        emit Withdrawal(address(this).balance, block.timestamp);\\n\\n        owner.transfer(address(this).balance);\\n    }\\n}\\n\",\"keccak256\":\"0x3c36b5a83d533c3f095ac358675e9356c1761cd7f1e955ae23200203060419a9\",\"license\":\"UNLICENSED\"}},\"version\":1}","storageLayout":{"storage":[{"astId":13032,"contract":"contracts/Lock.sol:Lock","label":"unlockTime","offset":0,"slot":"0","type":"t_uint256"},{"astId":13034,"contract":"contracts/Lock.sol:Lock","label":"owner","offset":0,"slot":"1","type":"t_address_payable"}],"types":{"t_address_payable":{"encoding":"inplace","label":"address payable","numberOfBytes":"20"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/SS.sol":{"SS":{"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_lzEndpoint","type":"address"},{"internalType":"address","name":"_delegate","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[],"name":"InvalidLocalDecimals","type":"error"},{"inputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"name":"InvalidOptions","type":"error"},{"inputs":[],"name":"LzTokenUnavailable","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","type":"error"},{"inputs":[{"internalType":"uint256","name":"msgValue","type":"uint256"}],"name":"NotEnoughNative","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"OnlyEndpoint","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"inputs":[],"name":"OnlySelf","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"name":"SimulationResult","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"}],"name":"SlippageExceeded","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"indexed":false,"internalType":"struct EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"EnforcedOptionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"inspector","type":"address"}],"name":"MsgInspectorSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"dstEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTSent","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":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"peer","type":"bytes32"}],"name":"PeerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"preCrimeAddress","type":"address"}],"name":"PreCrimeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"SEND","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SEND_AND_CALL","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"origin","type":"tuple"}],"name":"allowInitializePath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"approvalRequired","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint16","name":"_msgType","type":"uint16"},{"internalType":"bytes","name":"_extraOptions","type":"bytes"}],"name":"combineOptions","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimalConversionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"}],"name":"enforcedOptions","outputs":[{"internalType":"bytes","name":"enforcedOption","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"","type":"tuple"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"}],"name":"isComposeMsgSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"isPeer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"origin","type":"tuple"},{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"internalType":"struct InboundPacket[]","name":"_packets","type":"tuple[]"}],"name":"lzReceiveAndRevert","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceiveSimulate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"msgInspector","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oApp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"oftVersion","outputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preCrime","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"}],"name":"quoteOFT","outputs":[{"components":[{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"uint256","name":"maxAmountLD","type":"uint256"}],"internalType":"struct OFTLimit","name":"oftLimit","type":"tuple"},{"components":[{"internalType":"int256","name":"feeAmountLD","type":"int256"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct OFTFeeDetail[]","name":"oftFeeDetails","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"oftReceipt","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"internalType":"bool","name":"_payInLzToken","type":"bool"}],"name":"quoteSend","outputs":[{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"msgFee","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"_fee","type":"tuple"},{"internalType":"address","name":"_refundAddress","type":"address"}],"name":"send","outputs":[{"components":[{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"fee","type":"tuple"}],"internalType":"struct MessagingReceipt","name":"msgReceipt","type":"tuple"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"oftReceipt","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"internalType":"struct EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"setEnforcedOptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_msgInspector","type":"address"}],"name":"setMsgInspector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"setPeer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_preCrime","type":"address"}],"name":"setPreCrime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"SafeERC20FailedOperation(address)":[{"details":"An operation with an ERC-20 token failed."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"PreCrimeSet(address)":{"details":"Emitted when the preCrime contract address is set.","params":{"preCrimeAddress":"The address of the preCrime contract."}},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"details":"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.","params":{"origin":"The origin information containing the source endpoint and sender address."},"returns":{"_0":"Whether the path has been initialized."}},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approvalRequired()":{"details":"In the case of OFT where the contract IS the token, approval is NOT required.","returns":{"_0":"requiresApproval Needs approval of the underlying token implementation."}},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"combineOptions(uint32,uint16,bytes)":{"details":"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.","params":{"_eid":"The endpoint ID.","_extraOptions":"Additional options passed by the caller.","_msgType":"The OAPP message type."},"returns":{"_0":"options The combination of caller specified options AND enforced options."}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_sender":"The sender address."},"returns":{"_0":"isSender Is a valid sender."}},"isPeer(uint32,bytes32)":{"details":"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.","params":{"_eid":"The endpoint ID to check.","_peer":"The peer to check."},"returns":{"_0":"Whether the peer passed is considered 'trusted' by the OApp."}},"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.","params":{"_executor":"The address of the executor for the received message.","_extraData":"Additional arbitrary data provided by the corresponding executor.","_guid":"The unique identifier for the received LayerZero message.","_message":"The payload of the received message.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":{"details":"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.","params":{"_packets":"An array of InboundPacket objects representing received packets to be delivered."}},"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.","params":{"_executor":"The executor address for the packet.","_extraData":"Additional data for the packet.","_guid":"The unique identifier of the packet.","_message":"The message payload of the packet.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"mint(address,uint256)":{"details":"Mints new tokens to the specified address","params":{"_amount":"The amount of tokens to mint","_to":"The address to mint tokens to"}},"name()":{"details":"Returns the name of the token."},"nextNonce(uint32,bytes32)":{"details":"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.","returns":{"nonce":"The next nonce."}},"oApp()":{"details":"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.","returns":{"_0":"The address of the OApp contract."}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol implementation.","senderVersion":"The version of the OAppSender.sol implementation."}},"oftVersion()":{"details":"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)","returns":{"interfaceId":"The interface ID.","version":"The version."}},"owner()":{"details":"Returns the address of the current owner."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"params":{"_sendParam":"The parameters for the send operation."},"returns":{"oftFeeDetails":"The details of OFT fees.","oftLimit":"The OFT limit information.","oftReceipt":"The OFT receipt information."}},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"details":"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.","params":{"_payInLzToken":"Flag indicating whether the caller is paying in the LZ token.","_sendParam":"The parameters for the send() operation."},"returns":{"msgFee":"The calculated LayerZero messaging fee from the send() operation."}},"renounceOwnership()":{"details":"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."},"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":{"details":"Executes the send operation.MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.","params":{"_fee":"The calculated fee for the send() operation.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.","_refundAddress":"The address to receive any excess funds.","_sendParam":"The parameters for the send operation."},"returns":{"msgReceipt":"The receipt for the send operation.","oftReceipt":"The OFT receipt information."}},"setDelegate(address)":{"details":"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.","params":{"_delegate":"The address of the delegate to be set."}},"setEnforcedOptions((uint32,uint16,bytes)[])":{"details":"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().","params":{"_enforcedOptions":"An array of EnforcedOptionParam structures specifying enforced options."}},"setMsgInspector(address)":{"details":"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.","params":{"_msgInspector":"The address of the message inspector."}},"setPeer(uint32,bytes32)":{"details":"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.","params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"setPreCrime(address)":{"details":"Sets the preCrime contract address.","params":{"_preCrime":"The address of the preCrime contract."}},"sharedDecimals()":{"details":"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615","returns":{"_0":"The shared decimals of the OFT."}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"token()":{"details":"Retrieves the address of the underlying ERC20 implementation.In the case of OFT, address(this) and erc20 are the same contract.","returns":{"_0":"The address of the OFT token."}},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13136":{"entryPoint":null,"id":13136,"parameterSlots":4,"returnSlots":0},"@_1354":{"entryPoint":null,"id":1354,"parameterSlots":2,"returnSlots":0},"@_1421":{"entryPoint":null,"id":1421,"parameterSlots":2,"returnSlots":0},"@_2646":{"entryPoint":null,"id":2646,"parameterSlots":4,"returnSlots":0},"@_2823":{"entryPoint":null,"id":2823,"parameterSlots":3,"returnSlots":0},"@_3883":{"entryPoint":null,"id":3883,"parameterSlots":1,"returnSlots":0},"@_4301":{"entryPoint":null,"id":4301,"parameterSlots":2,"returnSlots":0},"@_transferOwnership_3979":{"entryPoint":385,"id":3979,"parameterSlots":1,"returnSlots":0},"@decimals_4328":{"entryPoint":null,"id":4328,"parameterSlots":0,"returnSlots":1},"@sharedDecimals_2848":{"entryPoint":465,"id":2848,"parameterSlots":0,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":655,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_string_fromMemory":{"entryPoint":492,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_address_fromMemory":{"entryPoint":683,"id":null,"parameterSlots":2,"returnSlots":4},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_exp_helper":{"entryPoint":874,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":1105,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":941,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":843,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":1185,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":1264,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":1127,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":821,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":470,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:6334:66","nodeType":"YulBlock","src":"0:6334:66","statements":[{"nativeSrc":"6:3:66","nodeType":"YulBlock","src":"6:3:66","statements":[]},{"body":{"nativeSrc":"46:95:66","nodeType":"YulBlock","src":"46:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:66","nodeType":"YulLiteral","src":"63:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:66","nodeType":"YulLiteral","src":"70:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:66","nodeType":"YulLiteral","src":"75:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:66","nodeType":"YulIdentifier","src":"66:3:66"},"nativeSrc":"66:20:66","nodeType":"YulFunctionCall","src":"66:20:66"}],"functionName":{"name":"mstore","nativeSrc":"56:6:66","nodeType":"YulIdentifier","src":"56:6:66"},"nativeSrc":"56:31:66","nodeType":"YulFunctionCall","src":"56:31:66"},"nativeSrc":"56:31:66","nodeType":"YulExpressionStatement","src":"56:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:66","nodeType":"YulLiteral","src":"103:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:66","nodeType":"YulLiteral","src":"106:4:66","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:66","nodeType":"YulIdentifier","src":"96:6:66"},"nativeSrc":"96:15:66","nodeType":"YulFunctionCall","src":"96:15:66"},"nativeSrc":"96:15:66","nodeType":"YulExpressionStatement","src":"96:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:66","nodeType":"YulLiteral","src":"127:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:66","nodeType":"YulLiteral","src":"130:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:66","nodeType":"YulIdentifier","src":"120:6:66"},"nativeSrc":"120:15:66","nodeType":"YulFunctionCall","src":"120:15:66"},"nativeSrc":"120:15:66","nodeType":"YulExpressionStatement","src":"120:15:66"}]},"name":"panic_error_0x41","nativeSrc":"14:127:66","nodeType":"YulFunctionDefinition","src":"14:127:66"},{"body":{"nativeSrc":"210:770:66","nodeType":"YulBlock","src":"210:770:66","statements":[{"body":{"nativeSrc":"259:16:66","nodeType":"YulBlock","src":"259:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"268:1:66","nodeType":"YulLiteral","src":"268:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"271:1:66","nodeType":"YulLiteral","src":"271:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"261:6:66","nodeType":"YulIdentifier","src":"261:6:66"},"nativeSrc":"261:12:66","nodeType":"YulFunctionCall","src":"261:12:66"},"nativeSrc":"261:12:66","nodeType":"YulExpressionStatement","src":"261:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"238:6:66","nodeType":"YulIdentifier","src":"238:6:66"},{"kind":"number","nativeSrc":"246:4:66","nodeType":"YulLiteral","src":"246:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"234:3:66","nodeType":"YulIdentifier","src":"234:3:66"},"nativeSrc":"234:17:66","nodeType":"YulFunctionCall","src":"234:17:66"},{"name":"end","nativeSrc":"253:3:66","nodeType":"YulIdentifier","src":"253:3:66"}],"functionName":{"name":"slt","nativeSrc":"230:3:66","nodeType":"YulIdentifier","src":"230:3:66"},"nativeSrc":"230:27:66","nodeType":"YulFunctionCall","src":"230:27:66"}],"functionName":{"name":"iszero","nativeSrc":"223:6:66","nodeType":"YulIdentifier","src":"223:6:66"},"nativeSrc":"223:35:66","nodeType":"YulFunctionCall","src":"223:35:66"},"nativeSrc":"220:55:66","nodeType":"YulIf","src":"220:55:66"},{"nativeSrc":"284:27:66","nodeType":"YulVariableDeclaration","src":"284:27:66","value":{"arguments":[{"name":"offset","nativeSrc":"304:6:66","nodeType":"YulIdentifier","src":"304:6:66"}],"functionName":{"name":"mload","nativeSrc":"298:5:66","nodeType":"YulIdentifier","src":"298:5:66"},"nativeSrc":"298:13:66","nodeType":"YulFunctionCall","src":"298:13:66"},"variables":[{"name":"length","nativeSrc":"288:6:66","nodeType":"YulTypedName","src":"288:6:66","type":""}]},{"body":{"nativeSrc":"354:22:66","nodeType":"YulBlock","src":"354:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"356:16:66","nodeType":"YulIdentifier","src":"356:16:66"},"nativeSrc":"356:18:66","nodeType":"YulFunctionCall","src":"356:18:66"},"nativeSrc":"356:18:66","nodeType":"YulExpressionStatement","src":"356:18:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"326:6:66","nodeType":"YulIdentifier","src":"326:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"342:2:66","nodeType":"YulLiteral","src":"342:2:66","type":"","value":"64"},{"kind":"number","nativeSrc":"346:1:66","nodeType":"YulLiteral","src":"346:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"338:3:66","nodeType":"YulIdentifier","src":"338:3:66"},"nativeSrc":"338:10:66","nodeType":"YulFunctionCall","src":"338:10:66"},{"kind":"number","nativeSrc":"350:1:66","nodeType":"YulLiteral","src":"350:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"334:3:66","nodeType":"YulIdentifier","src":"334:3:66"},"nativeSrc":"334:18:66","nodeType":"YulFunctionCall","src":"334:18:66"}],"functionName":{"name":"gt","nativeSrc":"323:2:66","nodeType":"YulIdentifier","src":"323:2:66"},"nativeSrc":"323:30:66","nodeType":"YulFunctionCall","src":"323:30:66"},"nativeSrc":"320:56:66","nodeType":"YulIf","src":"320:56:66"},{"nativeSrc":"385:23:66","nodeType":"YulVariableDeclaration","src":"385:23:66","value":{"arguments":[{"kind":"number","nativeSrc":"405:2:66","nodeType":"YulLiteral","src":"405:2:66","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"399:5:66","nodeType":"YulIdentifier","src":"399:5:66"},"nativeSrc":"399:9:66","nodeType":"YulFunctionCall","src":"399:9:66"},"variables":[{"name":"memPtr","nativeSrc":"389:6:66","nodeType":"YulTypedName","src":"389:6:66","type":""}]},{"nativeSrc":"417:85:66","nodeType":"YulVariableDeclaration","src":"417:85:66","value":{"arguments":[{"name":"memPtr","nativeSrc":"439:6:66","nodeType":"YulIdentifier","src":"439:6:66"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"463:6:66","nodeType":"YulIdentifier","src":"463:6:66"},{"kind":"number","nativeSrc":"471:4:66","nodeType":"YulLiteral","src":"471:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"459:3:66","nodeType":"YulIdentifier","src":"459:3:66"},"nativeSrc":"459:17:66","nodeType":"YulFunctionCall","src":"459:17:66"},{"arguments":[{"kind":"number","nativeSrc":"482:2:66","nodeType":"YulLiteral","src":"482:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"478:3:66","nodeType":"YulIdentifier","src":"478:3:66"},"nativeSrc":"478:7:66","nodeType":"YulFunctionCall","src":"478:7:66"}],"functionName":{"name":"and","nativeSrc":"455:3:66","nodeType":"YulIdentifier","src":"455:3:66"},"nativeSrc":"455:31:66","nodeType":"YulFunctionCall","src":"455:31:66"},{"kind":"number","nativeSrc":"488:2:66","nodeType":"YulLiteral","src":"488:2:66","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"451:3:66","nodeType":"YulIdentifier","src":"451:3:66"},"nativeSrc":"451:40:66","nodeType":"YulFunctionCall","src":"451:40:66"},{"arguments":[{"kind":"number","nativeSrc":"497:2:66","nodeType":"YulLiteral","src":"497:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"493:3:66","nodeType":"YulIdentifier","src":"493:3:66"},"nativeSrc":"493:7:66","nodeType":"YulFunctionCall","src":"493:7:66"}],"functionName":{"name":"and","nativeSrc":"447:3:66","nodeType":"YulIdentifier","src":"447:3:66"},"nativeSrc":"447:54:66","nodeType":"YulFunctionCall","src":"447:54:66"}],"functionName":{"name":"add","nativeSrc":"435:3:66","nodeType":"YulIdentifier","src":"435:3:66"},"nativeSrc":"435:67:66","nodeType":"YulFunctionCall","src":"435:67:66"},"variables":[{"name":"newFreePtr","nativeSrc":"421:10:66","nodeType":"YulTypedName","src":"421:10:66","type":""}]},{"body":{"nativeSrc":"577:22:66","nodeType":"YulBlock","src":"577:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"579:16:66","nodeType":"YulIdentifier","src":"579:16:66"},"nativeSrc":"579:18:66","nodeType":"YulFunctionCall","src":"579:18:66"},"nativeSrc":"579:18:66","nodeType":"YulExpressionStatement","src":"579:18:66"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"520:10:66","nodeType":"YulIdentifier","src":"520:10:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"540:2:66","nodeType":"YulLiteral","src":"540:2:66","type":"","value":"64"},{"kind":"number","nativeSrc":"544:1:66","nodeType":"YulLiteral","src":"544:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"536:3:66","nodeType":"YulIdentifier","src":"536:3:66"},"nativeSrc":"536:10:66","nodeType":"YulFunctionCall","src":"536:10:66"},{"kind":"number","nativeSrc":"548:1:66","nodeType":"YulLiteral","src":"548:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"532:3:66","nodeType":"YulIdentifier","src":"532:3:66"},"nativeSrc":"532:18:66","nodeType":"YulFunctionCall","src":"532:18:66"}],"functionName":{"name":"gt","nativeSrc":"517:2:66","nodeType":"YulIdentifier","src":"517:2:66"},"nativeSrc":"517:34:66","nodeType":"YulFunctionCall","src":"517:34:66"},{"arguments":[{"name":"newFreePtr","nativeSrc":"556:10:66","nodeType":"YulIdentifier","src":"556:10:66"},{"name":"memPtr","nativeSrc":"568:6:66","nodeType":"YulIdentifier","src":"568:6:66"}],"functionName":{"name":"lt","nativeSrc":"553:2:66","nodeType":"YulIdentifier","src":"553:2:66"},"nativeSrc":"553:22:66","nodeType":"YulFunctionCall","src":"553:22:66"}],"functionName":{"name":"or","nativeSrc":"514:2:66","nodeType":"YulIdentifier","src":"514:2:66"},"nativeSrc":"514:62:66","nodeType":"YulFunctionCall","src":"514:62:66"},"nativeSrc":"511:88:66","nodeType":"YulIf","src":"511:88:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"615:2:66","nodeType":"YulLiteral","src":"615:2:66","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"619:10:66","nodeType":"YulIdentifier","src":"619:10:66"}],"functionName":{"name":"mstore","nativeSrc":"608:6:66","nodeType":"YulIdentifier","src":"608:6:66"},"nativeSrc":"608:22:66","nodeType":"YulFunctionCall","src":"608:22:66"},"nativeSrc":"608:22:66","nodeType":"YulExpressionStatement","src":"608:22:66"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"646:6:66","nodeType":"YulIdentifier","src":"646:6:66"},{"name":"length","nativeSrc":"654:6:66","nodeType":"YulIdentifier","src":"654:6:66"}],"functionName":{"name":"mstore","nativeSrc":"639:6:66","nodeType":"YulIdentifier","src":"639:6:66"},"nativeSrc":"639:22:66","nodeType":"YulFunctionCall","src":"639:22:66"},"nativeSrc":"639:22:66","nodeType":"YulExpressionStatement","src":"639:22:66"},{"body":{"nativeSrc":"713:16:66","nodeType":"YulBlock","src":"713:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"722:1:66","nodeType":"YulLiteral","src":"722:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"725:1:66","nodeType":"YulLiteral","src":"725:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"715:6:66","nodeType":"YulIdentifier","src":"715:6:66"},"nativeSrc":"715:12:66","nodeType":"YulFunctionCall","src":"715:12:66"},"nativeSrc":"715:12:66","nodeType":"YulExpressionStatement","src":"715:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"684:6:66","nodeType":"YulIdentifier","src":"684:6:66"},{"name":"length","nativeSrc":"692:6:66","nodeType":"YulIdentifier","src":"692:6:66"}],"functionName":{"name":"add","nativeSrc":"680:3:66","nodeType":"YulIdentifier","src":"680:3:66"},"nativeSrc":"680:19:66","nodeType":"YulFunctionCall","src":"680:19:66"},{"kind":"number","nativeSrc":"701:4:66","nodeType":"YulLiteral","src":"701:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"676:3:66","nodeType":"YulIdentifier","src":"676:3:66"},"nativeSrc":"676:30:66","nodeType":"YulFunctionCall","src":"676:30:66"},{"name":"end","nativeSrc":"708:3:66","nodeType":"YulIdentifier","src":"708:3:66"}],"functionName":{"name":"gt","nativeSrc":"673:2:66","nodeType":"YulIdentifier","src":"673:2:66"},"nativeSrc":"673:39:66","nodeType":"YulFunctionCall","src":"673:39:66"},"nativeSrc":"670:59:66","nodeType":"YulIf","src":"670:59:66"},{"nativeSrc":"738:10:66","nodeType":"YulVariableDeclaration","src":"738:10:66","value":{"kind":"number","nativeSrc":"747:1:66","nodeType":"YulLiteral","src":"747:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"742:1:66","nodeType":"YulTypedName","src":"742:1:66","type":""}]},{"body":{"nativeSrc":"809:91:66","nodeType":"YulBlock","src":"809:91:66","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"838:6:66","nodeType":"YulIdentifier","src":"838:6:66"},{"name":"i","nativeSrc":"846:1:66","nodeType":"YulIdentifier","src":"846:1:66"}],"functionName":{"name":"add","nativeSrc":"834:3:66","nodeType":"YulIdentifier","src":"834:3:66"},"nativeSrc":"834:14:66","nodeType":"YulFunctionCall","src":"834:14:66"},{"kind":"number","nativeSrc":"850:4:66","nodeType":"YulLiteral","src":"850:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"830:3:66","nodeType":"YulIdentifier","src":"830:3:66"},"nativeSrc":"830:25:66","nodeType":"YulFunctionCall","src":"830:25:66"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"871:6:66","nodeType":"YulIdentifier","src":"871:6:66"},{"name":"i","nativeSrc":"879:1:66","nodeType":"YulIdentifier","src":"879:1:66"}],"functionName":{"name":"add","nativeSrc":"867:3:66","nodeType":"YulIdentifier","src":"867:3:66"},"nativeSrc":"867:14:66","nodeType":"YulFunctionCall","src":"867:14:66"},{"kind":"number","nativeSrc":"883:4:66","nodeType":"YulLiteral","src":"883:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"863:3:66","nodeType":"YulIdentifier","src":"863:3:66"},"nativeSrc":"863:25:66","nodeType":"YulFunctionCall","src":"863:25:66"}],"functionName":{"name":"mload","nativeSrc":"857:5:66","nodeType":"YulIdentifier","src":"857:5:66"},"nativeSrc":"857:32:66","nodeType":"YulFunctionCall","src":"857:32:66"}],"functionName":{"name":"mstore","nativeSrc":"823:6:66","nodeType":"YulIdentifier","src":"823:6:66"},"nativeSrc":"823:67:66","nodeType":"YulFunctionCall","src":"823:67:66"},"nativeSrc":"823:67:66","nodeType":"YulExpressionStatement","src":"823:67:66"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"768:1:66","nodeType":"YulIdentifier","src":"768:1:66"},{"name":"length","nativeSrc":"771:6:66","nodeType":"YulIdentifier","src":"771:6:66"}],"functionName":{"name":"lt","nativeSrc":"765:2:66","nodeType":"YulIdentifier","src":"765:2:66"},"nativeSrc":"765:13:66","nodeType":"YulFunctionCall","src":"765:13:66"},"nativeSrc":"757:143:66","nodeType":"YulForLoop","post":{"nativeSrc":"779:21:66","nodeType":"YulBlock","src":"779:21:66","statements":[{"nativeSrc":"781:17:66","nodeType":"YulAssignment","src":"781:17:66","value":{"arguments":[{"name":"i","nativeSrc":"790:1:66","nodeType":"YulIdentifier","src":"790:1:66"},{"kind":"number","nativeSrc":"793:4:66","nodeType":"YulLiteral","src":"793:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"786:3:66","nodeType":"YulIdentifier","src":"786:3:66"},"nativeSrc":"786:12:66","nodeType":"YulFunctionCall","src":"786:12:66"},"variableNames":[{"name":"i","nativeSrc":"781:1:66","nodeType":"YulIdentifier","src":"781:1:66"}]}]},"pre":{"nativeSrc":"761:3:66","nodeType":"YulBlock","src":"761:3:66","statements":[]},"src":"757:143:66"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"924:6:66","nodeType":"YulIdentifier","src":"924:6:66"},{"name":"length","nativeSrc":"932:6:66","nodeType":"YulIdentifier","src":"932:6:66"}],"functionName":{"name":"add","nativeSrc":"920:3:66","nodeType":"YulIdentifier","src":"920:3:66"},"nativeSrc":"920:19:66","nodeType":"YulFunctionCall","src":"920:19:66"},{"kind":"number","nativeSrc":"941:4:66","nodeType":"YulLiteral","src":"941:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"916:3:66","nodeType":"YulIdentifier","src":"916:3:66"},"nativeSrc":"916:30:66","nodeType":"YulFunctionCall","src":"916:30:66"},{"kind":"number","nativeSrc":"948:1:66","nodeType":"YulLiteral","src":"948:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"909:6:66","nodeType":"YulIdentifier","src":"909:6:66"},"nativeSrc":"909:41:66","nodeType":"YulFunctionCall","src":"909:41:66"},"nativeSrc":"909:41:66","nodeType":"YulExpressionStatement","src":"909:41:66"},{"nativeSrc":"959:15:66","nodeType":"YulAssignment","src":"959:15:66","value":{"name":"memPtr","nativeSrc":"968:6:66","nodeType":"YulIdentifier","src":"968:6:66"},"variableNames":[{"name":"array","nativeSrc":"959:5:66","nodeType":"YulIdentifier","src":"959:5:66"}]}]},"name":"abi_decode_string_fromMemory","nativeSrc":"146:834:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"184:6:66","nodeType":"YulTypedName","src":"184:6:66","type":""},{"name":"end","nativeSrc":"192:3:66","nodeType":"YulTypedName","src":"192:3:66","type":""}],"returnVariables":[{"name":"array","nativeSrc":"200:5:66","nodeType":"YulTypedName","src":"200:5:66","type":""}],"src":"146:834:66"},{"body":{"nativeSrc":"1045:117:66","nodeType":"YulBlock","src":"1045:117:66","statements":[{"nativeSrc":"1055:22:66","nodeType":"YulAssignment","src":"1055:22:66","value":{"arguments":[{"name":"offset","nativeSrc":"1070:6:66","nodeType":"YulIdentifier","src":"1070:6:66"}],"functionName":{"name":"mload","nativeSrc":"1064:5:66","nodeType":"YulIdentifier","src":"1064:5:66"},"nativeSrc":"1064:13:66","nodeType":"YulFunctionCall","src":"1064:13:66"},"variableNames":[{"name":"value","nativeSrc":"1055:5:66","nodeType":"YulIdentifier","src":"1055:5:66"}]},{"body":{"nativeSrc":"1140:16:66","nodeType":"YulBlock","src":"1140:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1149:1:66","nodeType":"YulLiteral","src":"1149:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1152:1:66","nodeType":"YulLiteral","src":"1152:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1142:6:66","nodeType":"YulIdentifier","src":"1142:6:66"},"nativeSrc":"1142:12:66","nodeType":"YulFunctionCall","src":"1142:12:66"},"nativeSrc":"1142:12:66","nodeType":"YulExpressionStatement","src":"1142:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1099:5:66","nodeType":"YulIdentifier","src":"1099:5:66"},{"arguments":[{"name":"value","nativeSrc":"1110:5:66","nodeType":"YulIdentifier","src":"1110:5:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1125:3:66","nodeType":"YulLiteral","src":"1125:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"1130:1:66","nodeType":"YulLiteral","src":"1130:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1121:3:66","nodeType":"YulIdentifier","src":"1121:3:66"},"nativeSrc":"1121:11:66","nodeType":"YulFunctionCall","src":"1121:11:66"},{"kind":"number","nativeSrc":"1134:1:66","nodeType":"YulLiteral","src":"1134:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1117:3:66","nodeType":"YulIdentifier","src":"1117:3:66"},"nativeSrc":"1117:19:66","nodeType":"YulFunctionCall","src":"1117:19:66"}],"functionName":{"name":"and","nativeSrc":"1106:3:66","nodeType":"YulIdentifier","src":"1106:3:66"},"nativeSrc":"1106:31:66","nodeType":"YulFunctionCall","src":"1106:31:66"}],"functionName":{"name":"eq","nativeSrc":"1096:2:66","nodeType":"YulIdentifier","src":"1096:2:66"},"nativeSrc":"1096:42:66","nodeType":"YulFunctionCall","src":"1096:42:66"}],"functionName":{"name":"iszero","nativeSrc":"1089:6:66","nodeType":"YulIdentifier","src":"1089:6:66"},"nativeSrc":"1089:50:66","nodeType":"YulFunctionCall","src":"1089:50:66"},"nativeSrc":"1086:70:66","nodeType":"YulIf","src":"1086:70:66"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"985:177:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1024:6:66","nodeType":"YulTypedName","src":"1024:6:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1035:5:66","nodeType":"YulTypedName","src":"1035:5:66","type":""}],"src":"985:177:66"},{"body":{"nativeSrc":"1319:576:66","nodeType":"YulBlock","src":"1319:576:66","statements":[{"body":{"nativeSrc":"1366:16:66","nodeType":"YulBlock","src":"1366:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1375:1:66","nodeType":"YulLiteral","src":"1375:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1378:1:66","nodeType":"YulLiteral","src":"1378:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1368:6:66","nodeType":"YulIdentifier","src":"1368:6:66"},"nativeSrc":"1368:12:66","nodeType":"YulFunctionCall","src":"1368:12:66"},"nativeSrc":"1368:12:66","nodeType":"YulExpressionStatement","src":"1368:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1340:7:66","nodeType":"YulIdentifier","src":"1340:7:66"},{"name":"headStart","nativeSrc":"1349:9:66","nodeType":"YulIdentifier","src":"1349:9:66"}],"functionName":{"name":"sub","nativeSrc":"1336:3:66","nodeType":"YulIdentifier","src":"1336:3:66"},"nativeSrc":"1336:23:66","nodeType":"YulFunctionCall","src":"1336:23:66"},{"kind":"number","nativeSrc":"1361:3:66","nodeType":"YulLiteral","src":"1361:3:66","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"1332:3:66","nodeType":"YulIdentifier","src":"1332:3:66"},"nativeSrc":"1332:33:66","nodeType":"YulFunctionCall","src":"1332:33:66"},"nativeSrc":"1329:53:66","nodeType":"YulIf","src":"1329:53:66"},{"nativeSrc":"1391:30:66","nodeType":"YulVariableDeclaration","src":"1391:30:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1411:9:66","nodeType":"YulIdentifier","src":"1411:9:66"}],"functionName":{"name":"mload","nativeSrc":"1405:5:66","nodeType":"YulIdentifier","src":"1405:5:66"},"nativeSrc":"1405:16:66","nodeType":"YulFunctionCall","src":"1405:16:66"},"variables":[{"name":"offset","nativeSrc":"1395:6:66","nodeType":"YulTypedName","src":"1395:6:66","type":""}]},{"body":{"nativeSrc":"1464:16:66","nodeType":"YulBlock","src":"1464:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1473:1:66","nodeType":"YulLiteral","src":"1473:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1476:1:66","nodeType":"YulLiteral","src":"1476:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1466:6:66","nodeType":"YulIdentifier","src":"1466:6:66"},"nativeSrc":"1466:12:66","nodeType":"YulFunctionCall","src":"1466:12:66"},"nativeSrc":"1466:12:66","nodeType":"YulExpressionStatement","src":"1466:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1436:6:66","nodeType":"YulIdentifier","src":"1436:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1452:2:66","nodeType":"YulLiteral","src":"1452:2:66","type":"","value":"64"},{"kind":"number","nativeSrc":"1456:1:66","nodeType":"YulLiteral","src":"1456:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1448:3:66","nodeType":"YulIdentifier","src":"1448:3:66"},"nativeSrc":"1448:10:66","nodeType":"YulFunctionCall","src":"1448:10:66"},{"kind":"number","nativeSrc":"1460:1:66","nodeType":"YulLiteral","src":"1460:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1444:3:66","nodeType":"YulIdentifier","src":"1444:3:66"},"nativeSrc":"1444:18:66","nodeType":"YulFunctionCall","src":"1444:18:66"}],"functionName":{"name":"gt","nativeSrc":"1433:2:66","nodeType":"YulIdentifier","src":"1433:2:66"},"nativeSrc":"1433:30:66","nodeType":"YulFunctionCall","src":"1433:30:66"},"nativeSrc":"1430:50:66","nodeType":"YulIf","src":"1430:50:66"},{"nativeSrc":"1489:71:66","nodeType":"YulAssignment","src":"1489:71:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1532:9:66","nodeType":"YulIdentifier","src":"1532:9:66"},{"name":"offset","nativeSrc":"1543:6:66","nodeType":"YulIdentifier","src":"1543:6:66"}],"functionName":{"name":"add","nativeSrc":"1528:3:66","nodeType":"YulIdentifier","src":"1528:3:66"},"nativeSrc":"1528:22:66","nodeType":"YulFunctionCall","src":"1528:22:66"},{"name":"dataEnd","nativeSrc":"1552:7:66","nodeType":"YulIdentifier","src":"1552:7:66"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1499:28:66","nodeType":"YulIdentifier","src":"1499:28:66"},"nativeSrc":"1499:61:66","nodeType":"YulFunctionCall","src":"1499:61:66"},"variableNames":[{"name":"value0","nativeSrc":"1489:6:66","nodeType":"YulIdentifier","src":"1489:6:66"}]},{"nativeSrc":"1569:41:66","nodeType":"YulVariableDeclaration","src":"1569:41:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1595:9:66","nodeType":"YulIdentifier","src":"1595:9:66"},{"kind":"number","nativeSrc":"1606:2:66","nodeType":"YulLiteral","src":"1606:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1591:3:66","nodeType":"YulIdentifier","src":"1591:3:66"},"nativeSrc":"1591:18:66","nodeType":"YulFunctionCall","src":"1591:18:66"}],"functionName":{"name":"mload","nativeSrc":"1585:5:66","nodeType":"YulIdentifier","src":"1585:5:66"},"nativeSrc":"1585:25:66","nodeType":"YulFunctionCall","src":"1585:25:66"},"variables":[{"name":"offset_1","nativeSrc":"1573:8:66","nodeType":"YulTypedName","src":"1573:8:66","type":""}]},{"body":{"nativeSrc":"1655:16:66","nodeType":"YulBlock","src":"1655:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1664:1:66","nodeType":"YulLiteral","src":"1664:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1667:1:66","nodeType":"YulLiteral","src":"1667:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1657:6:66","nodeType":"YulIdentifier","src":"1657:6:66"},"nativeSrc":"1657:12:66","nodeType":"YulFunctionCall","src":"1657:12:66"},"nativeSrc":"1657:12:66","nodeType":"YulExpressionStatement","src":"1657:12:66"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"1625:8:66","nodeType":"YulIdentifier","src":"1625:8:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1643:2:66","nodeType":"YulLiteral","src":"1643:2:66","type":"","value":"64"},{"kind":"number","nativeSrc":"1647:1:66","nodeType":"YulLiteral","src":"1647:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1639:3:66","nodeType":"YulIdentifier","src":"1639:3:66"},"nativeSrc":"1639:10:66","nodeType":"YulFunctionCall","src":"1639:10:66"},{"kind":"number","nativeSrc":"1651:1:66","nodeType":"YulLiteral","src":"1651:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1635:3:66","nodeType":"YulIdentifier","src":"1635:3:66"},"nativeSrc":"1635:18:66","nodeType":"YulFunctionCall","src":"1635:18:66"}],"functionName":{"name":"gt","nativeSrc":"1622:2:66","nodeType":"YulIdentifier","src":"1622:2:66"},"nativeSrc":"1622:32:66","nodeType":"YulFunctionCall","src":"1622:32:66"},"nativeSrc":"1619:52:66","nodeType":"YulIf","src":"1619:52:66"},{"nativeSrc":"1680:73:66","nodeType":"YulAssignment","src":"1680:73:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1723:9:66","nodeType":"YulIdentifier","src":"1723:9:66"},{"name":"offset_1","nativeSrc":"1734:8:66","nodeType":"YulIdentifier","src":"1734:8:66"}],"functionName":{"name":"add","nativeSrc":"1719:3:66","nodeType":"YulIdentifier","src":"1719:3:66"},"nativeSrc":"1719:24:66","nodeType":"YulFunctionCall","src":"1719:24:66"},{"name":"dataEnd","nativeSrc":"1745:7:66","nodeType":"YulIdentifier","src":"1745:7:66"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1690:28:66","nodeType":"YulIdentifier","src":"1690:28:66"},"nativeSrc":"1690:63:66","nodeType":"YulFunctionCall","src":"1690:63:66"},"variableNames":[{"name":"value1","nativeSrc":"1680:6:66","nodeType":"YulIdentifier","src":"1680:6:66"}]},{"nativeSrc":"1762:59:66","nodeType":"YulAssignment","src":"1762:59:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1806:9:66","nodeType":"YulIdentifier","src":"1806:9:66"},{"kind":"number","nativeSrc":"1817:2:66","nodeType":"YulLiteral","src":"1817:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1802:3:66","nodeType":"YulIdentifier","src":"1802:3:66"},"nativeSrc":"1802:18:66","nodeType":"YulFunctionCall","src":"1802:18:66"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"1772:29:66","nodeType":"YulIdentifier","src":"1772:29:66"},"nativeSrc":"1772:49:66","nodeType":"YulFunctionCall","src":"1772:49:66"},"variableNames":[{"name":"value2","nativeSrc":"1762:6:66","nodeType":"YulIdentifier","src":"1762:6:66"}]},{"nativeSrc":"1830:59:66","nodeType":"YulAssignment","src":"1830:59:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1874:9:66","nodeType":"YulIdentifier","src":"1874:9:66"},{"kind":"number","nativeSrc":"1885:2:66","nodeType":"YulLiteral","src":"1885:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1870:3:66","nodeType":"YulIdentifier","src":"1870:3:66"},"nativeSrc":"1870:18:66","nodeType":"YulFunctionCall","src":"1870:18:66"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"1840:29:66","nodeType":"YulIdentifier","src":"1840:29:66"},"nativeSrc":"1840:49:66","nodeType":"YulFunctionCall","src":"1840:49:66"},"variableNames":[{"name":"value3","nativeSrc":"1830:6:66","nodeType":"YulIdentifier","src":"1830:6:66"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_address_fromMemory","nativeSrc":"1167:728:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1261:9:66","nodeType":"YulTypedName","src":"1261:9:66","type":""},{"name":"dataEnd","nativeSrc":"1272:7:66","nodeType":"YulTypedName","src":"1272:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1284:6:66","nodeType":"YulTypedName","src":"1284:6:66","type":""},{"name":"value1","nativeSrc":"1292:6:66","nodeType":"YulTypedName","src":"1292:6:66","type":""},{"name":"value2","nativeSrc":"1300:6:66","nodeType":"YulTypedName","src":"1300:6:66","type":""},{"name":"value3","nativeSrc":"1308:6:66","nodeType":"YulTypedName","src":"1308:6:66","type":""}],"src":"1167:728:66"},{"body":{"nativeSrc":"2001:102:66","nodeType":"YulBlock","src":"2001:102:66","statements":[{"nativeSrc":"2011:26:66","nodeType":"YulAssignment","src":"2011:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"2023:9:66","nodeType":"YulIdentifier","src":"2023:9:66"},{"kind":"number","nativeSrc":"2034:2:66","nodeType":"YulLiteral","src":"2034:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2019:3:66","nodeType":"YulIdentifier","src":"2019:3:66"},"nativeSrc":"2019:18:66","nodeType":"YulFunctionCall","src":"2019:18:66"},"variableNames":[{"name":"tail","nativeSrc":"2011:4:66","nodeType":"YulIdentifier","src":"2011:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2053:9:66","nodeType":"YulIdentifier","src":"2053:9:66"},{"arguments":[{"name":"value0","nativeSrc":"2068:6:66","nodeType":"YulIdentifier","src":"2068:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2084:3:66","nodeType":"YulLiteral","src":"2084:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"2089:1:66","nodeType":"YulLiteral","src":"2089:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2080:3:66","nodeType":"YulIdentifier","src":"2080:3:66"},"nativeSrc":"2080:11:66","nodeType":"YulFunctionCall","src":"2080:11:66"},{"kind":"number","nativeSrc":"2093:1:66","nodeType":"YulLiteral","src":"2093:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2076:3:66","nodeType":"YulIdentifier","src":"2076:3:66"},"nativeSrc":"2076:19:66","nodeType":"YulFunctionCall","src":"2076:19:66"}],"functionName":{"name":"and","nativeSrc":"2064:3:66","nodeType":"YulIdentifier","src":"2064:3:66"},"nativeSrc":"2064:32:66","nodeType":"YulFunctionCall","src":"2064:32:66"}],"functionName":{"name":"mstore","nativeSrc":"2046:6:66","nodeType":"YulIdentifier","src":"2046:6:66"},"nativeSrc":"2046:51:66","nodeType":"YulFunctionCall","src":"2046:51:66"},"nativeSrc":"2046:51:66","nodeType":"YulExpressionStatement","src":"2046:51:66"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1900:203:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1970:9:66","nodeType":"YulTypedName","src":"1970:9:66","type":""},{"name":"value0","nativeSrc":"1981:6:66","nodeType":"YulTypedName","src":"1981:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1992:4:66","nodeType":"YulTypedName","src":"1992:4:66","type":""}],"src":"1900:203:66"},{"body":{"nativeSrc":"2140:95:66","nodeType":"YulBlock","src":"2140:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2157:1:66","nodeType":"YulLiteral","src":"2157:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"2164:3:66","nodeType":"YulLiteral","src":"2164:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"2169:10:66","nodeType":"YulLiteral","src":"2169:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"2160:3:66","nodeType":"YulIdentifier","src":"2160:3:66"},"nativeSrc":"2160:20:66","nodeType":"YulFunctionCall","src":"2160:20:66"}],"functionName":{"name":"mstore","nativeSrc":"2150:6:66","nodeType":"YulIdentifier","src":"2150:6:66"},"nativeSrc":"2150:31:66","nodeType":"YulFunctionCall","src":"2150:31:66"},"nativeSrc":"2150:31:66","nodeType":"YulExpressionStatement","src":"2150:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2197:1:66","nodeType":"YulLiteral","src":"2197:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"2200:4:66","nodeType":"YulLiteral","src":"2200:4:66","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"2190:6:66","nodeType":"YulIdentifier","src":"2190:6:66"},"nativeSrc":"2190:15:66","nodeType":"YulFunctionCall","src":"2190:15:66"},"nativeSrc":"2190:15:66","nodeType":"YulExpressionStatement","src":"2190:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2221:1:66","nodeType":"YulLiteral","src":"2221:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"2224:4:66","nodeType":"YulLiteral","src":"2224:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"2214:6:66","nodeType":"YulIdentifier","src":"2214:6:66"},"nativeSrc":"2214:15:66","nodeType":"YulFunctionCall","src":"2214:15:66"},"nativeSrc":"2214:15:66","nodeType":"YulExpressionStatement","src":"2214:15:66"}]},"name":"panic_error_0x11","nativeSrc":"2108:127:66","nodeType":"YulFunctionDefinition","src":"2108:127:66"},{"body":{"nativeSrc":"2287:104:66","nodeType":"YulBlock","src":"2287:104:66","statements":[{"nativeSrc":"2297:39:66","nodeType":"YulAssignment","src":"2297:39:66","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"2313:1:66","nodeType":"YulIdentifier","src":"2313:1:66"},{"kind":"number","nativeSrc":"2316:4:66","nodeType":"YulLiteral","src":"2316:4:66","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2309:3:66","nodeType":"YulIdentifier","src":"2309:3:66"},"nativeSrc":"2309:12:66","nodeType":"YulFunctionCall","src":"2309:12:66"},{"arguments":[{"name":"y","nativeSrc":"2327:1:66","nodeType":"YulIdentifier","src":"2327:1:66"},{"kind":"number","nativeSrc":"2330:4:66","nodeType":"YulLiteral","src":"2330:4:66","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2323:3:66","nodeType":"YulIdentifier","src":"2323:3:66"},"nativeSrc":"2323:12:66","nodeType":"YulFunctionCall","src":"2323:12:66"}],"functionName":{"name":"sub","nativeSrc":"2305:3:66","nodeType":"YulIdentifier","src":"2305:3:66"},"nativeSrc":"2305:31:66","nodeType":"YulFunctionCall","src":"2305:31:66"},"variableNames":[{"name":"diff","nativeSrc":"2297:4:66","nodeType":"YulIdentifier","src":"2297:4:66"}]},{"body":{"nativeSrc":"2363:22:66","nodeType":"YulBlock","src":"2363:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"2365:16:66","nodeType":"YulIdentifier","src":"2365:16:66"},"nativeSrc":"2365:18:66","nodeType":"YulFunctionCall","src":"2365:18:66"},"nativeSrc":"2365:18:66","nodeType":"YulExpressionStatement","src":"2365:18:66"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"2351:4:66","nodeType":"YulIdentifier","src":"2351:4:66"},{"kind":"number","nativeSrc":"2357:4:66","nodeType":"YulLiteral","src":"2357:4:66","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"2348:2:66","nodeType":"YulIdentifier","src":"2348:2:66"},"nativeSrc":"2348:14:66","nodeType":"YulFunctionCall","src":"2348:14:66"},"nativeSrc":"2345:40:66","nodeType":"YulIf","src":"2345:40:66"}]},"name":"checked_sub_t_uint8","nativeSrc":"2240:151:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"2269:1:66","nodeType":"YulTypedName","src":"2269:1:66","type":""},{"name":"y","nativeSrc":"2272:1:66","nodeType":"YulTypedName","src":"2272:1:66","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"2278:4:66","nodeType":"YulTypedName","src":"2278:4:66","type":""}],"src":"2240:151:66"},{"body":{"nativeSrc":"2465:306:66","nodeType":"YulBlock","src":"2465:306:66","statements":[{"nativeSrc":"2475:10:66","nodeType":"YulAssignment","src":"2475:10:66","value":{"kind":"number","nativeSrc":"2484:1:66","nodeType":"YulLiteral","src":"2484:1:66","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"2475:5:66","nodeType":"YulIdentifier","src":"2475:5:66"}]},{"nativeSrc":"2494:13:66","nodeType":"YulAssignment","src":"2494:13:66","value":{"name":"_base","nativeSrc":"2502:5:66","nodeType":"YulIdentifier","src":"2502:5:66"},"variableNames":[{"name":"base","nativeSrc":"2494:4:66","nodeType":"YulIdentifier","src":"2494:4:66"}]},{"body":{"nativeSrc":"2552:213:66","nodeType":"YulBlock","src":"2552:213:66","statements":[{"body":{"nativeSrc":"2594:22:66","nodeType":"YulBlock","src":"2594:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"2596:16:66","nodeType":"YulIdentifier","src":"2596:16:66"},"nativeSrc":"2596:18:66","nodeType":"YulFunctionCall","src":"2596:18:66"},"nativeSrc":"2596:18:66","nodeType":"YulExpressionStatement","src":"2596:18:66"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"2572:4:66","nodeType":"YulIdentifier","src":"2572:4:66"},{"arguments":[{"name":"max","nativeSrc":"2582:3:66","nodeType":"YulIdentifier","src":"2582:3:66"},{"name":"base","nativeSrc":"2587:4:66","nodeType":"YulIdentifier","src":"2587:4:66"}],"functionName":{"name":"div","nativeSrc":"2578:3:66","nodeType":"YulIdentifier","src":"2578:3:66"},"nativeSrc":"2578:14:66","nodeType":"YulFunctionCall","src":"2578:14:66"}],"functionName":{"name":"gt","nativeSrc":"2569:2:66","nodeType":"YulIdentifier","src":"2569:2:66"},"nativeSrc":"2569:24:66","nodeType":"YulFunctionCall","src":"2569:24:66"},"nativeSrc":"2566:50:66","nodeType":"YulIf","src":"2566:50:66"},{"body":{"nativeSrc":"2649:29:66","nodeType":"YulBlock","src":"2649:29:66","statements":[{"nativeSrc":"2651:25:66","nodeType":"YulAssignment","src":"2651:25:66","value":{"arguments":[{"name":"power","nativeSrc":"2664:5:66","nodeType":"YulIdentifier","src":"2664:5:66"},{"name":"base","nativeSrc":"2671:4:66","nodeType":"YulIdentifier","src":"2671:4:66"}],"functionName":{"name":"mul","nativeSrc":"2660:3:66","nodeType":"YulIdentifier","src":"2660:3:66"},"nativeSrc":"2660:16:66","nodeType":"YulFunctionCall","src":"2660:16:66"},"variableNames":[{"name":"power","nativeSrc":"2651:5:66","nodeType":"YulIdentifier","src":"2651:5:66"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"2636:8:66","nodeType":"YulIdentifier","src":"2636:8:66"},{"kind":"number","nativeSrc":"2646:1:66","nodeType":"YulLiteral","src":"2646:1:66","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"2632:3:66","nodeType":"YulIdentifier","src":"2632:3:66"},"nativeSrc":"2632:16:66","nodeType":"YulFunctionCall","src":"2632:16:66"},"nativeSrc":"2629:49:66","nodeType":"YulIf","src":"2629:49:66"},{"nativeSrc":"2691:23:66","nodeType":"YulAssignment","src":"2691:23:66","value":{"arguments":[{"name":"base","nativeSrc":"2703:4:66","nodeType":"YulIdentifier","src":"2703:4:66"},{"name":"base","nativeSrc":"2709:4:66","nodeType":"YulIdentifier","src":"2709:4:66"}],"functionName":{"name":"mul","nativeSrc":"2699:3:66","nodeType":"YulIdentifier","src":"2699:3:66"},"nativeSrc":"2699:15:66","nodeType":"YulFunctionCall","src":"2699:15:66"},"variableNames":[{"name":"base","nativeSrc":"2691:4:66","nodeType":"YulIdentifier","src":"2691:4:66"}]},{"nativeSrc":"2727:28:66","nodeType":"YulAssignment","src":"2727:28:66","value":{"arguments":[{"kind":"number","nativeSrc":"2743:1:66","nodeType":"YulLiteral","src":"2743:1:66","type":"","value":"1"},{"name":"exponent","nativeSrc":"2746:8:66","nodeType":"YulIdentifier","src":"2746:8:66"}],"functionName":{"name":"shr","nativeSrc":"2739:3:66","nodeType":"YulIdentifier","src":"2739:3:66"},"nativeSrc":"2739:16:66","nodeType":"YulFunctionCall","src":"2739:16:66"},"variableNames":[{"name":"exponent","nativeSrc":"2727:8:66","nodeType":"YulIdentifier","src":"2727:8:66"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"2527:8:66","nodeType":"YulIdentifier","src":"2527:8:66"},{"kind":"number","nativeSrc":"2537:1:66","nodeType":"YulLiteral","src":"2537:1:66","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"2524:2:66","nodeType":"YulIdentifier","src":"2524:2:66"},"nativeSrc":"2524:15:66","nodeType":"YulFunctionCall","src":"2524:15:66"},"nativeSrc":"2516:249:66","nodeType":"YulForLoop","post":{"nativeSrc":"2540:3:66","nodeType":"YulBlock","src":"2540:3:66","statements":[]},"pre":{"nativeSrc":"2520:3:66","nodeType":"YulBlock","src":"2520:3:66","statements":[]},"src":"2516:249:66"}]},"name":"checked_exp_helper","nativeSrc":"2396:375:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"2424:5:66","nodeType":"YulTypedName","src":"2424:5:66","type":""},{"name":"exponent","nativeSrc":"2431:8:66","nodeType":"YulTypedName","src":"2431:8:66","type":""},{"name":"max","nativeSrc":"2441:3:66","nodeType":"YulTypedName","src":"2441:3:66","type":""}],"returnVariables":[{"name":"power","nativeSrc":"2449:5:66","nodeType":"YulTypedName","src":"2449:5:66","type":""},{"name":"base","nativeSrc":"2456:4:66","nodeType":"YulTypedName","src":"2456:4:66","type":""}],"src":"2396:375:66"},{"body":{"nativeSrc":"2835:843:66","nodeType":"YulBlock","src":"2835:843:66","statements":[{"body":{"nativeSrc":"2873:52:66","nodeType":"YulBlock","src":"2873:52:66","statements":[{"nativeSrc":"2887:10:66","nodeType":"YulAssignment","src":"2887:10:66","value":{"kind":"number","nativeSrc":"2896:1:66","nodeType":"YulLiteral","src":"2896:1:66","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"2887:5:66","nodeType":"YulIdentifier","src":"2887:5:66"}]},{"nativeSrc":"2910:5:66","nodeType":"YulLeave","src":"2910:5:66"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"2855:8:66","nodeType":"YulIdentifier","src":"2855:8:66"}],"functionName":{"name":"iszero","nativeSrc":"2848:6:66","nodeType":"YulIdentifier","src":"2848:6:66"},"nativeSrc":"2848:16:66","nodeType":"YulFunctionCall","src":"2848:16:66"},"nativeSrc":"2845:80:66","nodeType":"YulIf","src":"2845:80:66"},{"body":{"nativeSrc":"2958:52:66","nodeType":"YulBlock","src":"2958:52:66","statements":[{"nativeSrc":"2972:10:66","nodeType":"YulAssignment","src":"2972:10:66","value":{"kind":"number","nativeSrc":"2981:1:66","nodeType":"YulLiteral","src":"2981:1:66","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"2972:5:66","nodeType":"YulIdentifier","src":"2972:5:66"}]},{"nativeSrc":"2995:5:66","nodeType":"YulLeave","src":"2995:5:66"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"2944:4:66","nodeType":"YulIdentifier","src":"2944:4:66"}],"functionName":{"name":"iszero","nativeSrc":"2937:6:66","nodeType":"YulIdentifier","src":"2937:6:66"},"nativeSrc":"2937:12:66","nodeType":"YulFunctionCall","src":"2937:12:66"},"nativeSrc":"2934:76:66","nodeType":"YulIf","src":"2934:76:66"},{"cases":[{"body":{"nativeSrc":"3046:52:66","nodeType":"YulBlock","src":"3046:52:66","statements":[{"nativeSrc":"3060:10:66","nodeType":"YulAssignment","src":"3060:10:66","value":{"kind":"number","nativeSrc":"3069:1:66","nodeType":"YulLiteral","src":"3069:1:66","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"3060:5:66","nodeType":"YulIdentifier","src":"3060:5:66"}]},{"nativeSrc":"3083:5:66","nodeType":"YulLeave","src":"3083:5:66"}]},"nativeSrc":"3039:59:66","nodeType":"YulCase","src":"3039:59:66","value":{"kind":"number","nativeSrc":"3044:1:66","nodeType":"YulLiteral","src":"3044:1:66","type":"","value":"1"}},{"body":{"nativeSrc":"3114:167:66","nodeType":"YulBlock","src":"3114:167:66","statements":[{"body":{"nativeSrc":"3149:22:66","nodeType":"YulBlock","src":"3149:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"3151:16:66","nodeType":"YulIdentifier","src":"3151:16:66"},"nativeSrc":"3151:18:66","nodeType":"YulFunctionCall","src":"3151:18:66"},"nativeSrc":"3151:18:66","nodeType":"YulExpressionStatement","src":"3151:18:66"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"3134:8:66","nodeType":"YulIdentifier","src":"3134:8:66"},{"kind":"number","nativeSrc":"3144:3:66","nodeType":"YulLiteral","src":"3144:3:66","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"3131:2:66","nodeType":"YulIdentifier","src":"3131:2:66"},"nativeSrc":"3131:17:66","nodeType":"YulFunctionCall","src":"3131:17:66"},"nativeSrc":"3128:43:66","nodeType":"YulIf","src":"3128:43:66"},{"nativeSrc":"3184:25:66","nodeType":"YulAssignment","src":"3184:25:66","value":{"arguments":[{"name":"exponent","nativeSrc":"3197:8:66","nodeType":"YulIdentifier","src":"3197:8:66"},{"kind":"number","nativeSrc":"3207:1:66","nodeType":"YulLiteral","src":"3207:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3193:3:66","nodeType":"YulIdentifier","src":"3193:3:66"},"nativeSrc":"3193:16:66","nodeType":"YulFunctionCall","src":"3193:16:66"},"variableNames":[{"name":"power","nativeSrc":"3184:5:66","nodeType":"YulIdentifier","src":"3184:5:66"}]},{"nativeSrc":"3222:11:66","nodeType":"YulVariableDeclaration","src":"3222:11:66","value":{"kind":"number","nativeSrc":"3232:1:66","nodeType":"YulLiteral","src":"3232:1:66","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"3226:2:66","nodeType":"YulTypedName","src":"3226:2:66","type":""}]},{"nativeSrc":"3246:7:66","nodeType":"YulAssignment","src":"3246:7:66","value":{"kind":"number","nativeSrc":"3252:1:66","nodeType":"YulLiteral","src":"3252:1:66","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"3246:2:66","nodeType":"YulIdentifier","src":"3246:2:66"}]},{"nativeSrc":"3266:5:66","nodeType":"YulLeave","src":"3266:5:66"}]},"nativeSrc":"3107:174:66","nodeType":"YulCase","src":"3107:174:66","value":{"kind":"number","nativeSrc":"3112:1:66","nodeType":"YulLiteral","src":"3112:1:66","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"3026:4:66","nodeType":"YulIdentifier","src":"3026:4:66"},"nativeSrc":"3019:262:66","nodeType":"YulSwitch","src":"3019:262:66"},{"body":{"nativeSrc":"3379:114:66","nodeType":"YulBlock","src":"3379:114:66","statements":[{"nativeSrc":"3393:28:66","nodeType":"YulAssignment","src":"3393:28:66","value":{"arguments":[{"name":"base","nativeSrc":"3406:4:66","nodeType":"YulIdentifier","src":"3406:4:66"},{"name":"exponent","nativeSrc":"3412:8:66","nodeType":"YulIdentifier","src":"3412:8:66"}],"functionName":{"name":"exp","nativeSrc":"3402:3:66","nodeType":"YulIdentifier","src":"3402:3:66"},"nativeSrc":"3402:19:66","nodeType":"YulFunctionCall","src":"3402:19:66"},"variableNames":[{"name":"power","nativeSrc":"3393:5:66","nodeType":"YulIdentifier","src":"3393:5:66"}]},{"nativeSrc":"3434:11:66","nodeType":"YulVariableDeclaration","src":"3434:11:66","value":{"kind":"number","nativeSrc":"3444:1:66","nodeType":"YulLiteral","src":"3444:1:66","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"3438:2:66","nodeType":"YulTypedName","src":"3438:2:66","type":""}]},{"nativeSrc":"3458:7:66","nodeType":"YulAssignment","src":"3458:7:66","value":{"kind":"number","nativeSrc":"3464:1:66","nodeType":"YulLiteral","src":"3464:1:66","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"3458:2:66","nodeType":"YulIdentifier","src":"3458:2:66"}]},{"nativeSrc":"3478:5:66","nodeType":"YulLeave","src":"3478:5:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"3303:4:66","nodeType":"YulIdentifier","src":"3303:4:66"},{"kind":"number","nativeSrc":"3309:2:66","nodeType":"YulLiteral","src":"3309:2:66","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"3300:2:66","nodeType":"YulIdentifier","src":"3300:2:66"},"nativeSrc":"3300:12:66","nodeType":"YulFunctionCall","src":"3300:12:66"},{"arguments":[{"name":"exponent","nativeSrc":"3317:8:66","nodeType":"YulIdentifier","src":"3317:8:66"},{"kind":"number","nativeSrc":"3327:2:66","nodeType":"YulLiteral","src":"3327:2:66","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"3314:2:66","nodeType":"YulIdentifier","src":"3314:2:66"},"nativeSrc":"3314:16:66","nodeType":"YulFunctionCall","src":"3314:16:66"}],"functionName":{"name":"and","nativeSrc":"3296:3:66","nodeType":"YulIdentifier","src":"3296:3:66"},"nativeSrc":"3296:35:66","nodeType":"YulFunctionCall","src":"3296:35:66"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"3340:4:66","nodeType":"YulIdentifier","src":"3340:4:66"},{"kind":"number","nativeSrc":"3346:3:66","nodeType":"YulLiteral","src":"3346:3:66","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"3337:2:66","nodeType":"YulIdentifier","src":"3337:2:66"},"nativeSrc":"3337:13:66","nodeType":"YulFunctionCall","src":"3337:13:66"},{"arguments":[{"name":"exponent","nativeSrc":"3355:8:66","nodeType":"YulIdentifier","src":"3355:8:66"},{"kind":"number","nativeSrc":"3365:2:66","nodeType":"YulLiteral","src":"3365:2:66","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"3352:2:66","nodeType":"YulIdentifier","src":"3352:2:66"},"nativeSrc":"3352:16:66","nodeType":"YulFunctionCall","src":"3352:16:66"}],"functionName":{"name":"and","nativeSrc":"3333:3:66","nodeType":"YulIdentifier","src":"3333:3:66"},"nativeSrc":"3333:36:66","nodeType":"YulFunctionCall","src":"3333:36:66"}],"functionName":{"name":"or","nativeSrc":"3293:2:66","nodeType":"YulIdentifier","src":"3293:2:66"},"nativeSrc":"3293:77:66","nodeType":"YulFunctionCall","src":"3293:77:66"},"nativeSrc":"3290:203:66","nodeType":"YulIf","src":"3290:203:66"},{"nativeSrc":"3502:65:66","nodeType":"YulVariableDeclaration","src":"3502:65:66","value":{"arguments":[{"name":"base","nativeSrc":"3544:4:66","nodeType":"YulIdentifier","src":"3544:4:66"},{"name":"exponent","nativeSrc":"3550:8:66","nodeType":"YulIdentifier","src":"3550:8:66"},{"arguments":[{"kind":"number","nativeSrc":"3564:1:66","nodeType":"YulLiteral","src":"3564:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"3560:3:66","nodeType":"YulIdentifier","src":"3560:3:66"},"nativeSrc":"3560:6:66","nodeType":"YulFunctionCall","src":"3560:6:66"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"3525:18:66","nodeType":"YulIdentifier","src":"3525:18:66"},"nativeSrc":"3525:42:66","nodeType":"YulFunctionCall","src":"3525:42:66"},"variables":[{"name":"power_1","nativeSrc":"3506:7:66","nodeType":"YulTypedName","src":"3506:7:66","type":""},{"name":"base_1","nativeSrc":"3515:6:66","nodeType":"YulTypedName","src":"3515:6:66","type":""}]},{"body":{"nativeSrc":"3612:22:66","nodeType":"YulBlock","src":"3612:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"3614:16:66","nodeType":"YulIdentifier","src":"3614:16:66"},"nativeSrc":"3614:18:66","nodeType":"YulFunctionCall","src":"3614:18:66"},"nativeSrc":"3614:18:66","nodeType":"YulExpressionStatement","src":"3614:18:66"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"3582:7:66","nodeType":"YulIdentifier","src":"3582:7:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3599:1:66","nodeType":"YulLiteral","src":"3599:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"3595:3:66","nodeType":"YulIdentifier","src":"3595:3:66"},"nativeSrc":"3595:6:66","nodeType":"YulFunctionCall","src":"3595:6:66"},{"name":"base_1","nativeSrc":"3603:6:66","nodeType":"YulIdentifier","src":"3603:6:66"}],"functionName":{"name":"div","nativeSrc":"3591:3:66","nodeType":"YulIdentifier","src":"3591:3:66"},"nativeSrc":"3591:19:66","nodeType":"YulFunctionCall","src":"3591:19:66"}],"functionName":{"name":"gt","nativeSrc":"3579:2:66","nodeType":"YulIdentifier","src":"3579:2:66"},"nativeSrc":"3579:32:66","nodeType":"YulFunctionCall","src":"3579:32:66"},"nativeSrc":"3576:58:66","nodeType":"YulIf","src":"3576:58:66"},{"nativeSrc":"3643:29:66","nodeType":"YulAssignment","src":"3643:29:66","value":{"arguments":[{"name":"power_1","nativeSrc":"3656:7:66","nodeType":"YulIdentifier","src":"3656:7:66"},{"name":"base_1","nativeSrc":"3665:6:66","nodeType":"YulIdentifier","src":"3665:6:66"}],"functionName":{"name":"mul","nativeSrc":"3652:3:66","nodeType":"YulIdentifier","src":"3652:3:66"},"nativeSrc":"3652:20:66","nodeType":"YulFunctionCall","src":"3652:20:66"},"variableNames":[{"name":"power","nativeSrc":"3643:5:66","nodeType":"YulIdentifier","src":"3643:5:66"}]}]},"name":"checked_exp_unsigned","nativeSrc":"2776:902:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"2806:4:66","nodeType":"YulTypedName","src":"2806:4:66","type":""},{"name":"exponent","nativeSrc":"2812:8:66","nodeType":"YulTypedName","src":"2812:8:66","type":""}],"returnVariables":[{"name":"power","nativeSrc":"2825:5:66","nodeType":"YulTypedName","src":"2825:5:66","type":""}],"src":"2776:902:66"},{"body":{"nativeSrc":"3751:72:66","nodeType":"YulBlock","src":"3751:72:66","statements":[{"nativeSrc":"3761:56:66","nodeType":"YulAssignment","src":"3761:56:66","value":{"arguments":[{"name":"base","nativeSrc":"3791:4:66","nodeType":"YulIdentifier","src":"3791:4:66"},{"arguments":[{"name":"exponent","nativeSrc":"3801:8:66","nodeType":"YulIdentifier","src":"3801:8:66"},{"kind":"number","nativeSrc":"3811:4:66","nodeType":"YulLiteral","src":"3811:4:66","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"3797:3:66","nodeType":"YulIdentifier","src":"3797:3:66"},"nativeSrc":"3797:19:66","nodeType":"YulFunctionCall","src":"3797:19:66"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"3770:20:66","nodeType":"YulIdentifier","src":"3770:20:66"},"nativeSrc":"3770:47:66","nodeType":"YulFunctionCall","src":"3770:47:66"},"variableNames":[{"name":"power","nativeSrc":"3761:5:66","nodeType":"YulIdentifier","src":"3761:5:66"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"3683:140:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"3722:4:66","nodeType":"YulTypedName","src":"3722:4:66","type":""},{"name":"exponent","nativeSrc":"3728:8:66","nodeType":"YulTypedName","src":"3728:8:66","type":""}],"returnVariables":[{"name":"power","nativeSrc":"3741:5:66","nodeType":"YulTypedName","src":"3741:5:66","type":""}],"src":"3683:140:66"},{"body":{"nativeSrc":"3883:325:66","nodeType":"YulBlock","src":"3883:325:66","statements":[{"nativeSrc":"3893:22:66","nodeType":"YulAssignment","src":"3893:22:66","value":{"arguments":[{"kind":"number","nativeSrc":"3907:1:66","nodeType":"YulLiteral","src":"3907:1:66","type":"","value":"1"},{"name":"data","nativeSrc":"3910:4:66","nodeType":"YulIdentifier","src":"3910:4:66"}],"functionName":{"name":"shr","nativeSrc":"3903:3:66","nodeType":"YulIdentifier","src":"3903:3:66"},"nativeSrc":"3903:12:66","nodeType":"YulFunctionCall","src":"3903:12:66"},"variableNames":[{"name":"length","nativeSrc":"3893:6:66","nodeType":"YulIdentifier","src":"3893:6:66"}]},{"nativeSrc":"3924:38:66","nodeType":"YulVariableDeclaration","src":"3924:38:66","value":{"arguments":[{"name":"data","nativeSrc":"3954:4:66","nodeType":"YulIdentifier","src":"3954:4:66"},{"kind":"number","nativeSrc":"3960:1:66","nodeType":"YulLiteral","src":"3960:1:66","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"3950:3:66","nodeType":"YulIdentifier","src":"3950:3:66"},"nativeSrc":"3950:12:66","nodeType":"YulFunctionCall","src":"3950:12:66"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"3928:18:66","nodeType":"YulTypedName","src":"3928:18:66","type":""}]},{"body":{"nativeSrc":"4001:31:66","nodeType":"YulBlock","src":"4001:31:66","statements":[{"nativeSrc":"4003:27:66","nodeType":"YulAssignment","src":"4003:27:66","value":{"arguments":[{"name":"length","nativeSrc":"4017:6:66","nodeType":"YulIdentifier","src":"4017:6:66"},{"kind":"number","nativeSrc":"4025:4:66","nodeType":"YulLiteral","src":"4025:4:66","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"4013:3:66","nodeType":"YulIdentifier","src":"4013:3:66"},"nativeSrc":"4013:17:66","nodeType":"YulFunctionCall","src":"4013:17:66"},"variableNames":[{"name":"length","nativeSrc":"4003:6:66","nodeType":"YulIdentifier","src":"4003:6:66"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"3981:18:66","nodeType":"YulIdentifier","src":"3981:18:66"}],"functionName":{"name":"iszero","nativeSrc":"3974:6:66","nodeType":"YulIdentifier","src":"3974:6:66"},"nativeSrc":"3974:26:66","nodeType":"YulFunctionCall","src":"3974:26:66"},"nativeSrc":"3971:61:66","nodeType":"YulIf","src":"3971:61:66"},{"body":{"nativeSrc":"4091:111:66","nodeType":"YulBlock","src":"4091:111:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4112:1:66","nodeType":"YulLiteral","src":"4112:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4119:3:66","nodeType":"YulLiteral","src":"4119:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"4124:10:66","nodeType":"YulLiteral","src":"4124:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4115:3:66","nodeType":"YulIdentifier","src":"4115:3:66"},"nativeSrc":"4115:20:66","nodeType":"YulFunctionCall","src":"4115:20:66"}],"functionName":{"name":"mstore","nativeSrc":"4105:6:66","nodeType":"YulIdentifier","src":"4105:6:66"},"nativeSrc":"4105:31:66","nodeType":"YulFunctionCall","src":"4105:31:66"},"nativeSrc":"4105:31:66","nodeType":"YulExpressionStatement","src":"4105:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4156:1:66","nodeType":"YulLiteral","src":"4156:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"4159:4:66","nodeType":"YulLiteral","src":"4159:4:66","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"4149:6:66","nodeType":"YulIdentifier","src":"4149:6:66"},"nativeSrc":"4149:15:66","nodeType":"YulFunctionCall","src":"4149:15:66"},"nativeSrc":"4149:15:66","nodeType":"YulExpressionStatement","src":"4149:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4184:1:66","nodeType":"YulLiteral","src":"4184:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4187:4:66","nodeType":"YulLiteral","src":"4187:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4177:6:66","nodeType":"YulIdentifier","src":"4177:6:66"},"nativeSrc":"4177:15:66","nodeType":"YulFunctionCall","src":"4177:15:66"},"nativeSrc":"4177:15:66","nodeType":"YulExpressionStatement","src":"4177:15:66"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"4047:18:66","nodeType":"YulIdentifier","src":"4047:18:66"},{"arguments":[{"name":"length","nativeSrc":"4070:6:66","nodeType":"YulIdentifier","src":"4070:6:66"},{"kind":"number","nativeSrc":"4078:2:66","nodeType":"YulLiteral","src":"4078:2:66","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"4067:2:66","nodeType":"YulIdentifier","src":"4067:2:66"},"nativeSrc":"4067:14:66","nodeType":"YulFunctionCall","src":"4067:14:66"}],"functionName":{"name":"eq","nativeSrc":"4044:2:66","nodeType":"YulIdentifier","src":"4044:2:66"},"nativeSrc":"4044:38:66","nodeType":"YulFunctionCall","src":"4044:38:66"},"nativeSrc":"4041:161:66","nodeType":"YulIf","src":"4041:161:66"}]},"name":"extract_byte_array_length","nativeSrc":"3828:380:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"3863:4:66","nodeType":"YulTypedName","src":"3863:4:66","type":""}],"returnVariables":[{"name":"length","nativeSrc":"3872:6:66","nodeType":"YulTypedName","src":"3872:6:66","type":""}],"src":"3828:380:66"},{"body":{"nativeSrc":"4269:65:66","nodeType":"YulBlock","src":"4269:65:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4286:1:66","nodeType":"YulLiteral","src":"4286:1:66","type":"","value":"0"},{"name":"ptr","nativeSrc":"4289:3:66","nodeType":"YulIdentifier","src":"4289:3:66"}],"functionName":{"name":"mstore","nativeSrc":"4279:6:66","nodeType":"YulIdentifier","src":"4279:6:66"},"nativeSrc":"4279:14:66","nodeType":"YulFunctionCall","src":"4279:14:66"},"nativeSrc":"4279:14:66","nodeType":"YulExpressionStatement","src":"4279:14:66"},{"nativeSrc":"4302:26:66","nodeType":"YulAssignment","src":"4302:26:66","value":{"arguments":[{"kind":"number","nativeSrc":"4320:1:66","nodeType":"YulLiteral","src":"4320:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4323:4:66","nodeType":"YulLiteral","src":"4323:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"4310:9:66","nodeType":"YulIdentifier","src":"4310:9:66"},"nativeSrc":"4310:18:66","nodeType":"YulFunctionCall","src":"4310:18:66"},"variableNames":[{"name":"data","nativeSrc":"4302:4:66","nodeType":"YulIdentifier","src":"4302:4:66"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"4213:121:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"4252:3:66","nodeType":"YulTypedName","src":"4252:3:66","type":""}],"returnVariables":[{"name":"data","nativeSrc":"4260:4:66","nodeType":"YulTypedName","src":"4260:4:66","type":""}],"src":"4213:121:66"},{"body":{"nativeSrc":"4420:437:66","nodeType":"YulBlock","src":"4420:437:66","statements":[{"body":{"nativeSrc":"4453:398:66","nodeType":"YulBlock","src":"4453:398:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4474:1:66","nodeType":"YulLiteral","src":"4474:1:66","type":"","value":"0"},{"name":"array","nativeSrc":"4477:5:66","nodeType":"YulIdentifier","src":"4477:5:66"}],"functionName":{"name":"mstore","nativeSrc":"4467:6:66","nodeType":"YulIdentifier","src":"4467:6:66"},"nativeSrc":"4467:16:66","nodeType":"YulFunctionCall","src":"4467:16:66"},"nativeSrc":"4467:16:66","nodeType":"YulExpressionStatement","src":"4467:16:66"},{"nativeSrc":"4496:30:66","nodeType":"YulVariableDeclaration","src":"4496:30:66","value":{"arguments":[{"kind":"number","nativeSrc":"4518:1:66","nodeType":"YulLiteral","src":"4518:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4521:4:66","nodeType":"YulLiteral","src":"4521:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"4508:9:66","nodeType":"YulIdentifier","src":"4508:9:66"},"nativeSrc":"4508:18:66","nodeType":"YulFunctionCall","src":"4508:18:66"},"variables":[{"name":"data","nativeSrc":"4500:4:66","nodeType":"YulTypedName","src":"4500:4:66","type":""}]},{"nativeSrc":"4539:57:66","nodeType":"YulVariableDeclaration","src":"4539:57:66","value":{"arguments":[{"name":"data","nativeSrc":"4562:4:66","nodeType":"YulIdentifier","src":"4562:4:66"},{"arguments":[{"kind":"number","nativeSrc":"4572:1:66","nodeType":"YulLiteral","src":"4572:1:66","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"4579:10:66","nodeType":"YulIdentifier","src":"4579:10:66"},{"kind":"number","nativeSrc":"4591:2:66","nodeType":"YulLiteral","src":"4591:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"4575:3:66","nodeType":"YulIdentifier","src":"4575:3:66"},"nativeSrc":"4575:19:66","nodeType":"YulFunctionCall","src":"4575:19:66"}],"functionName":{"name":"shr","nativeSrc":"4568:3:66","nodeType":"YulIdentifier","src":"4568:3:66"},"nativeSrc":"4568:27:66","nodeType":"YulFunctionCall","src":"4568:27:66"}],"functionName":{"name":"add","nativeSrc":"4558:3:66","nodeType":"YulIdentifier","src":"4558:3:66"},"nativeSrc":"4558:38:66","nodeType":"YulFunctionCall","src":"4558:38:66"},"variables":[{"name":"deleteStart","nativeSrc":"4543:11:66","nodeType":"YulTypedName","src":"4543:11:66","type":""}]},{"body":{"nativeSrc":"4633:23:66","nodeType":"YulBlock","src":"4633:23:66","statements":[{"nativeSrc":"4635:19:66","nodeType":"YulAssignment","src":"4635:19:66","value":{"name":"data","nativeSrc":"4650:4:66","nodeType":"YulIdentifier","src":"4650:4:66"},"variableNames":[{"name":"deleteStart","nativeSrc":"4635:11:66","nodeType":"YulIdentifier","src":"4635:11:66"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"4615:10:66","nodeType":"YulIdentifier","src":"4615:10:66"},{"kind":"number","nativeSrc":"4627:4:66","nodeType":"YulLiteral","src":"4627:4:66","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"4612:2:66","nodeType":"YulIdentifier","src":"4612:2:66"},"nativeSrc":"4612:20:66","nodeType":"YulFunctionCall","src":"4612:20:66"},"nativeSrc":"4609:47:66","nodeType":"YulIf","src":"4609:47:66"},{"nativeSrc":"4669:41:66","nodeType":"YulVariableDeclaration","src":"4669:41:66","value":{"arguments":[{"name":"data","nativeSrc":"4683:4:66","nodeType":"YulIdentifier","src":"4683:4:66"},{"arguments":[{"kind":"number","nativeSrc":"4693:1:66","nodeType":"YulLiteral","src":"4693:1:66","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"4700:3:66","nodeType":"YulIdentifier","src":"4700:3:66"},{"kind":"number","nativeSrc":"4705:2:66","nodeType":"YulLiteral","src":"4705:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"4696:3:66","nodeType":"YulIdentifier","src":"4696:3:66"},"nativeSrc":"4696:12:66","nodeType":"YulFunctionCall","src":"4696:12:66"}],"functionName":{"name":"shr","nativeSrc":"4689:3:66","nodeType":"YulIdentifier","src":"4689:3:66"},"nativeSrc":"4689:20:66","nodeType":"YulFunctionCall","src":"4689:20:66"}],"functionName":{"name":"add","nativeSrc":"4679:3:66","nodeType":"YulIdentifier","src":"4679:3:66"},"nativeSrc":"4679:31:66","nodeType":"YulFunctionCall","src":"4679:31:66"},"variables":[{"name":"_1","nativeSrc":"4673:2:66","nodeType":"YulTypedName","src":"4673:2:66","type":""}]},{"nativeSrc":"4723:24:66","nodeType":"YulVariableDeclaration","src":"4723:24:66","value":{"name":"deleteStart","nativeSrc":"4736:11:66","nodeType":"YulIdentifier","src":"4736:11:66"},"variables":[{"name":"start","nativeSrc":"4727:5:66","nodeType":"YulTypedName","src":"4727:5:66","type":""}]},{"body":{"nativeSrc":"4821:20:66","nodeType":"YulBlock","src":"4821:20:66","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"4830:5:66","nodeType":"YulIdentifier","src":"4830:5:66"},{"kind":"number","nativeSrc":"4837:1:66","nodeType":"YulLiteral","src":"4837:1:66","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"4823:6:66","nodeType":"YulIdentifier","src":"4823:6:66"},"nativeSrc":"4823:16:66","nodeType":"YulFunctionCall","src":"4823:16:66"},"nativeSrc":"4823:16:66","nodeType":"YulExpressionStatement","src":"4823:16:66"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"4771:5:66","nodeType":"YulIdentifier","src":"4771:5:66"},{"name":"_1","nativeSrc":"4778:2:66","nodeType":"YulIdentifier","src":"4778:2:66"}],"functionName":{"name":"lt","nativeSrc":"4768:2:66","nodeType":"YulIdentifier","src":"4768:2:66"},"nativeSrc":"4768:13:66","nodeType":"YulFunctionCall","src":"4768:13:66"},"nativeSrc":"4760:81:66","nodeType":"YulForLoop","post":{"nativeSrc":"4782:26:66","nodeType":"YulBlock","src":"4782:26:66","statements":[{"nativeSrc":"4784:22:66","nodeType":"YulAssignment","src":"4784:22:66","value":{"arguments":[{"name":"start","nativeSrc":"4797:5:66","nodeType":"YulIdentifier","src":"4797:5:66"},{"kind":"number","nativeSrc":"4804:1:66","nodeType":"YulLiteral","src":"4804:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"4793:3:66","nodeType":"YulIdentifier","src":"4793:3:66"},"nativeSrc":"4793:13:66","nodeType":"YulFunctionCall","src":"4793:13:66"},"variableNames":[{"name":"start","nativeSrc":"4784:5:66","nodeType":"YulIdentifier","src":"4784:5:66"}]}]},"pre":{"nativeSrc":"4764:3:66","nodeType":"YulBlock","src":"4764:3:66","statements":[]},"src":"4760:81:66"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"4436:3:66","nodeType":"YulIdentifier","src":"4436:3:66"},{"kind":"number","nativeSrc":"4441:2:66","nodeType":"YulLiteral","src":"4441:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"4433:2:66","nodeType":"YulIdentifier","src":"4433:2:66"},"nativeSrc":"4433:11:66","nodeType":"YulFunctionCall","src":"4433:11:66"},"nativeSrc":"4430:421:66","nodeType":"YulIf","src":"4430:421:66"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"4339:518:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"4392:5:66","nodeType":"YulTypedName","src":"4392:5:66","type":""},{"name":"len","nativeSrc":"4399:3:66","nodeType":"YulTypedName","src":"4399:3:66","type":""},{"name":"startIndex","nativeSrc":"4404:10:66","nodeType":"YulTypedName","src":"4404:10:66","type":""}],"src":"4339:518:66"},{"body":{"nativeSrc":"4947:81:66","nodeType":"YulBlock","src":"4947:81:66","statements":[{"nativeSrc":"4957:65:66","nodeType":"YulAssignment","src":"4957:65:66","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"4972:4:66","nodeType":"YulIdentifier","src":"4972:4:66"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4990:1:66","nodeType":"YulLiteral","src":"4990:1:66","type":"","value":"3"},{"name":"len","nativeSrc":"4993:3:66","nodeType":"YulIdentifier","src":"4993:3:66"}],"functionName":{"name":"shl","nativeSrc":"4986:3:66","nodeType":"YulIdentifier","src":"4986:3:66"},"nativeSrc":"4986:11:66","nodeType":"YulFunctionCall","src":"4986:11:66"},{"arguments":[{"kind":"number","nativeSrc":"5003:1:66","nodeType":"YulLiteral","src":"5003:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"4999:3:66","nodeType":"YulIdentifier","src":"4999:3:66"},"nativeSrc":"4999:6:66","nodeType":"YulFunctionCall","src":"4999:6:66"}],"functionName":{"name":"shr","nativeSrc":"4982:3:66","nodeType":"YulIdentifier","src":"4982:3:66"},"nativeSrc":"4982:24:66","nodeType":"YulFunctionCall","src":"4982:24:66"}],"functionName":{"name":"not","nativeSrc":"4978:3:66","nodeType":"YulIdentifier","src":"4978:3:66"},"nativeSrc":"4978:29:66","nodeType":"YulFunctionCall","src":"4978:29:66"}],"functionName":{"name":"and","nativeSrc":"4968:3:66","nodeType":"YulIdentifier","src":"4968:3:66"},"nativeSrc":"4968:40:66","nodeType":"YulFunctionCall","src":"4968:40:66"},{"arguments":[{"kind":"number","nativeSrc":"5014:1:66","nodeType":"YulLiteral","src":"5014:1:66","type":"","value":"1"},{"name":"len","nativeSrc":"5017:3:66","nodeType":"YulIdentifier","src":"5017:3:66"}],"functionName":{"name":"shl","nativeSrc":"5010:3:66","nodeType":"YulIdentifier","src":"5010:3:66"},"nativeSrc":"5010:11:66","nodeType":"YulFunctionCall","src":"5010:11:66"}],"functionName":{"name":"or","nativeSrc":"4965:2:66","nodeType":"YulIdentifier","src":"4965:2:66"},"nativeSrc":"4965:57:66","nodeType":"YulFunctionCall","src":"4965:57:66"},"variableNames":[{"name":"used","nativeSrc":"4957:4:66","nodeType":"YulIdentifier","src":"4957:4:66"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"4862:166:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"4924:4:66","nodeType":"YulTypedName","src":"4924:4:66","type":""},{"name":"len","nativeSrc":"4930:3:66","nodeType":"YulTypedName","src":"4930:3:66","type":""}],"returnVariables":[{"name":"used","nativeSrc":"4938:4:66","nodeType":"YulTypedName","src":"4938:4:66","type":""}],"src":"4862:166:66"},{"body":{"nativeSrc":"5129:1203:66","nodeType":"YulBlock","src":"5129:1203:66","statements":[{"nativeSrc":"5139:24:66","nodeType":"YulVariableDeclaration","src":"5139:24:66","value":{"arguments":[{"name":"src","nativeSrc":"5159:3:66","nodeType":"YulIdentifier","src":"5159:3:66"}],"functionName":{"name":"mload","nativeSrc":"5153:5:66","nodeType":"YulIdentifier","src":"5153:5:66"},"nativeSrc":"5153:10:66","nodeType":"YulFunctionCall","src":"5153:10:66"},"variables":[{"name":"newLen","nativeSrc":"5143:6:66","nodeType":"YulTypedName","src":"5143:6:66","type":""}]},{"body":{"nativeSrc":"5206:22:66","nodeType":"YulBlock","src":"5206:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"5208:16:66","nodeType":"YulIdentifier","src":"5208:16:66"},"nativeSrc":"5208:18:66","nodeType":"YulFunctionCall","src":"5208:18:66"},"nativeSrc":"5208:18:66","nodeType":"YulExpressionStatement","src":"5208:18:66"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"5178:6:66","nodeType":"YulIdentifier","src":"5178:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5194:2:66","nodeType":"YulLiteral","src":"5194:2:66","type":"","value":"64"},{"kind":"number","nativeSrc":"5198:1:66","nodeType":"YulLiteral","src":"5198:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5190:3:66","nodeType":"YulIdentifier","src":"5190:3:66"},"nativeSrc":"5190:10:66","nodeType":"YulFunctionCall","src":"5190:10:66"},{"kind":"number","nativeSrc":"5202:1:66","nodeType":"YulLiteral","src":"5202:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5186:3:66","nodeType":"YulIdentifier","src":"5186:3:66"},"nativeSrc":"5186:18:66","nodeType":"YulFunctionCall","src":"5186:18:66"}],"functionName":{"name":"gt","nativeSrc":"5175:2:66","nodeType":"YulIdentifier","src":"5175:2:66"},"nativeSrc":"5175:30:66","nodeType":"YulFunctionCall","src":"5175:30:66"},"nativeSrc":"5172:56:66","nodeType":"YulIf","src":"5172:56:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"5281:4:66","nodeType":"YulIdentifier","src":"5281:4:66"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"5319:4:66","nodeType":"YulIdentifier","src":"5319:4:66"}],"functionName":{"name":"sload","nativeSrc":"5313:5:66","nodeType":"YulIdentifier","src":"5313:5:66"},"nativeSrc":"5313:11:66","nodeType":"YulFunctionCall","src":"5313:11:66"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"5287:25:66","nodeType":"YulIdentifier","src":"5287:25:66"},"nativeSrc":"5287:38:66","nodeType":"YulFunctionCall","src":"5287:38:66"},{"name":"newLen","nativeSrc":"5327:6:66","nodeType":"YulIdentifier","src":"5327:6:66"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"5237:43:66","nodeType":"YulIdentifier","src":"5237:43:66"},"nativeSrc":"5237:97:66","nodeType":"YulFunctionCall","src":"5237:97:66"},"nativeSrc":"5237:97:66","nodeType":"YulExpressionStatement","src":"5237:97:66"},{"nativeSrc":"5343:18:66","nodeType":"YulVariableDeclaration","src":"5343:18:66","value":{"kind":"number","nativeSrc":"5360:1:66","nodeType":"YulLiteral","src":"5360:1:66","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"5347:9:66","nodeType":"YulTypedName","src":"5347:9:66","type":""}]},{"nativeSrc":"5370:17:66","nodeType":"YulAssignment","src":"5370:17:66","value":{"kind":"number","nativeSrc":"5383:4:66","nodeType":"YulLiteral","src":"5383:4:66","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"5370:9:66","nodeType":"YulIdentifier","src":"5370:9:66"}]},{"cases":[{"body":{"nativeSrc":"5433:642:66","nodeType":"YulBlock","src":"5433:642:66","statements":[{"nativeSrc":"5447:35:66","nodeType":"YulVariableDeclaration","src":"5447:35:66","value":{"arguments":[{"name":"newLen","nativeSrc":"5466:6:66","nodeType":"YulIdentifier","src":"5466:6:66"},{"arguments":[{"kind":"number","nativeSrc":"5478:2:66","nodeType":"YulLiteral","src":"5478:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"5474:3:66","nodeType":"YulIdentifier","src":"5474:3:66"},"nativeSrc":"5474:7:66","nodeType":"YulFunctionCall","src":"5474:7:66"}],"functionName":{"name":"and","nativeSrc":"5462:3:66","nodeType":"YulIdentifier","src":"5462:3:66"},"nativeSrc":"5462:20:66","nodeType":"YulFunctionCall","src":"5462:20:66"},"variables":[{"name":"loopEnd","nativeSrc":"5451:7:66","nodeType":"YulTypedName","src":"5451:7:66","type":""}]},{"nativeSrc":"5495:49:66","nodeType":"YulVariableDeclaration","src":"5495:49:66","value":{"arguments":[{"name":"slot","nativeSrc":"5539:4:66","nodeType":"YulIdentifier","src":"5539:4:66"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"5509:29:66","nodeType":"YulIdentifier","src":"5509:29:66"},"nativeSrc":"5509:35:66","nodeType":"YulFunctionCall","src":"5509:35:66"},"variables":[{"name":"dstPtr","nativeSrc":"5499:6:66","nodeType":"YulTypedName","src":"5499:6:66","type":""}]},{"nativeSrc":"5557:10:66","nodeType":"YulVariableDeclaration","src":"5557:10:66","value":{"kind":"number","nativeSrc":"5566:1:66","nodeType":"YulLiteral","src":"5566:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"5561:1:66","nodeType":"YulTypedName","src":"5561:1:66","type":""}]},{"body":{"nativeSrc":"5637:165:66","nodeType":"YulBlock","src":"5637:165:66","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"5662:6:66","nodeType":"YulIdentifier","src":"5662:6:66"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"5680:3:66","nodeType":"YulIdentifier","src":"5680:3:66"},{"name":"srcOffset","nativeSrc":"5685:9:66","nodeType":"YulIdentifier","src":"5685:9:66"}],"functionName":{"name":"add","nativeSrc":"5676:3:66","nodeType":"YulIdentifier","src":"5676:3:66"},"nativeSrc":"5676:19:66","nodeType":"YulFunctionCall","src":"5676:19:66"}],"functionName":{"name":"mload","nativeSrc":"5670:5:66","nodeType":"YulIdentifier","src":"5670:5:66"},"nativeSrc":"5670:26:66","nodeType":"YulFunctionCall","src":"5670:26:66"}],"functionName":{"name":"sstore","nativeSrc":"5655:6:66","nodeType":"YulIdentifier","src":"5655:6:66"},"nativeSrc":"5655:42:66","nodeType":"YulFunctionCall","src":"5655:42:66"},"nativeSrc":"5655:42:66","nodeType":"YulExpressionStatement","src":"5655:42:66"},{"nativeSrc":"5714:24:66","nodeType":"YulAssignment","src":"5714:24:66","value":{"arguments":[{"name":"dstPtr","nativeSrc":"5728:6:66","nodeType":"YulIdentifier","src":"5728:6:66"},{"kind":"number","nativeSrc":"5736:1:66","nodeType":"YulLiteral","src":"5736:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"5724:3:66","nodeType":"YulIdentifier","src":"5724:3:66"},"nativeSrc":"5724:14:66","nodeType":"YulFunctionCall","src":"5724:14:66"},"variableNames":[{"name":"dstPtr","nativeSrc":"5714:6:66","nodeType":"YulIdentifier","src":"5714:6:66"}]},{"nativeSrc":"5755:33:66","nodeType":"YulAssignment","src":"5755:33:66","value":{"arguments":[{"name":"srcOffset","nativeSrc":"5772:9:66","nodeType":"YulIdentifier","src":"5772:9:66"},{"kind":"number","nativeSrc":"5783:4:66","nodeType":"YulLiteral","src":"5783:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5768:3:66","nodeType":"YulIdentifier","src":"5768:3:66"},"nativeSrc":"5768:20:66","nodeType":"YulFunctionCall","src":"5768:20:66"},"variableNames":[{"name":"srcOffset","nativeSrc":"5755:9:66","nodeType":"YulIdentifier","src":"5755:9:66"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"5591:1:66","nodeType":"YulIdentifier","src":"5591:1:66"},{"name":"loopEnd","nativeSrc":"5594:7:66","nodeType":"YulIdentifier","src":"5594:7:66"}],"functionName":{"name":"lt","nativeSrc":"5588:2:66","nodeType":"YulIdentifier","src":"5588:2:66"},"nativeSrc":"5588:14:66","nodeType":"YulFunctionCall","src":"5588:14:66"},"nativeSrc":"5580:222:66","nodeType":"YulForLoop","post":{"nativeSrc":"5603:21:66","nodeType":"YulBlock","src":"5603:21:66","statements":[{"nativeSrc":"5605:17:66","nodeType":"YulAssignment","src":"5605:17:66","value":{"arguments":[{"name":"i","nativeSrc":"5614:1:66","nodeType":"YulIdentifier","src":"5614:1:66"},{"kind":"number","nativeSrc":"5617:4:66","nodeType":"YulLiteral","src":"5617:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5610:3:66","nodeType":"YulIdentifier","src":"5610:3:66"},"nativeSrc":"5610:12:66","nodeType":"YulFunctionCall","src":"5610:12:66"},"variableNames":[{"name":"i","nativeSrc":"5605:1:66","nodeType":"YulIdentifier","src":"5605:1:66"}]}]},"pre":{"nativeSrc":"5584:3:66","nodeType":"YulBlock","src":"5584:3:66","statements":[]},"src":"5580:222:66"},{"body":{"nativeSrc":"5850:166:66","nodeType":"YulBlock","src":"5850:166:66","statements":[{"nativeSrc":"5868:43:66","nodeType":"YulVariableDeclaration","src":"5868:43:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"5895:3:66","nodeType":"YulIdentifier","src":"5895:3:66"},{"name":"srcOffset","nativeSrc":"5900:9:66","nodeType":"YulIdentifier","src":"5900:9:66"}],"functionName":{"name":"add","nativeSrc":"5891:3:66","nodeType":"YulIdentifier","src":"5891:3:66"},"nativeSrc":"5891:19:66","nodeType":"YulFunctionCall","src":"5891:19:66"}],"functionName":{"name":"mload","nativeSrc":"5885:5:66","nodeType":"YulIdentifier","src":"5885:5:66"},"nativeSrc":"5885:26:66","nodeType":"YulFunctionCall","src":"5885:26:66"},"variables":[{"name":"lastValue","nativeSrc":"5872:9:66","nodeType":"YulTypedName","src":"5872:9:66","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"5935:6:66","nodeType":"YulIdentifier","src":"5935:6:66"},{"arguments":[{"name":"lastValue","nativeSrc":"5947:9:66","nodeType":"YulIdentifier","src":"5947:9:66"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5974:1:66","nodeType":"YulLiteral","src":"5974:1:66","type":"","value":"3"},{"name":"newLen","nativeSrc":"5977:6:66","nodeType":"YulIdentifier","src":"5977:6:66"}],"functionName":{"name":"shl","nativeSrc":"5970:3:66","nodeType":"YulIdentifier","src":"5970:3:66"},"nativeSrc":"5970:14:66","nodeType":"YulFunctionCall","src":"5970:14:66"},{"kind":"number","nativeSrc":"5986:3:66","nodeType":"YulLiteral","src":"5986:3:66","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"5966:3:66","nodeType":"YulIdentifier","src":"5966:3:66"},"nativeSrc":"5966:24:66","nodeType":"YulFunctionCall","src":"5966:24:66"},{"arguments":[{"kind":"number","nativeSrc":"5996:1:66","nodeType":"YulLiteral","src":"5996:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"5992:3:66","nodeType":"YulIdentifier","src":"5992:3:66"},"nativeSrc":"5992:6:66","nodeType":"YulFunctionCall","src":"5992:6:66"}],"functionName":{"name":"shr","nativeSrc":"5962:3:66","nodeType":"YulIdentifier","src":"5962:3:66"},"nativeSrc":"5962:37:66","nodeType":"YulFunctionCall","src":"5962:37:66"}],"functionName":{"name":"not","nativeSrc":"5958:3:66","nodeType":"YulIdentifier","src":"5958:3:66"},"nativeSrc":"5958:42:66","nodeType":"YulFunctionCall","src":"5958:42:66"}],"functionName":{"name":"and","nativeSrc":"5943:3:66","nodeType":"YulIdentifier","src":"5943:3:66"},"nativeSrc":"5943:58:66","nodeType":"YulFunctionCall","src":"5943:58:66"}],"functionName":{"name":"sstore","nativeSrc":"5928:6:66","nodeType":"YulIdentifier","src":"5928:6:66"},"nativeSrc":"5928:74:66","nodeType":"YulFunctionCall","src":"5928:74:66"},"nativeSrc":"5928:74:66","nodeType":"YulExpressionStatement","src":"5928:74:66"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"5821:7:66","nodeType":"YulIdentifier","src":"5821:7:66"},{"name":"newLen","nativeSrc":"5830:6:66","nodeType":"YulIdentifier","src":"5830:6:66"}],"functionName":{"name":"lt","nativeSrc":"5818:2:66","nodeType":"YulIdentifier","src":"5818:2:66"},"nativeSrc":"5818:19:66","nodeType":"YulFunctionCall","src":"5818:19:66"},"nativeSrc":"5815:201:66","nodeType":"YulIf","src":"5815:201:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"6036:4:66","nodeType":"YulIdentifier","src":"6036:4:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6050:1:66","nodeType":"YulLiteral","src":"6050:1:66","type":"","value":"1"},{"name":"newLen","nativeSrc":"6053:6:66","nodeType":"YulIdentifier","src":"6053:6:66"}],"functionName":{"name":"shl","nativeSrc":"6046:3:66","nodeType":"YulIdentifier","src":"6046:3:66"},"nativeSrc":"6046:14:66","nodeType":"YulFunctionCall","src":"6046:14:66"},{"kind":"number","nativeSrc":"6062:1:66","nodeType":"YulLiteral","src":"6062:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6042:3:66","nodeType":"YulIdentifier","src":"6042:3:66"},"nativeSrc":"6042:22:66","nodeType":"YulFunctionCall","src":"6042:22:66"}],"functionName":{"name":"sstore","nativeSrc":"6029:6:66","nodeType":"YulIdentifier","src":"6029:6:66"},"nativeSrc":"6029:36:66","nodeType":"YulFunctionCall","src":"6029:36:66"},"nativeSrc":"6029:36:66","nodeType":"YulExpressionStatement","src":"6029:36:66"}]},"nativeSrc":"5426:649:66","nodeType":"YulCase","src":"5426:649:66","value":{"kind":"number","nativeSrc":"5431:1:66","nodeType":"YulLiteral","src":"5431:1:66","type":"","value":"1"}},{"body":{"nativeSrc":"6092:234:66","nodeType":"YulBlock","src":"6092:234:66","statements":[{"nativeSrc":"6106:14:66","nodeType":"YulVariableDeclaration","src":"6106:14:66","value":{"kind":"number","nativeSrc":"6119:1:66","nodeType":"YulLiteral","src":"6119:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"6110:5:66","nodeType":"YulTypedName","src":"6110:5:66","type":""}]},{"body":{"nativeSrc":"6155:67:66","nodeType":"YulBlock","src":"6155:67:66","statements":[{"nativeSrc":"6173:35:66","nodeType":"YulAssignment","src":"6173:35:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"6192:3:66","nodeType":"YulIdentifier","src":"6192:3:66"},{"name":"srcOffset","nativeSrc":"6197:9:66","nodeType":"YulIdentifier","src":"6197:9:66"}],"functionName":{"name":"add","nativeSrc":"6188:3:66","nodeType":"YulIdentifier","src":"6188:3:66"},"nativeSrc":"6188:19:66","nodeType":"YulFunctionCall","src":"6188:19:66"}],"functionName":{"name":"mload","nativeSrc":"6182:5:66","nodeType":"YulIdentifier","src":"6182:5:66"},"nativeSrc":"6182:26:66","nodeType":"YulFunctionCall","src":"6182:26:66"},"variableNames":[{"name":"value","nativeSrc":"6173:5:66","nodeType":"YulIdentifier","src":"6173:5:66"}]}]},"condition":{"name":"newLen","nativeSrc":"6136:6:66","nodeType":"YulIdentifier","src":"6136:6:66"},"nativeSrc":"6133:89:66","nodeType":"YulIf","src":"6133:89:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"6242:4:66","nodeType":"YulIdentifier","src":"6242:4:66"},{"arguments":[{"name":"value","nativeSrc":"6301:5:66","nodeType":"YulIdentifier","src":"6301:5:66"},{"name":"newLen","nativeSrc":"6308:6:66","nodeType":"YulIdentifier","src":"6308:6:66"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"6248:52:66","nodeType":"YulIdentifier","src":"6248:52:66"},"nativeSrc":"6248:67:66","nodeType":"YulFunctionCall","src":"6248:67:66"}],"functionName":{"name":"sstore","nativeSrc":"6235:6:66","nodeType":"YulIdentifier","src":"6235:6:66"},"nativeSrc":"6235:81:66","nodeType":"YulFunctionCall","src":"6235:81:66"},"nativeSrc":"6235:81:66","nodeType":"YulExpressionStatement","src":"6235:81:66"}]},"nativeSrc":"6084:242:66","nodeType":"YulCase","src":"6084:242:66","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"5406:6:66","nodeType":"YulIdentifier","src":"5406:6:66"},{"kind":"number","nativeSrc":"5414:2:66","nodeType":"YulLiteral","src":"5414:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"5403:2:66","nodeType":"YulIdentifier","src":"5403:2:66"},"nativeSrc":"5403:14:66","nodeType":"YulFunctionCall","src":"5403:14:66"},"nativeSrc":"5396:930:66","nodeType":"YulSwitch","src":"5396:930:66"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"5033:1299:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"5114:4:66","nodeType":"YulTypedName","src":"5114:4:66","type":""},{"name":"src","nativeSrc":"5120:3:66","nodeType":"YulTypedName","src":"5120:3:66","type":""}],"src":"5033:1299:66"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := mload(offset)\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(add(memPtr, i), 0x20), mload(add(add(offset, i), 0x20)))\n        }\n        mstore(add(add(memPtr, length), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n        value2 := abi_decode_address_fromMemory(add(headStart, 64))\n        value3 := abi_decode_address_fromMemory(add(headStart, 96))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint8(x, y) -> diff\n    {\n        diff := sub(and(x, 0xff), and(y, 0xff))\n        if gt(diff, 0xff) { panic_error_0x11() }\n    }\n    function checked_exp_helper(_base, exponent, max) -> power, base\n    {\n        power := 1\n        base := _base\n        for { } gt(exponent, 1) { }\n        {\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(1, exponent)\n        }\n    }\n    function checked_exp_unsigned(base, exponent) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            let _1 := 0\n            _1 := 0\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            let _2 := 0\n            _2 := 0\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent, not(0))\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, and(exponent, 0xff))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}","id":66,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60c060405234801561001057600080fd5b5060405161374438038061374483398101604081905261002f916102ab565b83838383838360128484818181818d6001600160a01b03811661006c57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61007581610181565b506001600160a01b0380831660805281166100a357604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b1580156100ea57600080fd5b505af11580156100fe573d6000803e3d6000fd5b50505050505050506101146101d160201b60201c565b60ff168360ff16101561013a576040516301e9714b60e41b815260040160405180910390fd5b61014560068461034b565b61015090600a610451565b60a0525060089150610164905083826104f0565b50600961017182826104f0565b50505050505050505050506105ae565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126101fd57600080fd5b81516001600160401b03811115610216576102166101d6565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610244576102446101d6565b60405281815283820160200185101561025c57600080fd5b60005b8281101561027b5760208186018101518383018201520161025f565b506000918101602001919091529392505050565b80516001600160a01b03811681146102a657600080fd5b919050565b600080600080608085870312156102c157600080fd5b84516001600160401b038111156102d757600080fd5b6102e3878288016101ec565b602087015190955090506001600160401b0381111561030157600080fd5b61030d878288016101ec565b93505061031c6040860161028f565b915061032a6060860161028f565b905092959194509250565b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111561036457610364610335565b92915050565b6001815b60018411156103a55780850481111561038957610389610335565b600184161561039757908102905b60019390931c92800261036e565b935093915050565b6000826103bc57506001610364565b816103c957506000610364565b81600181146103df57600281146103e957610405565b6001915050610364565b60ff8411156103fa576103fa610335565b50506001821b610364565b5060208310610133831016604e8410600b8410161715610428575081810a610364565b610435600019848461036a565b806000190482111561044957610449610335565b029392505050565b600061046060ff8416836103ad565b9392505050565b600181811c9082168061047b57607f821691505b60208210810361049b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156104eb57806000526020600020601f840160051c810160208510156104c85750805b601f840160051c820191505b818110156104e857600081556001016104d4565b50505b505050565b81516001600160401b03811115610509576105096101d6565b61051d816105178454610467565b846104a1565b6020601f82116001811461055157600083156105395750848201515b600019600385901b1c1916600184901b1784556104e8565b600084815260208120601f198516915b828110156105815787850151825560209485019460019092019101610561565b508482101561059f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05161312b6106196000396000818161064901528181611b1401528181611b890152611d8d01526000818161050801528181610a78015281816110da01528181611351015281816116bc01528181611e8501528181611fbf0152612076015261312b6000f3fe60806040526004361061025c5760003560e01c8063715018a611610144578063bb0b6a53116100b6578063d045a0dc1161007a578063d045a0dc14610780578063d424388514610793578063dd62ed3e146107b3578063f2fde38b146107f9578063fc0c546a1461048c578063ff7bd03d1461081957600080fd5b8063bb0b6a53146106df578063bc70b3541461070c578063bd815db01461072c578063c7c7f5b31461073f578063ca5eb5e11461076057600080fd5b806395d89b411161010857806395d89b4114610622578063963efcaa146106375780639f68b9641461066b578063a9059cbb1461067f578063b731ea0a1461069f578063b98bd070146106bf57600080fd5b8063715018a6146105805780637d25a05e1461059557806382413eac146105d0578063857749b0146105f05780638da5cb5b1461060457600080fd5b806323b872dd116101dd57806352ae2879116101a157806352ae28791461048c5780635535d4611461049f5780635a0dfe4d146104bf5780635e280f11146104f65780636fc1b31e1461052a57806370a082311461054a57600080fd5b806323b872dd146103dd578063313ce567146103fd5780633400288b1461041f5780633b6f743b1461043f57806340c10f191461046c57600080fd5b8063134d4f2511610224578063134d4f2514610338578063156a0d0f1461036057806317442b701461038757806318160ddd146103a95780631f5e1334146103c857600080fd5b806306fdde0314610261578063095ea7b31461028c5780630d35b415146102bc578063111ecdad146102eb57806313137d6514610323575b600080fd5b34801561026d57600080fd5b50610276610839565b60405161028391906121ee565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004612216565b6108cb565b6040519015158152602001610283565b3480156102c857600080fd5b506102dc6102d736600461225a565b6108e5565b6040516102839392919061228e565b3480156102f757600080fd5b5060045461030b906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b610336610331366004612385565b610a76565b005b34801561034457600080fd5b5061034d600281565b60405161ffff9091168152602001610283565b34801561036c57600080fd5b506040805162b9270b60e21b81526001602082015201610283565b34801561039357600080fd5b5060408051600181526002602082015201610283565b3480156103b557600080fd5b506007545b604051908152602001610283565b3480156103d457600080fd5b5061034d600181565b3480156103e957600080fd5b506102ac6103f8366004612426565b610b36565b34801561040957600080fd5b5060125b60405160ff9091168152602001610283565b34801561042b57600080fd5b5061033661043a366004612480565b610b5c565b34801561044b57600080fd5b5061045f61045a3660046124aa565b610b72565b60405161028391906124fb565b34801561047857600080fd5b50610336610487366004612216565b610bd9565b34801561049857600080fd5b503061030b565b3480156104ab57600080fd5b506102766104ba366004612524565b610beb565b3480156104cb57600080fd5b506102ac6104da366004612480565b63ffffffff919091166000908152600160205260409020541490565b34801561050257600080fd5b5061030b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561053657600080fd5b50610336610545366004612557565b610c90565b34801561055657600080fd5b506103ba610565366004612557565b6001600160a01b031660009081526005602052604090205490565b34801561058c57600080fd5b50610336610ced565b3480156105a157600080fd5b506105b86105b0366004612480565b600092915050565b6040516001600160401b039091168152602001610283565b3480156105dc57600080fd5b506102ac6105eb366004612574565b610d01565b3480156105fc57600080fd5b50600661040d565b34801561061057600080fd5b506000546001600160a01b031661030b565b34801561062e57600080fd5b50610276610d16565b34801561064357600080fd5b506103ba7f000000000000000000000000000000000000000000000000000000000000000081565b34801561067757600080fd5b5060006102ac565b34801561068b57600080fd5b506102ac61069a366004612216565b610d25565b3480156106ab57600080fd5b5060025461030b906001600160a01b031681565b3480156106cb57600080fd5b506103366106da36600461261e565b610d33565b3480156106eb57600080fd5b506103ba6106fa36600461265f565b60016020526000908152604090205481565b34801561071857600080fd5b5061027661072736600461267a565b610d4d565b61033661073a36600461261e565b610ef5565b61075261074d3660046126da565b61107f565b604051610283929190612747565b34801561076c57600080fd5b5061033661077b366004612557565b6110b3565b61033661078e366004612385565b611139565b34801561079f57600080fd5b506103366107ae366004612557565b611168565b3480156107bf57600080fd5b506103ba6107ce366004612799565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561080557600080fd5b50610336610814366004612557565b6111be565b34801561082557600080fd5b506102ac6108343660046127c7565b6111fc565b606060088054610848906127e3565b80601f0160208091040260200160405190810160405280929190818152602001828054610874906127e3565b80156108c15780601f10610896576101008083540402835291602001916108c1565b820191906000526020600020905b8154815290600101906020018083116108a457829003601f168201915b5050505050905090565b6000336108d9818585611232565b60019150505b92915050565b60408051808201909152600080825260208201526060610918604051806040016040528060008152602001600081525090565b600080306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097d9190612817565b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109de9190612834565b60408051808201825284815260208082018490528251600080825291810190935290975091925090610a33565b604080518082019091526000815260606020820152815260200190600190039081610a0b5790505b509350600080610a58604089013560608a0135610a5360208c018c61265f565b611244565b60408051808201909152918252602082015296989597505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610ac6576040516391ac5e4f60e01b81523360048201526024015b60405180910390fd5b60208701803590610ae090610adb908a61265f565b611280565b14610b1e57610af2602088018861265f565b60405163309afaf360e21b815263ffffffff909116600482015260208801356024820152604401610abd565b610b2d878787878787876112bc565b50505050505050565b600033610b44858285611423565b610b4f8585856114a2565b60019150505b9392505050565b610b64611501565b610b6e828261152e565b5050565b60408051808201909152600080825260208201526000610ba260408501356060860135610a53602088018861265f565b915050600080610bb28684611583565b9092509050610bcf610bc7602088018861265f565b8383886116a6565b9695505050505050565b610be1611501565b610b6e8282611787565b600360209081526000928352604080842090915290825290208054610c0f906127e3565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3b906127e3565b8015610c885780601f10610c5d57610100808354040283529160200191610c88565b820191906000526020600020905b815481529060010190602001808311610c6b57829003601f168201915b505050505081565b610c98611501565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610cf5611501565b610cff60006117bd565b565b6001600160a01b03811630145b949350505050565b606060098054610848906127e3565b6000336108d98185856114a2565b610d3b611501565b610b6e610d488284612904565b61180d565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610d81906127e3565b80601f0160208091040260200160405190810160405280929190818152602001828054610dad906127e3565b8015610dfa5780601f10610dcf57610100808354040283529160200191610dfa565b820191906000526020600020905b815481529060010190602001808311610ddd57829003601f168201915b505050505090508051600003610e4a5783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610d0e9350505050565b6000839003610e5a579050610d0e565b60028310610ed857610ea184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061191492505050565b80610eaf8460028188612a2d565b604051602001610ec193929190612a57565b604051602081830303815290604052915050610d0e565b8383604051639a6d49cd60e01b8152600401610abd929190612aa8565b60005b81811015610ffe5736838383818110610f1357610f13612abc565b9050602002810190610f259190612ad2565b9050610f58610f37602083018361265f565b602083013563ffffffff919091166000908152600160205260409020541490565b610f625750610ff6565b3063d045a0dc60c08301358360a0810135610f81610100830183612af3565b610f92610100890160e08a01612557565b610fa06101208a018a612af3565b6040518963ffffffff1660e01b8152600401610fc29796959493929190612b4e565b6000604051808303818588803b158015610fdb57600080fd5b505af1158015610fef573d6000803e3d6000fd5b5050505050505b600101610ef8565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa15801561103d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110659190810190612bd4565b604051638351eea760e01b8152600401610abd91906121ee565b611087612157565b60408051808201909152600080825260208201526110a6858585611940565b915091505b935093915050565b6110bb611501565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561111e57600080fd5b505af1158015611132573d6000803e3d6000fd5b5050505050565b3330146111595760405163029a949d60e31b815260040160405180910390fd5b610b2d87878787878787610b1e565b611170611501565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610ce2565b6111c6611501565b6001600160a01b0381166111f057604051631e4fbdf760e01b815260006004820152602401610abd565b6111f9816117bd565b50565b6000602082018035906001908390611214908661265f565b63ffffffff1681526020810191909152604001600020541492915050565b61123f8383836001611a3b565b505050565b60008061125085611b10565b9150819050838110156110ab576040516371c4efed60e01b81526004810182905260248101859052604401610abd565b63ffffffff8116600090815260016020526040812054806108df5760405163f6ff4fb760e01b815263ffffffff84166004820152602401610abd565b60006112ce6112cb8787611b47565b90565b905060006112fa826112e86112e38a8a611b5f565b611b82565b6112f560208d018d61265f565b611bb7565b905060288611156113c157600061133761131a60608c0160408d01612c41565b61132760208d018d61265f565b846113328c8c611bdf565b611c2a565b604051633e5ac80960e11b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061138d9086908d906000908790600401612c5e565b600060405180830381600087803b1580156113a757600080fd5b505af11580156113bb573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c6113fa60208d018d61265f565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b6001600160a01b0383811660009081526006602090815260408083209386168352929052205460001981101561149c578181101561148d57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610abd565b61149c84848484036000611a3b565b50505050565b6001600160a01b0383166114cc57604051634b637e8f60e11b815260006004820152602401610abd565b6001600160a01b0382166114f65760405163ec442f0560e01b815260006004820152602401610abd565b61123f838383611c5c565b6000546001600160a01b03163314610cff5760405163118cdaa760e01b8152336004820152602401610abd565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b60608060006115e0856020013561159986611d86565b6115a660a0890189612af3565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611db292505050565b90935090506000816115f35760016115f6565b60025b9050611616611608602088018861265f565b8261072760808a018a612af3565b6004549093506001600160a01b0316801561169c5760405163043a78eb60e01b81526001600160a01b0382169063043a78eb906116599088908890600401612c8f565b602060405180830381865afa158015611676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169a9190612cb4565b505b5050509250929050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff16815260200161170989611280565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b815260040161173e929190612cd1565b6040805180830381865afa15801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190612d7b565b95945050505050565b6001600160a01b0382166117b15760405163ec442f0560e01b815260006004820152602401610abd565b610b6e60008383611c5c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b81518110156118e45761183f82828151811061182e5761182e612abc565b602002602001015160400151611914565b81818151811061185157611851612abc565b6020026020010151604001516003600084848151811061187357611873612abc565b60200260200101516000015163ffffffff1663ffffffff16815260200190815260200160002060008484815181106118ad576118ad612abc565b60200260200101516020015161ffff1661ffff16815260200190815260200160002090816118db9190612dde565b50600101611810565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610ce29190612e9c565b600281015161ffff8116600314610b6e5781604051639a6d49cd60e01b8152600401610abd91906121ee565b611948612157565b604080518082019091526000808252602082015260008061197f33604089013560608a013561197a60208c018c61265f565b611e2c565b915091506000806119908984611583565b90925090506119bc6119a560208b018b61265f565b83836119b6368d90038d018d612f2c565b8b611e52565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90611a0a908d018d61265f565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b6001600160a01b038416611a655760405163e602df0560e01b815260006004820152602401610abd565b6001600160a01b038316611a8f57604051634a1406b160e11b815260006004820152602401610abd565b6001600160a01b038085166000908152600660209081526040808320938716835292905220829055801561149c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611b0291815260200190565b60405180910390a350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000611b3d8184612f75565b6108df9190612f97565b6000611b566020828486612a2d565b610b5591612fae565b6000611b6f602860208486612a2d565b611b7891612fcc565b60c01c9392505050565b60006108df7f00000000000000000000000000000000000000000000000000000000000000006001600160401b038416612f97565b60006001600160a01b038416611bcd5761dead93505b611bd78484611787565b509092915050565b6060611bee8260288186612a2d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611c439493929190613004565b6040516020818303038152906040529050949350505050565b6001600160a01b038316611c87578060076000828254611c7c9190613053565b90915550611cf99050565b6001600160a01b03831660009081526005602052604090205481811015611cda5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610abd565b6001600160a01b03841660009081526005602052604090209082900390555b6001600160a01b038216611d1557600780548290039055611d34565b6001600160a01b03821660009081526005602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d7991815260200190565b60405180910390a3505050565b60006108df7f000000000000000000000000000000000000000000000000000000000000000083612f75565b8051606090151580611dfb578484604051602001611de792919091825260c01b6001600160c01b031916602082015260280190565b604051602081830303815290604052611e22565b84843385604051602001611e129493929190613066565b6040516020818303038152906040525b9150935093915050565b600080611e3a858585611244565b9092509050611e498683611f5d565b94509492505050565b611e5a612157565b6000611e698460000151611f93565b602085015190915015611e8357611e838460200151611fbb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff168152602001611ed38c611280565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611f0f929190612cd1565b60806040518083038185885af1158015611f2d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f5291906130a9565b979650505050505050565b6001600160a01b038216611f8757604051634b637e8f60e11b815260006004820152602401610abd565b610b6e82600083611c5c565b6000813414611fb7576040516304fb820960e51b8152346004820152602401610abd565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561201b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203f9190612817565b90506001600160a01b038116612068576040516329b99a9560e11b815260040160405180910390fd5b6040805133602482018190527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381811660448501526064808501889052855180860390910181526084909401909452602080840180516001600160e01b03166323b872dd60e01b1781528451610b6e96881695899361149c93889360009283929091839182885af180612109576040513d6000823e3d81fd5b50506000513d9150811561212157806001141561212e565b6001600160a01b0384163b155b1561149c57604051635274afe760e01b81526001600160a01b0385166004820152602401610abd565b60405180606001604052806000801916815260200160006001600160401b03168152602001612199604051806040016040528060008152602001600081525090565b905290565b60005b838110156121b95781810151838201526020016121a1565b50506000910152565b600081518084526121da81602086016020860161219e565b601f01601f19169290920160200192915050565b602081526000610b5560208301846121c2565b6001600160a01b03811681146111f957600080fd5b6000806040838503121561222957600080fd5b823561223481612201565b946020939093013593505050565b600060e0828403121561225457600080fd5b50919050565b60006020828403121561226c57600080fd5b81356001600160401b0381111561228257600080fd5b610d0e84828501612242565b8351815260208085015190820152600060a0820160a0604084015280855180835260c08501915060c08160051b86010192506020870160005b8281101561230f5760bf1987860301845281518051865260208101519050604060208701526122f960408701826121c2565b95505060209384019391909101906001016122c7565b5050855160608601525050602084015160808401529050610d0e565b60006060828403121561225457600080fd5b60008083601f84011261234f57600080fd5b5081356001600160401b0381111561236657600080fd5b60208301915083602082850101111561237e57600080fd5b9250929050565b600080600080600080600060e0888a0312156123a057600080fd5b6123aa898961232b565b96506060880135955060808801356001600160401b038111156123cc57600080fd5b6123d88a828b0161233d565b90965094505060a08801356123ec81612201565b925060c08801356001600160401b0381111561240757600080fd5b6124138a828b0161233d565b989b979a50959850939692959293505050565b60008060006060848603121561243b57600080fd5b833561244681612201565b9250602084013561245681612201565b929592945050506040919091013590565b803563ffffffff8116811461247b57600080fd5b919050565b6000806040838503121561249357600080fd5b61223483612467565b80151581146111f957600080fd5b600080604083850312156124bd57600080fd5b82356001600160401b038111156124d357600080fd5b6124df85828601612242565b92505060208301356124f08161249c565b809150509250929050565b8151815260208083015190820152604081016108df565b803561ffff8116811461247b57600080fd5b6000806040838503121561253757600080fd5b61254083612467565b915061254e60208401612512565b90509250929050565b60006020828403121561256957600080fd5b8135610b5581612201565b60008060008060a0858703121561258a57600080fd5b612594868661232b565b935060608501356001600160401b038111156125af57600080fd5b6125bb8782880161233d565b90945092505060808501356125cf81612201565b939692955090935050565b60008083601f8401126125ec57600080fd5b5081356001600160401b0381111561260357600080fd5b6020830191508360208260051b850101111561237e57600080fd5b6000806020838503121561263157600080fd5b82356001600160401b0381111561264757600080fd5b612653858286016125da565b90969095509350505050565b60006020828403121561267157600080fd5b610b5582612467565b6000806000806060858703121561269057600080fd5b61269985612467565b93506126a760208601612512565b925060408501356001600160401b038111156126c257600080fd5b6126ce8782880161233d565b95989497509550505050565b600080600083850360808112156126f057600080fd5b84356001600160401b0381111561270657600080fd5b61271287828801612242565b9450506040601f198201121561272757600080fd5b50602084019150606084013561273c81612201565b809150509250925092565b600060c082019050835182526001600160401b0360208501511660208301526040840151612782604084018280518252602090810151910152565b5082516080830152602083015160a0830152610b55565b600080604083850312156127ac57600080fd5b82356127b781612201565b915060208301356124f081612201565b6000606082840312156127d957600080fd5b610b55838361232b565b600181811c908216806127f757607f821691505b60208210810361225457634e487b7160e01b600052602260045260246000fd5b60006020828403121561282957600080fd5b8151610b5581612201565b60006020828403121561284657600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156128855761288561284d565b60405290565b604080519081016001600160401b03811182821017156128855761288561284d565b604051601f8201601f191681016001600160401b03811182821017156128d5576128d561284d565b604052919050565b60006001600160401b038211156128f6576128f661284d565b50601f01601f191660200190565b60006001600160401b0383111561291d5761291d61284d565b8260051b61292d602082016128ad565b8481529083019060208101903683111561294657600080fd5b845b83811015612a235780356001600160401b0381111561296657600080fd5b8601606036829003121561297957600080fd5b612981612863565b61298a82612467565b815261299860208301612512565b602082015260408201356001600160401b038111156129b657600080fd5b919091019036601f8301126129ca57600080fd5b81356129dd6129d8826128dd565b6128ad565b8181523660208386010111156129f257600080fd5b8160208501602083013760006020838301015280604084015250508085525050602083019250602081019050612948565b5095945050505050565b60008085851115612a3d57600080fd5b83861115612a4a57600080fd5b5050820193919092039150565b60008451612a6981846020890161219e565b8201838582376000930192835250909392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610d0e602083018486612a7f565b634e487b7160e01b600052603260045260246000fd5b6000823561013e19833603018112612ae957600080fd5b9190910192915050565b6000808335601e19843603018112612b0a57600080fd5b8301803591506001600160401b03821115612b2457600080fd5b60200191503681900382131561237e57600080fd5b6001600160401b03811681146111f957600080fd5b63ffffffff612b5c89612467565b1681526020888101359082015260006040890135612b7981612b39565b6001600160401b03811660408401525087606083015260e06080830152612ba460e083018789612a7f565b6001600160a01b03861660a084015282810360c0840152612bc6818587612a7f565b9a9950505050505050505050565b600060208284031215612be657600080fd5b81516001600160401b03811115612bfc57600080fd5b8201601f81018413612c0d57600080fd5b8051612c1b6129d8826128dd565b818152856020838501011115612c3057600080fd5b61177e82602083016020860161219e565b600060208284031215612c5357600080fd5b8135610b5581612b39565b60018060a01b038516815283602082015261ffff83166040820152608060608201526000610bcf60808301846121c2565b604081526000612ca260408301856121c2565b828103602084015261177e81856121c2565b600060208284031215612cc657600080fd5b8151610b558161249c565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152612d0760e08401826121c2565b90506060850151603f198483030160a0850152612d2482826121c2565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b600060408284031215612d5c57600080fd5b612d6461288b565b825181526020928301519281019290925250919050565b600060408284031215612d8d57600080fd5b610b558383612d4a565b601f82111561123f57806000526020600020601f840160051c81016020851015612dbe5750805b601f840160051c820191505b818110156111325760008155600101612dca565b81516001600160401b03811115612df757612df761284d565b612e0b81612e0584546127e3565b84612d97565b6020601f821160018114612e3f5760008315612e275750848201515b600019600385901b1c1916600184901b178455611132565b600084815260208120601f198516915b82811015612e6f5787850151825560209485019460019092019101612e4f565b5084821015612e8d5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015612f2057603f19878603018452815163ffffffff815116865261ffff60208201511660208701526040810151905060606040870152612f0a60608701826121c2565b9550506020938401939190910190600101612ec4565b50929695505050505050565b60006040828403128015612f3f57600080fd5b50612f4861288b565b823581526020928301359281019290925250919050565b634e487b7160e01b600052601160045260246000fd5b600082612f9257634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176108df576108df612f5f565b803560208310156108df57600019602084900360031b1b1692915050565b80356001600160c01b03198116906008841015612ffd576001600160c01b0319600885900360031b81901b82161691505b5092915050565b6001600160401b0360c01b8560c01b16815263ffffffff60e01b8460e01b16600882015282600c8201526000825161304381602c85016020870161219e565b91909101602c0195945050505050565b808201808211156108df576108df612f5f565b8481526001600160401b0360c01b8460c01b1660208201528260288201526000825161309981604885016020870161219e565b9190910160480195945050505050565b600060808284031280156130bc57600080fd5b506130c5612863565b8251815260208301516130d781612b39565b60208201526130e98460408501612d4a565b6040820152939250505056fea2646970667358221220249a01a82551afec10cfede2963b31e237841ec17fd08d2bce558d917ff0204964736f6c634300081c0033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x3744 CODESIZE SUB DUP1 PUSH2 0x3744 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x2AB JUMP JUMPDEST DUP4 DUP4 DUP4 DUP4 DUP4 DUP4 PUSH1 0x12 DUP5 DUP5 DUP2 DUP2 DUP2 DUP2 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6C JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x75 DUP2 PUSH2 0x181 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x80 MSTORE DUP2 AND PUSH2 0xA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2D618D81 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x40 MLOAD PUSH4 0xCA5EB5E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0xCA5EB5E1 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP PUSH2 0x114 PUSH2 0x1D1 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0xFF AND DUP4 PUSH1 0xFF AND LT ISZERO PUSH2 0x13A JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E9714B PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x145 PUSH1 0x6 DUP5 PUSH2 0x34B JUMP JUMPDEST PUSH2 0x150 SWAP1 PUSH1 0xA PUSH2 0x451 JUMP JUMPDEST PUSH1 0xA0 MSTORE POP PUSH1 0x8 SWAP2 POP PUSH2 0x164 SWAP1 POP DUP4 DUP3 PUSH2 0x4F0 JUMP JUMPDEST POP PUSH1 0x9 PUSH2 0x171 DUP3 DUP3 PUSH2 0x4F0 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x6 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x216 JUMPI PUSH2 0x216 PUSH2 0x1D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x244 JUMPI PUSH2 0x244 PUSH2 0x1D6 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x27B JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP4 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x25F JUMP JUMPDEST POP PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E3 DUP8 DUP3 DUP9 ADD PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD SWAP1 SWAP6 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30D DUP8 DUP3 DUP9 ADD PUSH2 0x1EC JUMP JUMPDEST SWAP4 POP POP PUSH2 0x31C PUSH1 0x40 DUP7 ADD PUSH2 0x28F JUMP JUMPDEST SWAP2 POP PUSH2 0x32A PUSH1 0x60 DUP7 ADD PUSH2 0x28F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x364 JUMPI PUSH2 0x364 PUSH2 0x335 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x3A5 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x389 JUMPI PUSH2 0x389 PUSH2 0x335 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x397 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x36E JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3BC JUMPI POP PUSH1 0x1 PUSH2 0x364 JUMP JUMPDEST DUP2 PUSH2 0x3C9 JUMPI POP PUSH1 0x0 PUSH2 0x364 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x3DF JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x3E9 JUMPI PUSH2 0x405 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x364 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x3FA JUMPI PUSH2 0x3FA PUSH2 0x335 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x364 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x428 JUMPI POP DUP2 DUP2 EXP PUSH2 0x364 JUMP JUMPDEST PUSH2 0x435 PUSH1 0x0 NOT DUP5 DUP5 PUSH2 0x36A JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH2 0x449 JUMPI PUSH2 0x449 PUSH2 0x335 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x460 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x3AD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x47B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x49B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x4EB JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x4C8 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4D4 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x509 JUMPI PUSH2 0x509 PUSH2 0x1D6 JUMP JUMPDEST PUSH2 0x51D DUP2 PUSH2 0x517 DUP5 SLOAD PUSH2 0x467 JUMP JUMPDEST DUP5 PUSH2 0x4A1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x551 JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x539 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x4E8 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x581 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x561 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x59F JUMPI DUP7 DUP5 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH2 0x312B PUSH2 0x619 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x649 ADD MSTORE DUP2 DUP2 PUSH2 0x1B14 ADD MSTORE DUP2 DUP2 PUSH2 0x1B89 ADD MSTORE PUSH2 0x1D8D ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x508 ADD MSTORE DUP2 DUP2 PUSH2 0xA78 ADD MSTORE DUP2 DUP2 PUSH2 0x10DA ADD MSTORE DUP2 DUP2 PUSH2 0x1351 ADD MSTORE DUP2 DUP2 PUSH2 0x16BC ADD MSTORE DUP2 DUP2 PUSH2 0x1E85 ADD MSTORE DUP2 DUP2 PUSH2 0x1FBF ADD MSTORE PUSH2 0x2076 ADD MSTORE PUSH2 0x312B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x25C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x144 JUMPI DUP1 PUSH4 0xBB0B6A53 GT PUSH2 0xB6 JUMPI DUP1 PUSH4 0xD045A0DC GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xD045A0DC EQ PUSH2 0x780 JUMPI DUP1 PUSH4 0xD4243885 EQ PUSH2 0x793 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x7B3 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x7F9 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0xFF7BD03D EQ PUSH2 0x819 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBB0B6A53 EQ PUSH2 0x6DF JUMPI DUP1 PUSH4 0xBC70B354 EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0xBD815DB0 EQ PUSH2 0x72C JUMPI DUP1 PUSH4 0xC7C7F5B3 EQ PUSH2 0x73F JUMPI DUP1 PUSH4 0xCA5EB5E1 EQ PUSH2 0x760 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x108 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x622 JUMPI DUP1 PUSH4 0x963EFCAA EQ PUSH2 0x637 JUMPI DUP1 PUSH4 0x9F68B964 EQ PUSH2 0x66B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x67F JUMPI DUP1 PUSH4 0xB731EA0A EQ PUSH2 0x69F JUMPI DUP1 PUSH4 0xB98BD070 EQ PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x7D25A05E EQ PUSH2 0x595 JUMPI DUP1 PUSH4 0x82413EAC EQ PUSH2 0x5D0 JUMPI DUP1 PUSH4 0x857749B0 EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x52AE2879 GT PUSH2 0x1A1 JUMPI DUP1 PUSH4 0x52AE2879 EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0x5535D461 EQ PUSH2 0x49F JUMPI DUP1 PUSH4 0x5A0DFE4D EQ PUSH2 0x4BF JUMPI DUP1 PUSH4 0x5E280F11 EQ PUSH2 0x4F6 JUMPI DUP1 PUSH4 0x6FC1B31E EQ PUSH2 0x52A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3DD JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3FD JUMPI DUP1 PUSH4 0x3400288B EQ PUSH2 0x41F JUMPI DUP1 PUSH4 0x3B6F743B EQ PUSH2 0x43F JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x134D4F25 GT PUSH2 0x224 JUMPI DUP1 PUSH4 0x134D4F25 EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x156A0D0F EQ PUSH2 0x360 JUMPI DUP1 PUSH4 0x17442B70 EQ PUSH2 0x387 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3A9 JUMPI DUP1 PUSH4 0x1F5E1334 EQ PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0xD35B415 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x111ECDAD EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x13137D65 EQ PUSH2 0x323 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x276 PUSH2 0x839 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP2 SWAP1 PUSH2 0x21EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2216 JUMP JUMPDEST PUSH2 0x8CB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DC PUSH2 0x2D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0x8E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x228E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD PUSH2 0x30B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST PUSH2 0x336 PUSH2 0x331 CALLDATASIZE PUSH1 0x4 PUSH2 0x2385 JUMP JUMPDEST PUSH2 0xA76 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x34D PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH3 0xB9270B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x283 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x393 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x283 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x7 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x34D PUSH1 0x1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x3F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2426 JUMP JUMPDEST PUSH2 0xB36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x12 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x43A CALLDATASIZE PUSH1 0x4 PUSH2 0x2480 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x24AA JUMP JUMPDEST PUSH2 0xB72 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP2 SWAP1 PUSH2 0x24FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x487 CALLDATASIZE PUSH1 0x4 PUSH2 0x2216 JUMP JUMPDEST PUSH2 0xBD9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADDRESS PUSH2 0x30B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x276 PUSH2 0x4BA CALLDATASIZE PUSH1 0x4 PUSH2 0x2524 JUMP JUMPDEST PUSH2 0xBEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x4DA CALLDATASIZE PUSH1 0x4 PUSH2 0x2480 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x545 CALLDATASIZE PUSH1 0x4 PUSH2 0x2557 JUMP JUMPDEST PUSH2 0xC90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BA PUSH2 0x565 CALLDATASIZE PUSH1 0x4 PUSH2 0x2557 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0xCED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5B8 PUSH2 0x5B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2480 JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x5EB CALLDATASIZE PUSH1 0x4 PUSH2 0x2574 JUMP JUMPDEST PUSH2 0xD01 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 PUSH2 0x40D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x610 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x30B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x276 PUSH2 0xD16 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BA PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x2AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x69A CALLDATASIZE PUSH1 0x4 PUSH2 0x2216 JUMP JUMPDEST PUSH2 0xD25 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x30B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x6DA CALLDATASIZE PUSH1 0x4 PUSH2 0x261E JUMP JUMPDEST PUSH2 0xD33 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BA PUSH2 0x6FA CALLDATASIZE PUSH1 0x4 PUSH2 0x265F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x276 PUSH2 0x727 CALLDATASIZE PUSH1 0x4 PUSH2 0x267A JUMP JUMPDEST PUSH2 0xD4D JUMP JUMPDEST PUSH2 0x336 PUSH2 0x73A CALLDATASIZE PUSH1 0x4 PUSH2 0x261E JUMP JUMPDEST PUSH2 0xEF5 JUMP JUMPDEST PUSH2 0x752 PUSH2 0x74D CALLDATASIZE PUSH1 0x4 PUSH2 0x26DA JUMP JUMPDEST PUSH2 0x107F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP3 SWAP2 SWAP1 PUSH2 0x2747 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x77B CALLDATASIZE PUSH1 0x4 PUSH2 0x2557 JUMP JUMPDEST PUSH2 0x10B3 JUMP JUMPDEST PUSH2 0x336 PUSH2 0x78E CALLDATASIZE PUSH1 0x4 PUSH2 0x2385 JUMP JUMPDEST PUSH2 0x1139 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x7AE CALLDATASIZE PUSH1 0x4 PUSH2 0x2557 JUMP JUMPDEST PUSH2 0x1168 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BA PUSH2 0x7CE CALLDATASIZE PUSH1 0x4 PUSH2 0x2799 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x814 CALLDATASIZE PUSH1 0x4 PUSH2 0x2557 JUMP JUMPDEST PUSH2 0x11BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x834 CALLDATASIZE PUSH1 0x4 PUSH2 0x27C7 JUMP JUMPDEST PUSH2 0x11FC JUMP JUMPDEST PUSH1 0x60 PUSH1 0x8 DUP1 SLOAD PUSH2 0x848 SWAP1 PUSH2 0x27E3 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x874 SWAP1 PUSH2 0x27E3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8C1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x896 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8C1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8A4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x8D9 DUP2 DUP6 DUP6 PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH2 0x918 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x959 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x97D SWAP2 SWAP1 PUSH2 0x2817 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9DE SWAP2 SWAP1 PUSH2 0x2834 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP2 DUP2 ADD SWAP1 SWAP4 MSTORE SWAP1 SWAP8 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0xA33 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA0B JUMPI SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 DUP1 PUSH2 0xA58 PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP11 ADD CALLDATALOAD PUSH2 0xA53 PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x265F JUMP JUMPDEST PUSH2 0x1244 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP7 SWAP9 SWAP6 SWAP8 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAC6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x91AC5E4F PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP8 ADD DUP1 CALLDATALOAD SWAP1 PUSH2 0xAE0 SWAP1 PUSH2 0xADB SWAP1 DUP11 PUSH2 0x265F JUMP JUMPDEST PUSH2 0x1280 JUMP JUMPDEST EQ PUSH2 0xB1E JUMPI PUSH2 0xAF2 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x265F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x309AFAF3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xABD JUMP JUMPDEST PUSH2 0xB2D DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x12BC JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0xB44 DUP6 DUP3 DUP6 PUSH2 0x1423 JUMP JUMPDEST PUSH2 0xB4F DUP6 DUP6 DUP6 PUSH2 0x14A2 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB64 PUSH2 0x1501 JUMP JUMPDEST PUSH2 0xB6E DUP3 DUP3 PUSH2 0x152E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xBA2 PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0xA53 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x265F JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 DUP1 PUSH2 0xBB2 DUP7 DUP5 PUSH2 0x1583 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xBCF PUSH2 0xBC7 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x265F JUMP JUMPDEST DUP4 DUP4 DUP9 PUSH2 0x16A6 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xBE1 PUSH2 0x1501 JUMP JUMPDEST PUSH2 0xB6E DUP3 DUP3 PUSH2 0x1787 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xC0F SWAP1 PUSH2 0x27E3 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xC3B SWAP1 PUSH2 0x27E3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC88 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC5D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC88 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC6B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0xC98 PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xF0BE4F1E87349231D80C36B33F9E8639658EEAF474014DEE15A3E6A4D4414197 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xCF5 PUSH2 0x1501 JUMP JUMPDEST PUSH2 0xCFF PUSH1 0x0 PUSH2 0x17BD JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ADDRESS EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x9 DUP1 SLOAD PUSH2 0x848 SWAP1 PUSH2 0x27E3 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x8D9 DUP2 DUP6 DUP6 PUSH2 0x14A2 JUMP JUMPDEST PUSH2 0xD3B PUSH2 0x1501 JUMP JUMPDEST PUSH2 0xB6E PUSH2 0xD48 DUP3 DUP5 PUSH2 0x2904 JUMP JUMPDEST PUSH2 0x180D JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP3 SWAP2 SWAP1 PUSH2 0xD81 SWAP1 PUSH2 0x27E3 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xDAD SWAP1 PUSH2 0x27E3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xDFA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xDCF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xDFA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xDDD JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xE4A JUMPI DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 POP PUSH2 0xD0E SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 SWAP1 SUB PUSH2 0xE5A JUMPI SWAP1 POP PUSH2 0xD0E JUMP JUMPDEST PUSH1 0x2 DUP4 LT PUSH2 0xED8 JUMPI PUSH2 0xEA1 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1914 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH2 0xEAF DUP5 PUSH1 0x2 DUP2 DUP9 PUSH2 0x2A2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xEC1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2A57 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0xD0E JUMP JUMPDEST DUP4 DUP4 PUSH1 0x40 MLOAD PUSH4 0x9A6D49CD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABD SWAP3 SWAP2 SWAP1 PUSH2 0x2AA8 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFFE JUMPI CALLDATASIZE DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0xF13 JUMPI PUSH2 0xF13 PUSH2 0x2ABC JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xF25 SWAP2 SWAP1 PUSH2 0x2AD2 JUMP JUMPDEST SWAP1 POP PUSH2 0xF58 PUSH2 0xF37 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x265F JUMP JUMPDEST PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ SWAP1 JUMP JUMPDEST PUSH2 0xF62 JUMPI POP PUSH2 0xFF6 JUMP JUMPDEST ADDRESS PUSH4 0xD045A0DC PUSH1 0xC0 DUP4 ADD CALLDATALOAD DUP4 PUSH1 0xA0 DUP2 ADD CALLDATALOAD PUSH2 0xF81 PUSH2 0x100 DUP4 ADD DUP4 PUSH2 0x2AF3 JUMP JUMPDEST PUSH2 0xF92 PUSH2 0x100 DUP10 ADD PUSH1 0xE0 DUP11 ADD PUSH2 0x2557 JUMP JUMPDEST PUSH2 0xFA0 PUSH2 0x120 DUP11 ADD DUP11 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFC2 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B4E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFEF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xEF8 JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8E9E7099 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x103D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1065 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8351EEA7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABD SWAP2 SWAP1 PUSH2 0x21EE JUMP JUMPDEST PUSH2 0x1087 PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x10A6 DUP6 DUP6 DUP6 PUSH2 0x1940 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x10BB PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCA5EB5E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xCA5EB5E1 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x111E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1132 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x1159 JUMPI PUSH1 0x40 MLOAD PUSH4 0x29A949D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB2D DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xB1E JUMP JUMPDEST PUSH2 0x1170 PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xD48D879CEF83A1C0BDDA516F27B13DDB1B3F8BBAC1C9E1511BB2A659C2427760 SWAP1 PUSH1 0x20 ADD PUSH2 0xCE2 JUMP JUMPDEST PUSH2 0x11C6 PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x11F0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH2 0x11F9 DUP2 PUSH2 0x17BD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 SWAP1 DUP4 SWAP1 PUSH2 0x1214 SWAP1 DUP7 PUSH2 0x265F JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x123F DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1A3B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1250 DUP6 PUSH2 0x1B10 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x10AB JUMPI PUSH1 0x40 MLOAD PUSH4 0x71C4EFED PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xABD JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x8DF JUMPI PUSH1 0x40 MLOAD PUSH4 0xF6FF4FB7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12CE PUSH2 0x12CB DUP8 DUP8 PUSH2 0x1B47 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x12FA DUP3 PUSH2 0x12E8 PUSH2 0x12E3 DUP11 DUP11 PUSH2 0x1B5F JUMP JUMPDEST PUSH2 0x1B82 JUMP JUMPDEST PUSH2 0x12F5 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x265F JUMP JUMPDEST PUSH2 0x1BB7 JUMP JUMPDEST SWAP1 POP PUSH1 0x28 DUP7 GT ISZERO PUSH2 0x13C1 JUMPI PUSH1 0x0 PUSH2 0x1337 PUSH2 0x131A PUSH1 0x60 DUP13 ADD PUSH1 0x40 DUP14 ADD PUSH2 0x2C41 JUMP JUMPDEST PUSH2 0x1327 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x265F JUMP JUMPDEST DUP5 PUSH2 0x1332 DUP13 DUP13 PUSH2 0x1BDF JUMP JUMPDEST PUSH2 0x1C2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3E5AC809 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x7CB59012 SWAP1 PUSH2 0x138D SWAP1 DUP7 SWAP1 DUP14 SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2C5E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP9 PUSH32 0xEFED6D3500546B29533B128A29E3A94D70788727F0507505AC12EAF2E578FD9C PUSH2 0x13FA PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x265F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 LT ISZERO PUSH2 0x149C JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x148D JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xABD JUMP JUMPDEST PUSH2 0x149C DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x1A3B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x14CC JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x14F6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH2 0x123F DUP4 DUP4 DUP4 PUSH2 0x1C5C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xCFF JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x238399D427B947898EDB290F5FF0F9109849B1C3BA196A42E35F00C50A54B98B SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x15E0 DUP6 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1599 DUP7 PUSH2 0x1D86 JUMP JUMPDEST PUSH2 0x15A6 PUSH1 0xA0 DUP10 ADD DUP10 PUSH2 0x2AF3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1DB2 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x15F3 JUMPI PUSH1 0x1 PUSH2 0x15F6 JUMP JUMPDEST PUSH1 0x2 JUMPDEST SWAP1 POP PUSH2 0x1616 PUSH2 0x1608 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x265F JUMP JUMPDEST DUP3 PUSH2 0x727 PUSH1 0x80 DUP11 ADD DUP11 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x169C JUMPI PUSH1 0x40 MLOAD PUSH4 0x43A78EB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x43A78EB SWAP1 PUSH2 0x1659 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2C8F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1676 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x169A SWAP2 SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST POP JUMPDEST POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDDC28C58 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1709 DUP10 PUSH2 0x1280 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE POP ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x173E SWAP3 SWAP2 SWAP1 PUSH2 0x2CD1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x175A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x177E SWAP2 SWAP1 PUSH2 0x2D7B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x17B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH2 0xB6E PUSH1 0x0 DUP4 DUP4 PUSH2 0x1C5C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x18E4 JUMPI PUSH2 0x183F DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x182E JUMPI PUSH2 0x182E PUSH2 0x2ABC JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x1914 JUMP JUMPDEST DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1851 JUMPI PUSH2 0x1851 PUSH2 0x2ABC JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x3 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1873 JUMPI PUSH2 0x1873 PUSH2 0x2ABC JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x18AD JUMPI PUSH2 0x18AD PUSH2 0x2ABC JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP2 PUSH2 0x18DB SWAP2 SWAP1 PUSH2 0x2DDE JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1810 JUMP JUMPDEST POP PUSH32 0xBE4864A8E820971C0247F5992E2DA559595F7BF076A21CB5928D443D2A13B674 DUP2 PUSH1 0x40 MLOAD PUSH2 0xCE2 SWAP2 SWAP1 PUSH2 0x2E9C JUMP JUMPDEST PUSH1 0x2 DUP2 ADD MLOAD PUSH2 0xFFFF DUP2 AND PUSH1 0x3 EQ PUSH2 0xB6E JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x9A6D49CD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABD SWAP2 SWAP1 PUSH2 0x21EE JUMP JUMPDEST PUSH2 0x1948 PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP1 PUSH2 0x197F CALLER PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP11 ADD CALLDATALOAD PUSH2 0x197A PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x265F JUMP JUMPDEST PUSH2 0x1E2C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1990 DUP10 DUP5 PUSH2 0x1583 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x19BC PUSH2 0x19A5 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x265F JUMP JUMPDEST DUP4 DUP4 PUSH2 0x19B6 CALLDATASIZE DUP14 SWAP1 SUB DUP14 ADD DUP14 PUSH2 0x2F2C JUMP JUMPDEST DUP12 PUSH2 0x1E52 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD SWAP3 SWAP9 POP SWAP1 SWAP7 POP CALLER SWAP2 SWAP1 PUSH32 0x85496B760A4B7F8D66384B9DF21B381F5D1B1E79F229A47AAF4C232EDC2FE59A SWAP1 PUSH2 0x1A0A SWAP1 DUP14 ADD DUP14 PUSH2 0x265F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP10 SWAP1 MSTORE DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1A65 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1A8F JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x149C JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1B02 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0x1B3D DUP2 DUP5 PUSH2 0x2F75 JUMP JUMPDEST PUSH2 0x8DF SWAP2 SWAP1 PUSH2 0x2F97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B56 PUSH1 0x20 DUP3 DUP5 DUP7 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0xB55 SWAP2 PUSH2 0x2FAE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B6F PUSH1 0x28 PUSH1 0x20 DUP5 DUP7 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0x1B78 SWAP2 PUSH2 0x2FCC JUMP JUMPDEST PUSH1 0xC0 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8DF PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 AND PUSH2 0x2F97 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1BCD JUMPI PUSH2 0xDEAD SWAP4 POP JUMPDEST PUSH2 0x1BD7 DUP5 DUP5 PUSH2 0x1787 JUMP JUMPDEST POP SWAP1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1BEE DUP3 PUSH1 0x28 DUP2 DUP7 PUSH2 0x2A2D JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1C43 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3004 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1C87 JUMPI DUP1 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1C7C SWAP2 SWAP1 PUSH2 0x3053 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1CF9 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x1CDA JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xABD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D15 JUMPI PUSH1 0x7 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x1D34 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x1D79 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8DF PUSH32 0x0 DUP4 PUSH2 0x2F75 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x1DFB JUMPI DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DE7 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0xC0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x28 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x1E22 JUMP JUMPDEST DUP5 DUP5 CALLER DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E12 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3066 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E3A DUP6 DUP6 DUP6 PUSH2 0x1244 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1E49 DUP7 DUP4 PUSH2 0x1F5D JUMP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1E5A PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E69 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x1F93 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x1E83 JUMPI PUSH2 0x1E83 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x1FBB JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2637A450 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1ED3 DUP13 PUSH2 0x1280 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP10 PUSH1 0x20 ADD MLOAD GT ISZERO ISZERO DUP2 MSTORE POP DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F0F SWAP3 SWAP2 SWAP1 PUSH2 0x2CD1 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F52 SWAP2 SWAP1 PUSH2 0x30A9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1F87 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH2 0xB6E DUP3 PUSH1 0x0 DUP4 PUSH2 0x1C5C JUMP JUMPDEST PUSH1 0x0 DUP2 CALLVALUE EQ PUSH2 0x1FB7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4FB8209 PUSH1 0xE5 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE4FE1D94 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x201B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x203F SWAP2 SWAP1 PUSH2 0x2817 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2068 JUMPI PUSH1 0x40 MLOAD PUSH4 0x29B99A95 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP1 DUP6 ADD DUP9 SWAP1 MSTORE DUP6 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP5 ADD SWAP1 SWAP5 MSTORE PUSH1 0x20 DUP1 DUP5 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE DUP5 MLOAD PUSH2 0xB6E SWAP7 DUP9 AND SWAP6 DUP10 SWAP4 PUSH2 0x149C SWAP4 DUP9 SWAP4 PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 SWAP2 DUP4 SWAP2 DUP3 DUP9 GAS CALL DUP1 PUSH2 0x2109 JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH1 0x0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x2121 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x212E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x149C JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2199 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x21B9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x21A1 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x21DA DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x219E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xB55 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x21C2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x11F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2234 DUP2 PUSH2 0x2201 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x226C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD0E DUP5 DUP3 DUP6 ADD PUSH2 0x2242 JUMP JUMPDEST DUP4 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH1 0xA0 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0xC0 DUP6 ADD SWAP2 POP PUSH1 0xC0 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x230F JUMPI PUSH1 0xBF NOT DUP8 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 POP PUSH1 0x40 PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x22F9 PUSH1 0x40 DUP8 ADD DUP3 PUSH2 0x21C2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x22C7 JUMP JUMPDEST POP POP DUP6 MLOAD PUSH1 0x60 DUP7 ADD MSTORE POP POP PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE SWAP1 POP PUSH2 0xD0E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x234F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x237E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x23A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23AA DUP10 DUP10 PUSH2 0x232B JUMP JUMPDEST SWAP7 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x23CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23D8 DUP11 DUP3 DUP12 ADD PUSH2 0x233D JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0x23EC DUP2 PUSH2 0x2201 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2413 DUP11 DUP3 DUP12 ADD PUSH2 0x233D JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x243B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2446 DUP2 PUSH2 0x2201 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2456 DUP2 PUSH2 0x2201 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x247B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2234 DUP4 PUSH2 0x2467 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x11F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x24D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24DF DUP6 DUP3 DUP7 ADD PUSH2 0x2242 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x24F0 DUP2 PUSH2 0x249C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD PUSH2 0x8DF JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x247B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2540 DUP4 PUSH2 0x2467 JUMP JUMPDEST SWAP2 POP PUSH2 0x254E PUSH1 0x20 DUP5 ADD PUSH2 0x2512 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2569 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB55 DUP2 PUSH2 0x2201 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x258A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2594 DUP7 DUP7 PUSH2 0x232B JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x25AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x25BB DUP8 DUP3 DUP9 ADD PUSH2 0x233D JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x80 DUP6 ADD CALLDATALOAD PUSH2 0x25CF DUP2 PUSH2 0x2201 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x25EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2603 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x237E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2647 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2653 DUP6 DUP3 DUP7 ADD PUSH2 0x25DA JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB55 DUP3 PUSH2 0x2467 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2699 DUP6 PUSH2 0x2467 JUMP JUMPDEST SWAP4 POP PUSH2 0x26A7 PUSH1 0x20 DUP7 ADD PUSH2 0x2512 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x26C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26CE DUP8 DUP3 DUP9 ADD PUSH2 0x233D JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP6 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x26F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2706 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2712 DUP8 DUP3 DUP9 ADD PUSH2 0x2242 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH1 0x1F NOT DUP3 ADD SLT ISZERO PUSH2 0x2727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP5 ADD SWAP2 POP PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x273C DUP2 PUSH2 0x2201 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP DUP4 MLOAD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x2782 PUSH1 0x40 DUP5 ADD DUP3 DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST POP DUP3 MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0xB55 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x27AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x27B7 DUP2 PUSH2 0x2201 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x24F0 DUP2 PUSH2 0x2201 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB55 DUP4 DUP4 PUSH2 0x232B JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x27F7 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2254 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2829 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB55 DUP2 PUSH2 0x2201 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2885 JUMPI PUSH2 0x2885 PUSH2 0x284D JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2885 JUMPI PUSH2 0x2885 PUSH2 0x284D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x28D5 JUMPI PUSH2 0x28D5 PUSH2 0x284D JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x28F6 JUMPI PUSH2 0x28F6 PUSH2 0x284D JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT ISZERO PUSH2 0x291D JUMPI PUSH2 0x291D PUSH2 0x284D JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x292D PUSH1 0x20 DUP3 ADD PUSH2 0x28AD JUMP JUMPDEST DUP5 DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATASIZE DUP4 GT ISZERO PUSH2 0x2946 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2A23 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2966 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x60 CALLDATASIZE DUP3 SWAP1 SUB SLT ISZERO PUSH2 0x2979 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2981 PUSH2 0x2863 JUMP JUMPDEST PUSH2 0x298A DUP3 PUSH2 0x2467 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2998 PUSH1 0x20 DUP4 ADD PUSH2 0x2512 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x29B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP1 CALLDATASIZE PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x29DD PUSH2 0x29D8 DUP3 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x28AD JUMP JUMPDEST DUP2 DUP2 MSTORE CALLDATASIZE PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x29F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE POP POP DUP1 DUP6 MSTORE POP POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2948 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x2A3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2A4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x2A69 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x219E JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY PUSH1 0x0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xD0E PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x2A7F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x13E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2AE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2B0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2B24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x237E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x11F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH2 0x2B5C DUP10 PUSH2 0x2467 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP9 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x2B79 DUP2 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND PUSH1 0x40 DUP5 ADD MSTORE POP DUP8 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xE0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x2BA4 PUSH1 0xE0 DUP4 ADD DUP8 DUP10 PUSH2 0x2A7F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x2BC6 DUP2 DUP6 DUP8 PUSH2 0x2A7F JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x2C0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2C1B PUSH2 0x29D8 DUP3 PUSH2 0x28DD JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x2C30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x177E DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x219E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB55 DUP2 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE DUP4 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xBCF PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x21C2 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2CA2 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x21C2 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x177E DUP2 DUP6 PUSH2 0x21C2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB55 DUP2 PUSH2 0x249C JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH4 0xFFFFFFFF DUP4 MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xA0 PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x2D07 PUSH1 0xE0 DUP5 ADD DUP3 PUSH2 0x21C2 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x3F NOT DUP5 DUP4 SUB ADD PUSH1 0xA0 DUP6 ADD MSTORE PUSH2 0x2D24 DUP3 DUP3 PUSH2 0x21C2 JUMP JUMPDEST PUSH1 0x80 SWAP7 SWAP1 SWAP7 ADD MLOAD ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D64 PUSH2 0x288B JUMP JUMPDEST DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB55 DUP4 DUP4 PUSH2 0x2D4A JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x123F JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2DBE JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1132 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2DCA JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2DF7 JUMPI PUSH2 0x2DF7 PUSH2 0x284D JUMP JUMPDEST PUSH2 0x2E0B DUP2 PUSH2 0x2E05 DUP5 SLOAD PUSH2 0x27E3 JUMP JUMPDEST DUP5 PUSH2 0x2D97 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2E3F JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x2E27 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x1132 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2E6F JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2E4F JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x2E8D JUMPI DUP7 DUP5 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD PUSH1 0x20 DUP4 MSTORE DUP1 DUP5 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP6 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP7 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2F20 JUMPI PUSH1 0x3F NOT DUP8 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD PUSH4 0xFFFFFFFF DUP2 MLOAD AND DUP7 MSTORE PUSH2 0xFFFF PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD SWAP1 POP PUSH1 0x60 PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x2F0A PUSH1 0x60 DUP8 ADD DUP3 PUSH2 0x21C2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2EC4 JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x2F3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F48 PUSH2 0x288B JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2F92 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x8DF JUMPI PUSH2 0x8DF PUSH2 0x2F5F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x20 DUP4 LT ISZERO PUSH2 0x8DF JUMPI PUSH1 0x0 NOT PUSH1 0x20 DUP5 SWAP1 SUB PUSH1 0x3 SHL SHL AND SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT DUP2 AND SWAP1 PUSH1 0x8 DUP5 LT ISZERO PUSH2 0x2FFD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT PUSH1 0x8 DUP6 SWAP1 SUB PUSH1 0x3 SHL DUP2 SWAP1 SHL DUP3 AND AND SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL DUP6 PUSH1 0xC0 SHL AND DUP2 MSTORE PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP5 PUSH1 0xE0 SHL AND PUSH1 0x8 DUP3 ADD MSTORE DUP3 PUSH1 0xC DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x3043 DUP2 PUSH1 0x2C DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x219E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD PUSH1 0x2C ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x8DF JUMPI PUSH2 0x8DF PUSH2 0x2F5F JUMP JUMPDEST DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL DUP5 PUSH1 0xC0 SHL AND PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x3099 DUP2 PUSH1 0x48 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x219E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD PUSH1 0x48 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x30BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30C5 PUSH2 0x2863 JUMP JUMPDEST DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x30D7 DUP2 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x30E9 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x2D4A JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 SWAP11 ADD 0xA8 0x25 MLOAD 0xAF 0xEC LT 0xCF 0xED 0xE2 SWAP7 EXTCODESIZE BALANCE 0xE2 CALLDATACOPY DUP5 0x1E 0xC1 PUSH32 0xD08D2BCE558D917FF0204964736F6C634300081C003300000000000000000000 ","sourceMap":"189:500:60:-:0;;;214:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;352:5;359:7;368:11;381:9;352:5;359:7;2761:2:36;823:11:23;836:9;823:11;836:9;823:11;836:9;400::60;-1:-1:-1;;;;;1273:26:28;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:28;;1350:1;1322:31;;;2046:51:66;2019:18;;1322:31:28;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;;;;;;1047:42:11;;;;;1104:23;;1100:53;;1136:17;;-1:-1:-1;;;1136:17:11;;;;;;;;;;;1100:53;1163:8;;:31;;-1:-1:-1;;;1163:31:11;;-1:-1:-1;;;;;2064:32:66;;;1163:31:11;;;2046:51:66;1163:20:11;;;;;;2019:18:66;;1163:31:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;987:214;;965:83:10;;2831:16:24::1;:14;;;:16;;:::i;:::-;2814:33;;:14;:33;;;2810:68;;;2856:22;;-1:-1:-1::0;;;2856:22:24::1;;;;;;;;;;;2810:68;2919:33;4301:1:::0;2919:14;:33:::1;:::i;:::-;2912:41;::::0;:2:::1;:41;:::i;:::-;2888:65;::::0;-1:-1:-1;1648:5:36;;-1:-1:-1;1648:13:36;;-1:-1:-1;1656:5:36;1648;:13;:::i;:::-;-1:-1:-1;1671:7:36;:17;1681:7;1671;:17;:::i;:::-;;1582:113;;647:202:23;;;;214:199:60;;;;189:500;;2912:187:28;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:28;;;-1:-1:-1;;;;;;3020:17:28;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;4222:87:24:-;4301:1;;4222:87::o;14:127:66:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:834;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:66;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:66;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:66;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:66;;;725:1;722;715:12;670:59;747:1;757:143;771:6;768:1;765:13;757:143;;;883:4;867:14;;;863:25;;857:32;834:14;;;830:25;;823:67;786:12;757:143;;;-1:-1:-1;948:1:66;920:19;;;941:4;916:30;909:41;;;;924:6;146:834;-1:-1:-1;;;146:834:66:o;985:177::-;1064:13;;-1:-1:-1;;;;;1106:31:66;;1096:42;;1086:70;;1152:1;1149;1142:12;1086:70;985:177;;;:::o;1167:728::-;1284:6;1292;1300;1308;1361:3;1349:9;1340:7;1336:23;1332:33;1329:53;;;1378:1;1375;1368:12;1329:53;1405:16;;-1:-1:-1;;;;;1433:30:66;;1430:50;;;1476:1;1473;1466:12;1430:50;1499:61;1552:7;1543:6;1532:9;1528:22;1499:61;:::i;:::-;1606:2;1591:18;;1585:25;1489:71;;-1:-1:-1;1585:25:66;-1:-1:-1;;;;;;1622:32:66;;1619:52;;;1667:1;1664;1657:12;1619:52;1690:63;1745:7;1734:8;1723:9;1719:24;1690:63;:::i;:::-;1680:73;;;1772:49;1817:2;1806:9;1802:18;1772:49;:::i;:::-;1762:59;;1840:49;1885:2;1874:9;1870:18;1840:49;:::i;:::-;1830:59;;1167:728;;;;;;;:::o;2108:127::-;2169:10;2164:3;2160:20;2157:1;2150:31;2200:4;2197:1;2190:15;2224:4;2221:1;2214:15;2240:151;2330:4;2323:12;;;2309;;;2305:31;;2348:14;;2345:40;;;2365:18;;:::i;:::-;2240:151;;;;:::o;2396:375::-;2484:1;2502:5;2516:249;2537:1;2527:8;2524:15;2516:249;;;2587:4;2582:3;2578:14;2572:4;2569:24;2566:50;;;2596:18;;:::i;:::-;2646:1;2636:8;2632:16;2629:49;;;2660:16;;;;2629:49;2743:1;2739:16;;;;;2699:15;;2516:249;;;2396:375;;;;;;:::o;2776:902::-;2825:5;2855:8;2845:80;;-1:-1:-1;2896:1:66;2910:5;;2845:80;2944:4;2934:76;;-1:-1:-1;2981:1:66;2995:5;;2934:76;3026:4;3044:1;3039:59;;;;3112:1;3107:174;;;;3019:262;;3039:59;3069:1;3060:10;;3083:5;;;3107:174;3144:3;3134:8;3131:17;3128:43;;;3151:18;;:::i;:::-;-1:-1:-1;;3207:1:66;3193:16;;3266:5;;3019:262;;3365:2;3355:8;3352:16;3346:3;3340:4;3337:13;3333:36;3327:2;3317:8;3314:16;3309:2;3303:4;3300:12;3296:35;3293:77;3290:203;;;-1:-1:-1;3402:19:66;;;3478:5;;3290:203;3525:42;-1:-1:-1;;3550:8:66;3544:4;3525:42;:::i;:::-;3603:6;3599:1;3595:6;3591:19;3582:7;3579:32;3576:58;;;3614:18;;:::i;:::-;3652:20;;2776:902;-1:-1:-1;;;2776:902:66:o;3683:140::-;3741:5;3770:47;3811:4;3801:8;3797:19;3791:4;3770:47;:::i;:::-;3761:56;3683:140;-1:-1:-1;;;3683:140:66:o;3828:380::-;3907:1;3903:12;;;;3950;;;3971:61;;4025:4;4017:6;4013:17;4003:27;;3971:61;4078:2;4070:6;4067:14;4047:18;4044:38;4041:161;;4124:10;4119:3;4115:20;4112:1;4105:31;4159:4;4156:1;4149:15;4187:4;4184:1;4177:15;4041:161;;3828:380;;;:::o;4339:518::-;4441:2;4436:3;4433:11;4430:421;;;4477:5;4474:1;4467:16;4521:4;4518:1;4508:18;4591:2;4579:10;4575:19;4572:1;4568:27;4562:4;4558:38;4627:4;4615:10;4612:20;4609:47;;;-1:-1:-1;4650:4:66;4609:47;4705:2;4700:3;4696:12;4693:1;4689:20;4683:4;4679:31;4669:41;;4760:81;4778:2;4771:5;4768:13;4760:81;;;4837:1;4823:16;;4804:1;4793:13;4760:81;;;4764:3;;4430:421;4339:518;;;:::o;5033:1299::-;5153:10;;-1:-1:-1;;;;;5175:30:66;;5172:56;;;5208:18;;:::i;:::-;5237:97;5327:6;5287:38;5319:4;5313:11;5287:38;:::i;:::-;5281:4;5237:97;:::i;:::-;5383:4;5414:2;5403:14;;5431:1;5426:649;;;;6119:1;6136:6;6133:89;;;-1:-1:-1;6188:19:66;;;6182:26;6133:89;-1:-1:-1;;4990:1:66;4986:11;;;4982:24;4978:29;4968:40;5014:1;5010:11;;;4965:57;6235:81;;5396:930;;5426:649;4286:1;4279:14;;;4323:4;4310:18;;-1:-1:-1;;5462:20:66;;;5580:222;5594:7;5591:1;5588:14;5580:222;;;5676:19;;;5670:26;5655:42;;5783:4;5768:20;;;;5736:1;5724:14;;;;5610:12;5580:222;;;5584:3;5830:6;5821:7;5818:19;5815:201;;;5891:19;;;5885:26;-1:-1:-1;;5974:1:66;5970:14;;;5986:3;5966:24;5962:37;5958:42;5943:58;5928:74;;5815:201;-1:-1:-1;;;;6062:1:66;6046:14;;;6042:22;6029:36;;-1:-1:-1;5033:1299:66:o;:::-;189:500:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@SEND_2781":{"entryPoint":null,"id":2781,"parameterSlots":0,"returnSlots":0},"@SEND_AND_CALL_2784":{"entryPoint":null,"id":2784,"parameterSlots":0,"returnSlots":0},"@_approve_4655":{"entryPoint":4658,"id":4655,"parameterSlots":3,"returnSlots":0},"@_approve_4715":{"entryPoint":6715,"id":4715,"parameterSlots":4,"returnSlots":0},"@_assertOptionsType3_2148":{"entryPoint":6420,"id":2148,"parameterSlots":1,"returnSlots":0},"@_buildMsgAndOptions_3139":{"entryPoint":5507,"id":3139,"parameterSlots":2,"returnSlots":2},"@_burn_4637":{"entryPoint":8029,"id":4637,"parameterSlots":2,"returnSlots":0},"@_callOptionalReturn_5290":{"entryPoint":null,"id":5290,"parameterSlots":2,"returnSlots":0},"@_checkOwner_3917":{"entryPoint":5377,"id":3917,"parameterSlots":0,"returnSlots":0},"@_credit_2735":{"entryPoint":7095,"id":2735,"parameterSlots":3,"returnSlots":1},"@_debitView_3336":{"entryPoint":4676,"id":3336,"parameterSlots":3,"returnSlots":2},"@_debit_2700":{"entryPoint":7724,"id":2700,"parameterSlots":4,"returnSlots":2},"@_getPeerOrRevert_1485":{"entryPoint":4736,"id":1485,"parameterSlots":1,"returnSlots":1},"@_lzReceiveSimulate_3238":{"entryPoint":null,"id":3238,"parameterSlots":7,"returnSlots":0},"@_lzReceive_3213":{"entryPoint":4796,"id":3213,"parameterSlots":7,"returnSlots":0},"@_lzSend_1781":{"entryPoint":7762,"id":1781,"parameterSlots":5,"returnSlots":1},"@_mint_4604":{"entryPoint":6023,"id":4604,"parameterSlots":2,"returnSlots":0},"@_msgSender_6667":{"entryPoint":null,"id":6667,"parameterSlots":0,"returnSlots":1},"@_payLzToken_1838":{"entryPoint":8123,"id":1838,"parameterSlots":1,"returnSlots":0},"@_payNative_1802":{"entryPoint":8083,"id":1802,"parameterSlots":1,"returnSlots":1},"@_quote_1726":{"entryPoint":5798,"id":1726,"parameterSlots":4,"returnSlots":1},"@_removeDust_3272":{"entryPoint":6928,"id":3272,"parameterSlots":1,"returnSlots":1},"@_send_3071":{"entryPoint":6464,"id":3071,"parameterSlots":3,"returnSlots":2},"@_setEnforcedOptions_2071":{"entryPoint":6157,"id":2071,"parameterSlots":1,"returnSlots":0},"@_setPeer_1457":{"entryPoint":5422,"id":1457,"parameterSlots":2,"returnSlots":0},"@_spendAllowance_4763":{"entryPoint":5155,"id":4763,"parameterSlots":3,"returnSlots":0},"@_toLD_3285":{"entryPoint":7042,"id":3285,"parameterSlots":1,"returnSlots":1},"@_toSD_3301":{"entryPoint":7558,"id":3301,"parameterSlots":1,"returnSlots":1},"@_transferOwnership_3979":{"entryPoint":6077,"id":3979,"parameterSlots":1,"returnSlots":0},"@_transfer_4494":{"entryPoint":5282,"id":4494,"parameterSlots":3,"returnSlots":0},"@_update_4571":{"entryPoint":7260,"id":4571,"parameterSlots":3,"returnSlots":0},"@addressToBytes32_3811":{"entryPoint":null,"id":3811,"parameterSlots":1,"returnSlots":1},"@allowInitializePath_1572":{"entryPoint":4604,"id":1572,"parameterSlots":1,"returnSlots":1},"@allowance_4391":{"entryPoint":null,"id":4391,"parameterSlots":2,"returnSlots":1},"@amountSD_3778":{"entryPoint":7007,"id":3778,"parameterSlots":2,"returnSlots":1},"@approvalRequired_2667":{"entryPoint":null,"id":2667,"parameterSlots":0,"returnSlots":1},"@approve_4415":{"entryPoint":2251,"id":4415,"parameterSlots":2,"returnSlots":1},"@balanceOf_4350":{"entryPoint":null,"id":4350,"parameterSlots":1,"returnSlots":1},"@bytes32ToAddress_3831":{"entryPoint":null,"id":3831,"parameterSlots":1,"returnSlots":1},"@combineOptions_2129":{"entryPoint":3405,"id":2129,"parameterSlots":4,"returnSlots":1},"@composeMsg_3791":{"entryPoint":7135,"id":3791,"parameterSlots":2,"returnSlots":1},"@decimalConversionRate_2778":{"entryPoint":null,"id":2778,"parameterSlots":0,"returnSlots":0},"@decimals_4328":{"entryPoint":null,"id":4328,"parameterSlots":0,"returnSlots":1},"@encode_3548":{"entryPoint":7210,"id":3548,"parameterSlots":4,"returnSlots":1},"@encode_3728":{"entryPoint":7602,"id":3728,"parameterSlots":3,"returnSlots":2},"@endpoint_1386":{"entryPoint":null,"id":1386,"parameterSlots":0,"returnSlots":0},"@enforcedOptions_2006":{"entryPoint":3051,"id":2006,"parameterSlots":0,"returnSlots":0},"@isComposeMsgSender_1554":{"entryPoint":3329,"id":1554,"parameterSlots":4,"returnSlots":1},"@isComposed_3742":{"entryPoint":null,"id":3742,"parameterSlots":2,"returnSlots":1},"@isPeer_3256":{"entryPoint":null,"id":3256,"parameterSlots":2,"returnSlots":1},"@lzReceiveAndRevert_2262":{"entryPoint":3829,"id":2262,"parameterSlots":2,"returnSlots":0},"@lzReceiveSimulate_2297":{"entryPoint":4409,"id":2297,"parameterSlots":7,"returnSlots":0},"@lzReceive_1637":{"entryPoint":2678,"id":1637,"parameterSlots":7,"returnSlots":0},"@mint_13152":{"entryPoint":3033,"id":13152,"parameterSlots":2,"returnSlots":0},"@msgInspector_2786":{"entryPoint":null,"id":2786,"parameterSlots":0,"returnSlots":0},"@name_4310":{"entryPoint":2105,"id":4310,"parameterSlots":0,"returnSlots":1},"@nextNonce_1585":{"entryPoint":null,"id":1585,"parameterSlots":2,"returnSlots":1},"@oAppVersion_1370":{"entryPoint":null,"id":1370,"parameterSlots":0,"returnSlots":2},"@oApp_2178":{"entryPoint":null,"id":2178,"parameterSlots":0,"returnSlots":1},"@oftVersion_2839":{"entryPoint":null,"id":2839,"parameterSlots":0,"returnSlots":2},"@owner_3900":{"entryPoint":null,"id":3900,"parameterSlots":0,"returnSlots":1},"@peers_1390":{"entryPoint":null,"id":1390,"parameterSlots":0,"returnSlots":0},"@preCrime_2166":{"entryPoint":null,"id":2166,"parameterSlots":0,"returnSlots":0},"@quoteOFT_2933":{"entryPoint":2277,"id":2933,"parameterSlots":1,"returnSlots":3},"@quoteSend_2974":{"entryPoint":2930,"id":2974,"parameterSlots":2,"returnSlots":1},"@renounceOwnership_3931":{"entryPoint":3309,"id":3931,"parameterSlots":0,"returnSlots":0},"@safeTransferFrom_4940":{"entryPoint":null,"id":4940,"parameterSlots":4,"returnSlots":0},"@sendTo_3758":{"entryPoint":6983,"id":3758,"parameterSlots":2,"returnSlots":1},"@send_2999":{"entryPoint":4223,"id":2999,"parameterSlots":3,"returnSlots":2},"@setDelegate_1500":{"entryPoint":4275,"id":1500,"parameterSlots":1,"returnSlots":0},"@setEnforcedOptions_2021":{"entryPoint":3379,"id":2021,"parameterSlots":2,"returnSlots":0},"@setMsgInspector_2865":{"entryPoint":3216,"id":2865,"parameterSlots":1,"returnSlots":0},"@setPeer_1437":{"entryPoint":2908,"id":1437,"parameterSlots":2,"returnSlots":0},"@setPreCrime_2195":{"entryPoint":4456,"id":2195,"parameterSlots":1,"returnSlots":0},"@sharedDecimals_2848":{"entryPoint":null,"id":2848,"parameterSlots":0,"returnSlots":1},"@symbol_4319":{"entryPoint":3350,"id":4319,"parameterSlots":0,"returnSlots":1},"@token_2658":{"entryPoint":null,"id":2658,"parameterSlots":0,"returnSlots":1},"@totalSupply_4337":{"entryPoint":null,"id":4337,"parameterSlots":0,"returnSlots":1},"@transferFrom_4447":{"entryPoint":2870,"id":4447,"parameterSlots":3,"returnSlots":1},"@transferOwnership_3959":{"entryPoint":4542,"id":3959,"parameterSlots":1,"returnSlots":0},"@transfer_4374":{"entryPoint":3365,"id":4374,"parameterSlots":2,"returnSlots":1},"abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata":{"entryPoint":9690,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes_calldata":{"entryPoint":9021,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_struct_MessagingFee_fromMemory":{"entryPoint":11594,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_Origin_calldata":{"entryPoint":9003,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_SendParam_calldata":{"entryPoint":8770,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":9559,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":10263,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":10137,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":9254,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":8726,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":9758,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":11444,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":11220,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr":{"entryPoint":12076,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr_fromMemory":{"entryPoint":11643,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_fromMemory":{"entryPoint":12457,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptr":{"entryPoint":10183,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes32t_bytes_calldata_ptrt_addresst_bytes_calldata_ptr":{"entryPoint":9093,"id":null,"parameterSlots":2,"returnSlots":7},"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes_calldata_ptrt_address":{"entryPoint":9588,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptr":{"entryPoint":8794,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_bool":{"entryPoint":9386,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_struct$_MessagingFee_$33_calldata_ptrt_address":{"entryPoint":9946,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":10292,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint32":{"entryPoint":9823,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint32t_bytes32":{"entryPoint":9344,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint32t_uint16":{"entryPoint":9508,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint32t_uint16t_bytes_calldata_ptr":{"entryPoint":9850,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_uint64":{"entryPoint":11329,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint16":{"entryPoint":9490,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint32":{"entryPoint":9319,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_bytes_calldata":{"entryPoint":10879,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_string":{"entryPoint":8642,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_OFTLimit":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_bytes32_t_uint64__to_t_bytes32_t_uint64__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":12390,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_calldata_ptr_slice__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":10839,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_packed_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__to_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":12292,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes32_t_rational_0_by_1_t_bytes_memory_ptr__to_t_address_t_bytes32_t_uint16_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11358,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":11932,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes4_t_uint64__to_t_bytes4_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":10920,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11407,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_ILayerZeroEndpointV2_$202__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8686,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_MessagingFee_$33_memory_ptr__to_t_struct$_MessagingFee_$33_memory_ptr__fromStack_reversed":{"entryPoint":9467,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_MessagingParams_$20_memory_ptr_t_address__to_t_struct$_MessagingParams_$20_memory_ptr_t_address__fromStack_reversed":{"entryPoint":11473,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed":{"entryPoint":10055,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed":{"entryPoint":8846,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_struct$_Origin_$40_calldata_ptr_t_bytes32_t_bytes_calldata_ptr_t_address_t_bytes_calldata_ptr__to_t_struct$_Origin_$40_memory_ptr_t_bytes32_t_bytes_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11086,"id":null,"parameterSlots":8,"returnSlots":1},"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint32_t_bytes32__to_t_uint32_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint32_t_uint256_t_uint256__to_t_uint32_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint64_t_uint64__to_t_uint64_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"access_calldata_tail_t_bytes_calldata_ptr":{"entryPoint":10995,"id":null,"parameterSlots":2,"returnSlots":2},"access_calldata_tail_t_struct$_InboundPacket_$2486_calldata_ptr":{"entryPoint":10962,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":10413,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_3873":{"entryPoint":10339,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_3874":{"entryPoint":10379,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":10461,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_bytes_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":10797,"id":null,"parameterSlots":4,"returnSlots":2},"checked_add_t_uint256":{"entryPoint":12371,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":12149,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":12183,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_bytes_storage":{"entryPoint":11671,"id":null,"parameterSlots":3,"returnSlots":0},"convert_array_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr":{"entryPoint":10500,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes32":{"entryPoint":12206,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes8":{"entryPoint":12236,"id":null,"parameterSlots":2,"returnSlots":1},"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage":{"entryPoint":11742,"id":null,"parameterSlots":2,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":8606,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":10211,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":12127,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":10940,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":10317,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":8705,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":9372,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":11065,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:34459:66","nodeType":"YulBlock","src":"0:34459:66","statements":[{"nativeSrc":"6:3:66","nodeType":"YulBlock","src":"6:3:66","statements":[]},{"body":{"nativeSrc":"80:184:66","nodeType":"YulBlock","src":"80:184:66","statements":[{"nativeSrc":"90:10:66","nodeType":"YulVariableDeclaration","src":"90:10:66","value":{"kind":"number","nativeSrc":"99:1:66","nodeType":"YulLiteral","src":"99:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"94:1:66","nodeType":"YulTypedName","src":"94:1:66","type":""}]},{"body":{"nativeSrc":"159:63:66","nodeType":"YulBlock","src":"159:63:66","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"184:3:66","nodeType":"YulIdentifier","src":"184:3:66"},{"name":"i","nativeSrc":"189:1:66","nodeType":"YulIdentifier","src":"189:1:66"}],"functionName":{"name":"add","nativeSrc":"180:3:66","nodeType":"YulIdentifier","src":"180:3:66"},"nativeSrc":"180:11:66","nodeType":"YulFunctionCall","src":"180:11:66"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"203:3:66","nodeType":"YulIdentifier","src":"203:3:66"},{"name":"i","nativeSrc":"208:1:66","nodeType":"YulIdentifier","src":"208:1:66"}],"functionName":{"name":"add","nativeSrc":"199:3:66","nodeType":"YulIdentifier","src":"199:3:66"},"nativeSrc":"199:11:66","nodeType":"YulFunctionCall","src":"199:11:66"}],"functionName":{"name":"mload","nativeSrc":"193:5:66","nodeType":"YulIdentifier","src":"193:5:66"},"nativeSrc":"193:18:66","nodeType":"YulFunctionCall","src":"193:18:66"}],"functionName":{"name":"mstore","nativeSrc":"173:6:66","nodeType":"YulIdentifier","src":"173:6:66"},"nativeSrc":"173:39:66","nodeType":"YulFunctionCall","src":"173:39:66"},"nativeSrc":"173:39:66","nodeType":"YulExpressionStatement","src":"173:39:66"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"120:1:66","nodeType":"YulIdentifier","src":"120:1:66"},{"name":"length","nativeSrc":"123:6:66","nodeType":"YulIdentifier","src":"123:6:66"}],"functionName":{"name":"lt","nativeSrc":"117:2:66","nodeType":"YulIdentifier","src":"117:2:66"},"nativeSrc":"117:13:66","nodeType":"YulFunctionCall","src":"117:13:66"},"nativeSrc":"109:113:66","nodeType":"YulForLoop","post":{"nativeSrc":"131:19:66","nodeType":"YulBlock","src":"131:19:66","statements":[{"nativeSrc":"133:15:66","nodeType":"YulAssignment","src":"133:15:66","value":{"arguments":[{"name":"i","nativeSrc":"142:1:66","nodeType":"YulIdentifier","src":"142:1:66"},{"kind":"number","nativeSrc":"145:2:66","nodeType":"YulLiteral","src":"145:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"138:3:66","nodeType":"YulIdentifier","src":"138:3:66"},"nativeSrc":"138:10:66","nodeType":"YulFunctionCall","src":"138:10:66"},"variableNames":[{"name":"i","nativeSrc":"133:1:66","nodeType":"YulIdentifier","src":"133:1:66"}]}]},"pre":{"nativeSrc":"113:3:66","nodeType":"YulBlock","src":"113:3:66","statements":[]},"src":"109:113:66"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"242:3:66","nodeType":"YulIdentifier","src":"242:3:66"},{"name":"length","nativeSrc":"247:6:66","nodeType":"YulIdentifier","src":"247:6:66"}],"functionName":{"name":"add","nativeSrc":"238:3:66","nodeType":"YulIdentifier","src":"238:3:66"},"nativeSrc":"238:16:66","nodeType":"YulFunctionCall","src":"238:16:66"},{"kind":"number","nativeSrc":"256:1:66","nodeType":"YulLiteral","src":"256:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"231:6:66","nodeType":"YulIdentifier","src":"231:6:66"},"nativeSrc":"231:27:66","nodeType":"YulFunctionCall","src":"231:27:66"},"nativeSrc":"231:27:66","nodeType":"YulExpressionStatement","src":"231:27:66"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"14:250:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"58:3:66","nodeType":"YulTypedName","src":"58:3:66","type":""},{"name":"dst","nativeSrc":"63:3:66","nodeType":"YulTypedName","src":"63:3:66","type":""},{"name":"length","nativeSrc":"68:6:66","nodeType":"YulTypedName","src":"68:6:66","type":""}],"src":"14:250:66"},{"body":{"nativeSrc":"319:221:66","nodeType":"YulBlock","src":"319:221:66","statements":[{"nativeSrc":"329:26:66","nodeType":"YulVariableDeclaration","src":"329:26:66","value":{"arguments":[{"name":"value","nativeSrc":"349:5:66","nodeType":"YulIdentifier","src":"349:5:66"}],"functionName":{"name":"mload","nativeSrc":"343:5:66","nodeType":"YulIdentifier","src":"343:5:66"},"nativeSrc":"343:12:66","nodeType":"YulFunctionCall","src":"343:12:66"},"variables":[{"name":"length","nativeSrc":"333:6:66","nodeType":"YulTypedName","src":"333:6:66","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"371:3:66","nodeType":"YulIdentifier","src":"371:3:66"},{"name":"length","nativeSrc":"376:6:66","nodeType":"YulIdentifier","src":"376:6:66"}],"functionName":{"name":"mstore","nativeSrc":"364:6:66","nodeType":"YulIdentifier","src":"364:6:66"},"nativeSrc":"364:19:66","nodeType":"YulFunctionCall","src":"364:19:66"},"nativeSrc":"364:19:66","nodeType":"YulExpressionStatement","src":"364:19:66"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"431:5:66","nodeType":"YulIdentifier","src":"431:5:66"},{"kind":"number","nativeSrc":"438:4:66","nodeType":"YulLiteral","src":"438:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"427:3:66","nodeType":"YulIdentifier","src":"427:3:66"},"nativeSrc":"427:16:66","nodeType":"YulFunctionCall","src":"427:16:66"},{"arguments":[{"name":"pos","nativeSrc":"449:3:66","nodeType":"YulIdentifier","src":"449:3:66"},{"kind":"number","nativeSrc":"454:4:66","nodeType":"YulLiteral","src":"454:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"445:3:66","nodeType":"YulIdentifier","src":"445:3:66"},"nativeSrc":"445:14:66","nodeType":"YulFunctionCall","src":"445:14:66"},{"name":"length","nativeSrc":"461:6:66","nodeType":"YulIdentifier","src":"461:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"392:34:66","nodeType":"YulIdentifier","src":"392:34:66"},"nativeSrc":"392:76:66","nodeType":"YulFunctionCall","src":"392:76:66"},"nativeSrc":"392:76:66","nodeType":"YulExpressionStatement","src":"392:76:66"},{"nativeSrc":"477:57:66","nodeType":"YulAssignment","src":"477:57:66","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"492:3:66","nodeType":"YulIdentifier","src":"492:3:66"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"505:6:66","nodeType":"YulIdentifier","src":"505:6:66"},{"kind":"number","nativeSrc":"513:2:66","nodeType":"YulLiteral","src":"513:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"501:3:66","nodeType":"YulIdentifier","src":"501:3:66"},"nativeSrc":"501:15:66","nodeType":"YulFunctionCall","src":"501:15:66"},{"arguments":[{"kind":"number","nativeSrc":"522:2:66","nodeType":"YulLiteral","src":"522:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"518:3:66","nodeType":"YulIdentifier","src":"518:3:66"},"nativeSrc":"518:7:66","nodeType":"YulFunctionCall","src":"518:7:66"}],"functionName":{"name":"and","nativeSrc":"497:3:66","nodeType":"YulIdentifier","src":"497:3:66"},"nativeSrc":"497:29:66","nodeType":"YulFunctionCall","src":"497:29:66"}],"functionName":{"name":"add","nativeSrc":"488:3:66","nodeType":"YulIdentifier","src":"488:3:66"},"nativeSrc":"488:39:66","nodeType":"YulFunctionCall","src":"488:39:66"},{"kind":"number","nativeSrc":"529:4:66","nodeType":"YulLiteral","src":"529:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"484:3:66","nodeType":"YulIdentifier","src":"484:3:66"},"nativeSrc":"484:50:66","nodeType":"YulFunctionCall","src":"484:50:66"},"variableNames":[{"name":"end","nativeSrc":"477:3:66","nodeType":"YulIdentifier","src":"477:3:66"}]}]},"name":"abi_encode_string","nativeSrc":"269:271:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"296:5:66","nodeType":"YulTypedName","src":"296:5:66","type":""},{"name":"pos","nativeSrc":"303:3:66","nodeType":"YulTypedName","src":"303:3:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"311:3:66","nodeType":"YulTypedName","src":"311:3:66","type":""}],"src":"269:271:66"},{"body":{"nativeSrc":"666:99:66","nodeType":"YulBlock","src":"666:99:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"683:9:66","nodeType":"YulIdentifier","src":"683:9:66"},{"kind":"number","nativeSrc":"694:2:66","nodeType":"YulLiteral","src":"694:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"676:6:66","nodeType":"YulIdentifier","src":"676:6:66"},"nativeSrc":"676:21:66","nodeType":"YulFunctionCall","src":"676:21:66"},"nativeSrc":"676:21:66","nodeType":"YulExpressionStatement","src":"676:21:66"},{"nativeSrc":"706:53:66","nodeType":"YulAssignment","src":"706:53:66","value":{"arguments":[{"name":"value0","nativeSrc":"732:6:66","nodeType":"YulIdentifier","src":"732:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"744:9:66","nodeType":"YulIdentifier","src":"744:9:66"},{"kind":"number","nativeSrc":"755:2:66","nodeType":"YulLiteral","src":"755:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"740:3:66","nodeType":"YulIdentifier","src":"740:3:66"},"nativeSrc":"740:18:66","nodeType":"YulFunctionCall","src":"740:18:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"714:17:66","nodeType":"YulIdentifier","src":"714:17:66"},"nativeSrc":"714:45:66","nodeType":"YulFunctionCall","src":"714:45:66"},"variableNames":[{"name":"tail","nativeSrc":"706:4:66","nodeType":"YulIdentifier","src":"706:4:66"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"545:220:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"635:9:66","nodeType":"YulTypedName","src":"635:9:66","type":""},{"name":"value0","nativeSrc":"646:6:66","nodeType":"YulTypedName","src":"646:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"657:4:66","nodeType":"YulTypedName","src":"657:4:66","type":""}],"src":"545:220:66"},{"body":{"nativeSrc":"815:86:66","nodeType":"YulBlock","src":"815:86:66","statements":[{"body":{"nativeSrc":"879:16:66","nodeType":"YulBlock","src":"879:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"888:1:66","nodeType":"YulLiteral","src":"888:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"891:1:66","nodeType":"YulLiteral","src":"891:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"881:6:66","nodeType":"YulIdentifier","src":"881:6:66"},"nativeSrc":"881:12:66","nodeType":"YulFunctionCall","src":"881:12:66"},"nativeSrc":"881:12:66","nodeType":"YulExpressionStatement","src":"881:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"838:5:66","nodeType":"YulIdentifier","src":"838:5:66"},{"arguments":[{"name":"value","nativeSrc":"849:5:66","nodeType":"YulIdentifier","src":"849:5:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"864:3:66","nodeType":"YulLiteral","src":"864:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"869:1:66","nodeType":"YulLiteral","src":"869:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"860:3:66","nodeType":"YulIdentifier","src":"860:3:66"},"nativeSrc":"860:11:66","nodeType":"YulFunctionCall","src":"860:11:66"},{"kind":"number","nativeSrc":"873:1:66","nodeType":"YulLiteral","src":"873:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"856:3:66","nodeType":"YulIdentifier","src":"856:3:66"},"nativeSrc":"856:19:66","nodeType":"YulFunctionCall","src":"856:19:66"}],"functionName":{"name":"and","nativeSrc":"845:3:66","nodeType":"YulIdentifier","src":"845:3:66"},"nativeSrc":"845:31:66","nodeType":"YulFunctionCall","src":"845:31:66"}],"functionName":{"name":"eq","nativeSrc":"835:2:66","nodeType":"YulIdentifier","src":"835:2:66"},"nativeSrc":"835:42:66","nodeType":"YulFunctionCall","src":"835:42:66"}],"functionName":{"name":"iszero","nativeSrc":"828:6:66","nodeType":"YulIdentifier","src":"828:6:66"},"nativeSrc":"828:50:66","nodeType":"YulFunctionCall","src":"828:50:66"},"nativeSrc":"825:70:66","nodeType":"YulIf","src":"825:70:66"}]},"name":"validator_revert_address","nativeSrc":"770:131:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"804:5:66","nodeType":"YulTypedName","src":"804:5:66","type":""}],"src":"770:131:66"},{"body":{"nativeSrc":"993:280:66","nodeType":"YulBlock","src":"993:280:66","statements":[{"body":{"nativeSrc":"1039:16:66","nodeType":"YulBlock","src":"1039:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1048:1:66","nodeType":"YulLiteral","src":"1048:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1051:1:66","nodeType":"YulLiteral","src":"1051:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1041:6:66","nodeType":"YulIdentifier","src":"1041:6:66"},"nativeSrc":"1041:12:66","nodeType":"YulFunctionCall","src":"1041:12:66"},"nativeSrc":"1041:12:66","nodeType":"YulExpressionStatement","src":"1041:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1014:7:66","nodeType":"YulIdentifier","src":"1014:7:66"},{"name":"headStart","nativeSrc":"1023:9:66","nodeType":"YulIdentifier","src":"1023:9:66"}],"functionName":{"name":"sub","nativeSrc":"1010:3:66","nodeType":"YulIdentifier","src":"1010:3:66"},"nativeSrc":"1010:23:66","nodeType":"YulFunctionCall","src":"1010:23:66"},{"kind":"number","nativeSrc":"1035:2:66","nodeType":"YulLiteral","src":"1035:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1006:3:66","nodeType":"YulIdentifier","src":"1006:3:66"},"nativeSrc":"1006:32:66","nodeType":"YulFunctionCall","src":"1006:32:66"},"nativeSrc":"1003:52:66","nodeType":"YulIf","src":"1003:52:66"},{"nativeSrc":"1064:36:66","nodeType":"YulVariableDeclaration","src":"1064:36:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1090:9:66","nodeType":"YulIdentifier","src":"1090:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"1077:12:66","nodeType":"YulIdentifier","src":"1077:12:66"},"nativeSrc":"1077:23:66","nodeType":"YulFunctionCall","src":"1077:23:66"},"variables":[{"name":"value","nativeSrc":"1068:5:66","nodeType":"YulTypedName","src":"1068:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1134:5:66","nodeType":"YulIdentifier","src":"1134:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1109:24:66","nodeType":"YulIdentifier","src":"1109:24:66"},"nativeSrc":"1109:31:66","nodeType":"YulFunctionCall","src":"1109:31:66"},"nativeSrc":"1109:31:66","nodeType":"YulExpressionStatement","src":"1109:31:66"},{"nativeSrc":"1149:15:66","nodeType":"YulAssignment","src":"1149:15:66","value":{"name":"value","nativeSrc":"1159:5:66","nodeType":"YulIdentifier","src":"1159:5:66"},"variableNames":[{"name":"value0","nativeSrc":"1149:6:66","nodeType":"YulIdentifier","src":"1149:6:66"}]},{"nativeSrc":"1173:16:66","nodeType":"YulVariableDeclaration","src":"1173:16:66","value":{"kind":"number","nativeSrc":"1188:1:66","nodeType":"YulLiteral","src":"1188:1:66","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"1177:7:66","nodeType":"YulTypedName","src":"1177:7:66","type":""}]},{"nativeSrc":"1198:43:66","nodeType":"YulAssignment","src":"1198:43:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1226:9:66","nodeType":"YulIdentifier","src":"1226:9:66"},{"kind":"number","nativeSrc":"1237:2:66","nodeType":"YulLiteral","src":"1237:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1222:3:66","nodeType":"YulIdentifier","src":"1222:3:66"},"nativeSrc":"1222:18:66","nodeType":"YulFunctionCall","src":"1222:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"1209:12:66","nodeType":"YulIdentifier","src":"1209:12:66"},"nativeSrc":"1209:32:66","nodeType":"YulFunctionCall","src":"1209:32:66"},"variableNames":[{"name":"value_1","nativeSrc":"1198:7:66","nodeType":"YulIdentifier","src":"1198:7:66"}]},{"nativeSrc":"1250:17:66","nodeType":"YulAssignment","src":"1250:17:66","value":{"name":"value_1","nativeSrc":"1260:7:66","nodeType":"YulIdentifier","src":"1260:7:66"},"variableNames":[{"name":"value1","nativeSrc":"1250:6:66","nodeType":"YulIdentifier","src":"1250:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"906:367:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"951:9:66","nodeType":"YulTypedName","src":"951:9:66","type":""},{"name":"dataEnd","nativeSrc":"962:7:66","nodeType":"YulTypedName","src":"962:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"974:6:66","nodeType":"YulTypedName","src":"974:6:66","type":""},{"name":"value1","nativeSrc":"982:6:66","nodeType":"YulTypedName","src":"982:6:66","type":""}],"src":"906:367:66"},{"body":{"nativeSrc":"1373:92:66","nodeType":"YulBlock","src":"1373:92:66","statements":[{"nativeSrc":"1383:26:66","nodeType":"YulAssignment","src":"1383:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1395:9:66","nodeType":"YulIdentifier","src":"1395:9:66"},{"kind":"number","nativeSrc":"1406:2:66","nodeType":"YulLiteral","src":"1406:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1391:3:66","nodeType":"YulIdentifier","src":"1391:3:66"},"nativeSrc":"1391:18:66","nodeType":"YulFunctionCall","src":"1391:18:66"},"variableNames":[{"name":"tail","nativeSrc":"1383:4:66","nodeType":"YulIdentifier","src":"1383:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1425:9:66","nodeType":"YulIdentifier","src":"1425:9:66"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"1450:6:66","nodeType":"YulIdentifier","src":"1450:6:66"}],"functionName":{"name":"iszero","nativeSrc":"1443:6:66","nodeType":"YulIdentifier","src":"1443:6:66"},"nativeSrc":"1443:14:66","nodeType":"YulFunctionCall","src":"1443:14:66"}],"functionName":{"name":"iszero","nativeSrc":"1436:6:66","nodeType":"YulIdentifier","src":"1436:6:66"},"nativeSrc":"1436:22:66","nodeType":"YulFunctionCall","src":"1436:22:66"}],"functionName":{"name":"mstore","nativeSrc":"1418:6:66","nodeType":"YulIdentifier","src":"1418:6:66"},"nativeSrc":"1418:41:66","nodeType":"YulFunctionCall","src":"1418:41:66"},"nativeSrc":"1418:41:66","nodeType":"YulExpressionStatement","src":"1418:41:66"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"1278:187:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1342:9:66","nodeType":"YulTypedName","src":"1342:9:66","type":""},{"name":"value0","nativeSrc":"1353:6:66","nodeType":"YulTypedName","src":"1353:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1364:4:66","nodeType":"YulTypedName","src":"1364:4:66","type":""}],"src":"1278:187:66"},{"body":{"nativeSrc":"1542:86:66","nodeType":"YulBlock","src":"1542:86:66","statements":[{"body":{"nativeSrc":"1582:16:66","nodeType":"YulBlock","src":"1582:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1591:1:66","nodeType":"YulLiteral","src":"1591:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1594:1:66","nodeType":"YulLiteral","src":"1594:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1584:6:66","nodeType":"YulIdentifier","src":"1584:6:66"},"nativeSrc":"1584:12:66","nodeType":"YulFunctionCall","src":"1584:12:66"},"nativeSrc":"1584:12:66","nodeType":"YulExpressionStatement","src":"1584:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"1563:3:66","nodeType":"YulIdentifier","src":"1563:3:66"},{"name":"offset","nativeSrc":"1568:6:66","nodeType":"YulIdentifier","src":"1568:6:66"}],"functionName":{"name":"sub","nativeSrc":"1559:3:66","nodeType":"YulIdentifier","src":"1559:3:66"},"nativeSrc":"1559:16:66","nodeType":"YulFunctionCall","src":"1559:16:66"},{"kind":"number","nativeSrc":"1577:3:66","nodeType":"YulLiteral","src":"1577:3:66","type":"","value":"224"}],"functionName":{"name":"slt","nativeSrc":"1555:3:66","nodeType":"YulIdentifier","src":"1555:3:66"},"nativeSrc":"1555:26:66","nodeType":"YulFunctionCall","src":"1555:26:66"},"nativeSrc":"1552:46:66","nodeType":"YulIf","src":"1552:46:66"},{"nativeSrc":"1607:15:66","nodeType":"YulAssignment","src":"1607:15:66","value":{"name":"offset","nativeSrc":"1616:6:66","nodeType":"YulIdentifier","src":"1616:6:66"},"variableNames":[{"name":"value","nativeSrc":"1607:5:66","nodeType":"YulIdentifier","src":"1607:5:66"}]}]},"name":"abi_decode_struct_SendParam_calldata","nativeSrc":"1470:158:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1516:6:66","nodeType":"YulTypedName","src":"1516:6:66","type":""},{"name":"end","nativeSrc":"1524:3:66","nodeType":"YulTypedName","src":"1524:3:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1532:5:66","nodeType":"YulTypedName","src":"1532:5:66","type":""}],"src":"1470:158:66"},{"body":{"nativeSrc":"1732:261:66","nodeType":"YulBlock","src":"1732:261:66","statements":[{"body":{"nativeSrc":"1778:16:66","nodeType":"YulBlock","src":"1778:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1787:1:66","nodeType":"YulLiteral","src":"1787:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1790:1:66","nodeType":"YulLiteral","src":"1790:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1780:6:66","nodeType":"YulIdentifier","src":"1780:6:66"},"nativeSrc":"1780:12:66","nodeType":"YulFunctionCall","src":"1780:12:66"},"nativeSrc":"1780:12:66","nodeType":"YulExpressionStatement","src":"1780:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1753:7:66","nodeType":"YulIdentifier","src":"1753:7:66"},{"name":"headStart","nativeSrc":"1762:9:66","nodeType":"YulIdentifier","src":"1762:9:66"}],"functionName":{"name":"sub","nativeSrc":"1749:3:66","nodeType":"YulIdentifier","src":"1749:3:66"},"nativeSrc":"1749:23:66","nodeType":"YulFunctionCall","src":"1749:23:66"},{"kind":"number","nativeSrc":"1774:2:66","nodeType":"YulLiteral","src":"1774:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1745:3:66","nodeType":"YulIdentifier","src":"1745:3:66"},"nativeSrc":"1745:32:66","nodeType":"YulFunctionCall","src":"1745:32:66"},"nativeSrc":"1742:52:66","nodeType":"YulIf","src":"1742:52:66"},{"nativeSrc":"1803:37:66","nodeType":"YulVariableDeclaration","src":"1803:37:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1830:9:66","nodeType":"YulIdentifier","src":"1830:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"1817:12:66","nodeType":"YulIdentifier","src":"1817:12:66"},"nativeSrc":"1817:23:66","nodeType":"YulFunctionCall","src":"1817:23:66"},"variables":[{"name":"offset","nativeSrc":"1807:6:66","nodeType":"YulTypedName","src":"1807:6:66","type":""}]},{"body":{"nativeSrc":"1883:16:66","nodeType":"YulBlock","src":"1883:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1892:1:66","nodeType":"YulLiteral","src":"1892:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1895:1:66","nodeType":"YulLiteral","src":"1895:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1885:6:66","nodeType":"YulIdentifier","src":"1885:6:66"},"nativeSrc":"1885:12:66","nodeType":"YulFunctionCall","src":"1885:12:66"},"nativeSrc":"1885:12:66","nodeType":"YulExpressionStatement","src":"1885:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1855:6:66","nodeType":"YulIdentifier","src":"1855:6:66"},{"kind":"number","nativeSrc":"1863:18:66","nodeType":"YulLiteral","src":"1863:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1852:2:66","nodeType":"YulIdentifier","src":"1852:2:66"},"nativeSrc":"1852:30:66","nodeType":"YulFunctionCall","src":"1852:30:66"},"nativeSrc":"1849:50:66","nodeType":"YulIf","src":"1849:50:66"},{"nativeSrc":"1908:79:66","nodeType":"YulAssignment","src":"1908:79:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1959:9:66","nodeType":"YulIdentifier","src":"1959:9:66"},{"name":"offset","nativeSrc":"1970:6:66","nodeType":"YulIdentifier","src":"1970:6:66"}],"functionName":{"name":"add","nativeSrc":"1955:3:66","nodeType":"YulIdentifier","src":"1955:3:66"},"nativeSrc":"1955:22:66","nodeType":"YulFunctionCall","src":"1955:22:66"},{"name":"dataEnd","nativeSrc":"1979:7:66","nodeType":"YulIdentifier","src":"1979:7:66"}],"functionName":{"name":"abi_decode_struct_SendParam_calldata","nativeSrc":"1918:36:66","nodeType":"YulIdentifier","src":"1918:36:66"},"nativeSrc":"1918:69:66","nodeType":"YulFunctionCall","src":"1918:69:66"},"variableNames":[{"name":"value0","nativeSrc":"1908:6:66","nodeType":"YulIdentifier","src":"1908:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptr","nativeSrc":"1633:360:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1698:9:66","nodeType":"YulTypedName","src":"1698:9:66","type":""},{"name":"dataEnd","nativeSrc":"1709:7:66","nodeType":"YulTypedName","src":"1709:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1721:6:66","nodeType":"YulTypedName","src":"1721:6:66","type":""}],"src":"1633:360:66"},{"body":{"nativeSrc":"2050:97:66","nodeType":"YulBlock","src":"2050:97:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"2067:3:66","nodeType":"YulIdentifier","src":"2067:3:66"},{"arguments":[{"name":"value","nativeSrc":"2078:5:66","nodeType":"YulIdentifier","src":"2078:5:66"}],"functionName":{"name":"mload","nativeSrc":"2072:5:66","nodeType":"YulIdentifier","src":"2072:5:66"},"nativeSrc":"2072:12:66","nodeType":"YulFunctionCall","src":"2072:12:66"}],"functionName":{"name":"mstore","nativeSrc":"2060:6:66","nodeType":"YulIdentifier","src":"2060:6:66"},"nativeSrc":"2060:25:66","nodeType":"YulFunctionCall","src":"2060:25:66"},"nativeSrc":"2060:25:66","nodeType":"YulExpressionStatement","src":"2060:25:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2105:3:66","nodeType":"YulIdentifier","src":"2105:3:66"},{"kind":"number","nativeSrc":"2110:4:66","nodeType":"YulLiteral","src":"2110:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2101:3:66","nodeType":"YulIdentifier","src":"2101:3:66"},"nativeSrc":"2101:14:66","nodeType":"YulFunctionCall","src":"2101:14:66"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2127:5:66","nodeType":"YulIdentifier","src":"2127:5:66"},{"kind":"number","nativeSrc":"2134:4:66","nodeType":"YulLiteral","src":"2134:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2123:3:66","nodeType":"YulIdentifier","src":"2123:3:66"},"nativeSrc":"2123:16:66","nodeType":"YulFunctionCall","src":"2123:16:66"}],"functionName":{"name":"mload","nativeSrc":"2117:5:66","nodeType":"YulIdentifier","src":"2117:5:66"},"nativeSrc":"2117:23:66","nodeType":"YulFunctionCall","src":"2117:23:66"}],"functionName":{"name":"mstore","nativeSrc":"2094:6:66","nodeType":"YulIdentifier","src":"2094:6:66"},"nativeSrc":"2094:47:66","nodeType":"YulFunctionCall","src":"2094:47:66"},"nativeSrc":"2094:47:66","nodeType":"YulExpressionStatement","src":"2094:47:66"}]},"name":"abi_encode_struct_OFTLimit","nativeSrc":"1998:149:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2034:5:66","nodeType":"YulTypedName","src":"2034:5:66","type":""},{"name":"pos","nativeSrc":"2041:3:66","nodeType":"YulTypedName","src":"2041:3:66","type":""}],"src":"1998:149:66"},{"body":{"nativeSrc":"2527:925:66","nodeType":"YulBlock","src":"2527:925:66","statements":[{"nativeSrc":"2537:33:66","nodeType":"YulVariableDeclaration","src":"2537:33:66","value":{"arguments":[{"name":"headStart","nativeSrc":"2555:9:66","nodeType":"YulIdentifier","src":"2555:9:66"},{"kind":"number","nativeSrc":"2566:3:66","nodeType":"YulLiteral","src":"2566:3:66","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"2551:3:66","nodeType":"YulIdentifier","src":"2551:3:66"},"nativeSrc":"2551:19:66","nodeType":"YulFunctionCall","src":"2551:19:66"},"variables":[{"name":"tail_1","nativeSrc":"2541:6:66","nodeType":"YulTypedName","src":"2541:6:66","type":""}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"2606:6:66","nodeType":"YulIdentifier","src":"2606:6:66"},{"name":"headStart","nativeSrc":"2614:9:66","nodeType":"YulIdentifier","src":"2614:9:66"}],"functionName":{"name":"abi_encode_struct_OFTLimit","nativeSrc":"2579:26:66","nodeType":"YulIdentifier","src":"2579:26:66"},"nativeSrc":"2579:45:66","nodeType":"YulFunctionCall","src":"2579:45:66"},"nativeSrc":"2579:45:66","nodeType":"YulExpressionStatement","src":"2579:45:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2644:9:66","nodeType":"YulIdentifier","src":"2644:9:66"},{"kind":"number","nativeSrc":"2655:2:66","nodeType":"YulLiteral","src":"2655:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2640:3:66","nodeType":"YulIdentifier","src":"2640:3:66"},"nativeSrc":"2640:18:66","nodeType":"YulFunctionCall","src":"2640:18:66"},{"kind":"number","nativeSrc":"2660:3:66","nodeType":"YulLiteral","src":"2660:3:66","type":"","value":"160"}],"functionName":{"name":"mstore","nativeSrc":"2633:6:66","nodeType":"YulIdentifier","src":"2633:6:66"},"nativeSrc":"2633:31:66","nodeType":"YulFunctionCall","src":"2633:31:66"},"nativeSrc":"2633:31:66","nodeType":"YulExpressionStatement","src":"2633:31:66"},{"nativeSrc":"2673:17:66","nodeType":"YulVariableDeclaration","src":"2673:17:66","value":{"name":"tail_1","nativeSrc":"2684:6:66","nodeType":"YulIdentifier","src":"2684:6:66"},"variables":[{"name":"pos","nativeSrc":"2677:3:66","nodeType":"YulTypedName","src":"2677:3:66","type":""}]},{"nativeSrc":"2699:27:66","nodeType":"YulVariableDeclaration","src":"2699:27:66","value":{"arguments":[{"name":"value1","nativeSrc":"2719:6:66","nodeType":"YulIdentifier","src":"2719:6:66"}],"functionName":{"name":"mload","nativeSrc":"2713:5:66","nodeType":"YulIdentifier","src":"2713:5:66"},"nativeSrc":"2713:13:66","nodeType":"YulFunctionCall","src":"2713:13:66"},"variables":[{"name":"length","nativeSrc":"2703:6:66","nodeType":"YulTypedName","src":"2703:6:66","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"2742:6:66","nodeType":"YulIdentifier","src":"2742:6:66"},{"name":"length","nativeSrc":"2750:6:66","nodeType":"YulIdentifier","src":"2750:6:66"}],"functionName":{"name":"mstore","nativeSrc":"2735:6:66","nodeType":"YulIdentifier","src":"2735:6:66"},"nativeSrc":"2735:22:66","nodeType":"YulFunctionCall","src":"2735:22:66"},"nativeSrc":"2735:22:66","nodeType":"YulExpressionStatement","src":"2735:22:66"},{"nativeSrc":"2766:26:66","nodeType":"YulAssignment","src":"2766:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"2777:9:66","nodeType":"YulIdentifier","src":"2777:9:66"},{"kind":"number","nativeSrc":"2788:3:66","nodeType":"YulLiteral","src":"2788:3:66","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"2773:3:66","nodeType":"YulIdentifier","src":"2773:3:66"},"nativeSrc":"2773:19:66","nodeType":"YulFunctionCall","src":"2773:19:66"},"variableNames":[{"name":"pos","nativeSrc":"2766:3:66","nodeType":"YulIdentifier","src":"2766:3:66"}]},{"nativeSrc":"2801:54:66","nodeType":"YulVariableDeclaration","src":"2801:54:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2823:9:66","nodeType":"YulIdentifier","src":"2823:9:66"},{"arguments":[{"kind":"number","nativeSrc":"2838:1:66","nodeType":"YulLiteral","src":"2838:1:66","type":"","value":"5"},{"name":"length","nativeSrc":"2841:6:66","nodeType":"YulIdentifier","src":"2841:6:66"}],"functionName":{"name":"shl","nativeSrc":"2834:3:66","nodeType":"YulIdentifier","src":"2834:3:66"},"nativeSrc":"2834:14:66","nodeType":"YulFunctionCall","src":"2834:14:66"}],"functionName":{"name":"add","nativeSrc":"2819:3:66","nodeType":"YulIdentifier","src":"2819:3:66"},"nativeSrc":"2819:30:66","nodeType":"YulFunctionCall","src":"2819:30:66"},{"kind":"number","nativeSrc":"2851:3:66","nodeType":"YulLiteral","src":"2851:3:66","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"2815:3:66","nodeType":"YulIdentifier","src":"2815:3:66"},"nativeSrc":"2815:40:66","nodeType":"YulFunctionCall","src":"2815:40:66"},"variables":[{"name":"tail_2","nativeSrc":"2805:6:66","nodeType":"YulTypedName","src":"2805:6:66","type":""}]},{"nativeSrc":"2864:31:66","nodeType":"YulVariableDeclaration","src":"2864:31:66","value":{"arguments":[{"name":"value1","nativeSrc":"2882:6:66","nodeType":"YulIdentifier","src":"2882:6:66"},{"kind":"number","nativeSrc":"2890:4:66","nodeType":"YulLiteral","src":"2890:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2878:3:66","nodeType":"YulIdentifier","src":"2878:3:66"},"nativeSrc":"2878:17:66","nodeType":"YulFunctionCall","src":"2878:17:66"},"variables":[{"name":"srcPtr","nativeSrc":"2868:6:66","nodeType":"YulTypedName","src":"2868:6:66","type":""}]},{"nativeSrc":"2904:10:66","nodeType":"YulVariableDeclaration","src":"2904:10:66","value":{"kind":"number","nativeSrc":"2913:1:66","nodeType":"YulLiteral","src":"2913:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"2908:1:66","nodeType":"YulTypedName","src":"2908:1:66","type":""}]},{"body":{"nativeSrc":"2972:388:66","nodeType":"YulBlock","src":"2972:388:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"2993:3:66","nodeType":"YulIdentifier","src":"2993:3:66"},{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"3006:6:66","nodeType":"YulIdentifier","src":"3006:6:66"},{"name":"headStart","nativeSrc":"3014:9:66","nodeType":"YulIdentifier","src":"3014:9:66"}],"functionName":{"name":"sub","nativeSrc":"3002:3:66","nodeType":"YulIdentifier","src":"3002:3:66"},"nativeSrc":"3002:22:66","nodeType":"YulFunctionCall","src":"3002:22:66"},{"arguments":[{"kind":"number","nativeSrc":"3030:3:66","nodeType":"YulLiteral","src":"3030:3:66","type":"","value":"191"}],"functionName":{"name":"not","nativeSrc":"3026:3:66","nodeType":"YulIdentifier","src":"3026:3:66"},"nativeSrc":"3026:8:66","nodeType":"YulFunctionCall","src":"3026:8:66"}],"functionName":{"name":"add","nativeSrc":"2998:3:66","nodeType":"YulIdentifier","src":"2998:3:66"},"nativeSrc":"2998:37:66","nodeType":"YulFunctionCall","src":"2998:37:66"}],"functionName":{"name":"mstore","nativeSrc":"2986:6:66","nodeType":"YulIdentifier","src":"2986:6:66"},"nativeSrc":"2986:50:66","nodeType":"YulFunctionCall","src":"2986:50:66"},"nativeSrc":"2986:50:66","nodeType":"YulExpressionStatement","src":"2986:50:66"},{"nativeSrc":"3049:23:66","nodeType":"YulVariableDeclaration","src":"3049:23:66","value":{"arguments":[{"name":"srcPtr","nativeSrc":"3065:6:66","nodeType":"YulIdentifier","src":"3065:6:66"}],"functionName":{"name":"mload","nativeSrc":"3059:5:66","nodeType":"YulIdentifier","src":"3059:5:66"},"nativeSrc":"3059:13:66","nodeType":"YulFunctionCall","src":"3059:13:66"},"variables":[{"name":"_1","nativeSrc":"3053:2:66","nodeType":"YulTypedName","src":"3053:2:66","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nativeSrc":"3092:6:66","nodeType":"YulIdentifier","src":"3092:6:66"},{"arguments":[{"name":"_1","nativeSrc":"3106:2:66","nodeType":"YulIdentifier","src":"3106:2:66"}],"functionName":{"name":"mload","nativeSrc":"3100:5:66","nodeType":"YulIdentifier","src":"3100:5:66"},"nativeSrc":"3100:9:66","nodeType":"YulFunctionCall","src":"3100:9:66"}],"functionName":{"name":"mstore","nativeSrc":"3085:6:66","nodeType":"YulIdentifier","src":"3085:6:66"},"nativeSrc":"3085:25:66","nodeType":"YulFunctionCall","src":"3085:25:66"},"nativeSrc":"3085:25:66","nodeType":"YulExpressionStatement","src":"3085:25:66"},{"nativeSrc":"3123:40:66","nodeType":"YulVariableDeclaration","src":"3123:40:66","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3153:2:66","nodeType":"YulIdentifier","src":"3153:2:66"},{"kind":"number","nativeSrc":"3157:4:66","nodeType":"YulLiteral","src":"3157:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3149:3:66","nodeType":"YulIdentifier","src":"3149:3:66"},"nativeSrc":"3149:13:66","nodeType":"YulFunctionCall","src":"3149:13:66"}],"functionName":{"name":"mload","nativeSrc":"3143:5:66","nodeType":"YulIdentifier","src":"3143:5:66"},"nativeSrc":"3143:20:66","nodeType":"YulFunctionCall","src":"3143:20:66"},"variables":[{"name":"memberValue0","nativeSrc":"3127:12:66","nodeType":"YulTypedName","src":"3127:12:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"3187:6:66","nodeType":"YulIdentifier","src":"3187:6:66"},{"kind":"number","nativeSrc":"3195:4:66","nodeType":"YulLiteral","src":"3195:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3183:3:66","nodeType":"YulIdentifier","src":"3183:3:66"},"nativeSrc":"3183:17:66","nodeType":"YulFunctionCall","src":"3183:17:66"},{"kind":"number","nativeSrc":"3202:2:66","nodeType":"YulLiteral","src":"3202:2:66","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"3176:6:66","nodeType":"YulIdentifier","src":"3176:6:66"},"nativeSrc":"3176:29:66","nodeType":"YulFunctionCall","src":"3176:29:66"},"nativeSrc":"3176:29:66","nodeType":"YulExpressionStatement","src":"3176:29:66"},{"nativeSrc":"3218:58:66","nodeType":"YulAssignment","src":"3218:58:66","value":{"arguments":[{"name":"memberValue0","nativeSrc":"3246:12:66","nodeType":"YulIdentifier","src":"3246:12:66"},{"arguments":[{"name":"tail_2","nativeSrc":"3264:6:66","nodeType":"YulIdentifier","src":"3264:6:66"},{"kind":"number","nativeSrc":"3272:2:66","nodeType":"YulLiteral","src":"3272:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3260:3:66","nodeType":"YulIdentifier","src":"3260:3:66"},"nativeSrc":"3260:15:66","nodeType":"YulFunctionCall","src":"3260:15:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"3228:17:66","nodeType":"YulIdentifier","src":"3228:17:66"},"nativeSrc":"3228:48:66","nodeType":"YulFunctionCall","src":"3228:48:66"},"variableNames":[{"name":"tail_2","nativeSrc":"3218:6:66","nodeType":"YulIdentifier","src":"3218:6:66"}]},{"nativeSrc":"3289:27:66","nodeType":"YulAssignment","src":"3289:27:66","value":{"arguments":[{"name":"srcPtr","nativeSrc":"3303:6:66","nodeType":"YulIdentifier","src":"3303:6:66"},{"kind":"number","nativeSrc":"3311:4:66","nodeType":"YulLiteral","src":"3311:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3299:3:66","nodeType":"YulIdentifier","src":"3299:3:66"},"nativeSrc":"3299:17:66","nodeType":"YulFunctionCall","src":"3299:17:66"},"variableNames":[{"name":"srcPtr","nativeSrc":"3289:6:66","nodeType":"YulIdentifier","src":"3289:6:66"}]},{"nativeSrc":"3329:21:66","nodeType":"YulAssignment","src":"3329:21:66","value":{"arguments":[{"name":"pos","nativeSrc":"3340:3:66","nodeType":"YulIdentifier","src":"3340:3:66"},{"kind":"number","nativeSrc":"3345:4:66","nodeType":"YulLiteral","src":"3345:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3336:3:66","nodeType":"YulIdentifier","src":"3336:3:66"},"nativeSrc":"3336:14:66","nodeType":"YulFunctionCall","src":"3336:14:66"},"variableNames":[{"name":"pos","nativeSrc":"3329:3:66","nodeType":"YulIdentifier","src":"3329:3:66"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"2934:1:66","nodeType":"YulIdentifier","src":"2934:1:66"},{"name":"length","nativeSrc":"2937:6:66","nodeType":"YulIdentifier","src":"2937:6:66"}],"functionName":{"name":"lt","nativeSrc":"2931:2:66","nodeType":"YulIdentifier","src":"2931:2:66"},"nativeSrc":"2931:13:66","nodeType":"YulFunctionCall","src":"2931:13:66"},"nativeSrc":"2923:437:66","nodeType":"YulForLoop","post":{"nativeSrc":"2945:18:66","nodeType":"YulBlock","src":"2945:18:66","statements":[{"nativeSrc":"2947:14:66","nodeType":"YulAssignment","src":"2947:14:66","value":{"arguments":[{"name":"i","nativeSrc":"2956:1:66","nodeType":"YulIdentifier","src":"2956:1:66"},{"kind":"number","nativeSrc":"2959:1:66","nodeType":"YulLiteral","src":"2959:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2952:3:66","nodeType":"YulIdentifier","src":"2952:3:66"},"nativeSrc":"2952:9:66","nodeType":"YulFunctionCall","src":"2952:9:66"},"variableNames":[{"name":"i","nativeSrc":"2947:1:66","nodeType":"YulIdentifier","src":"2947:1:66"}]}]},"pre":{"nativeSrc":"2927:3:66","nodeType":"YulBlock","src":"2927:3:66","statements":[]},"src":"2923:437:66"},{"nativeSrc":"3369:14:66","nodeType":"YulAssignment","src":"3369:14:66","value":{"name":"tail_2","nativeSrc":"3377:6:66","nodeType":"YulIdentifier","src":"3377:6:66"},"variableNames":[{"name":"tail","nativeSrc":"3369:4:66","nodeType":"YulIdentifier","src":"3369:4:66"}]},{"expression":{"arguments":[{"name":"value2","nativeSrc":"3419:6:66","nodeType":"YulIdentifier","src":"3419:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"3431:9:66","nodeType":"YulIdentifier","src":"3431:9:66"},{"kind":"number","nativeSrc":"3442:2:66","nodeType":"YulLiteral","src":"3442:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3427:3:66","nodeType":"YulIdentifier","src":"3427:3:66"},"nativeSrc":"3427:18:66","nodeType":"YulFunctionCall","src":"3427:18:66"}],"functionName":{"name":"abi_encode_struct_OFTLimit","nativeSrc":"3392:26:66","nodeType":"YulIdentifier","src":"3392:26:66"},"nativeSrc":"3392:54:66","nodeType":"YulFunctionCall","src":"3392:54:66"},"nativeSrc":"3392:54:66","nodeType":"YulExpressionStatement","src":"3392:54:66"}]},"name":"abi_encode_tuple_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed","nativeSrc":"2152:1300:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2480:9:66","nodeType":"YulTypedName","src":"2480:9:66","type":""},{"name":"value2","nativeSrc":"2491:6:66","nodeType":"YulTypedName","src":"2491:6:66","type":""},{"name":"value1","nativeSrc":"2499:6:66","nodeType":"YulTypedName","src":"2499:6:66","type":""},{"name":"value0","nativeSrc":"2507:6:66","nodeType":"YulTypedName","src":"2507:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2518:4:66","nodeType":"YulTypedName","src":"2518:4:66","type":""}],"src":"2152:1300:66"},{"body":{"nativeSrc":"3558:102:66","nodeType":"YulBlock","src":"3558:102:66","statements":[{"nativeSrc":"3568:26:66","nodeType":"YulAssignment","src":"3568:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"3580:9:66","nodeType":"YulIdentifier","src":"3580:9:66"},{"kind":"number","nativeSrc":"3591:2:66","nodeType":"YulLiteral","src":"3591:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3576:3:66","nodeType":"YulIdentifier","src":"3576:3:66"},"nativeSrc":"3576:18:66","nodeType":"YulFunctionCall","src":"3576:18:66"},"variableNames":[{"name":"tail","nativeSrc":"3568:4:66","nodeType":"YulIdentifier","src":"3568:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3610:9:66","nodeType":"YulIdentifier","src":"3610:9:66"},{"arguments":[{"name":"value0","nativeSrc":"3625:6:66","nodeType":"YulIdentifier","src":"3625:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3641:3:66","nodeType":"YulLiteral","src":"3641:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"3646:1:66","nodeType":"YulLiteral","src":"3646:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3637:3:66","nodeType":"YulIdentifier","src":"3637:3:66"},"nativeSrc":"3637:11:66","nodeType":"YulFunctionCall","src":"3637:11:66"},{"kind":"number","nativeSrc":"3650:1:66","nodeType":"YulLiteral","src":"3650:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3633:3:66","nodeType":"YulIdentifier","src":"3633:3:66"},"nativeSrc":"3633:19:66","nodeType":"YulFunctionCall","src":"3633:19:66"}],"functionName":{"name":"and","nativeSrc":"3621:3:66","nodeType":"YulIdentifier","src":"3621:3:66"},"nativeSrc":"3621:32:66","nodeType":"YulFunctionCall","src":"3621:32:66"}],"functionName":{"name":"mstore","nativeSrc":"3603:6:66","nodeType":"YulIdentifier","src":"3603:6:66"},"nativeSrc":"3603:51:66","nodeType":"YulFunctionCall","src":"3603:51:66"},"nativeSrc":"3603:51:66","nodeType":"YulExpressionStatement","src":"3603:51:66"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"3457:203:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3527:9:66","nodeType":"YulTypedName","src":"3527:9:66","type":""},{"name":"value0","nativeSrc":"3538:6:66","nodeType":"YulTypedName","src":"3538:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3549:4:66","nodeType":"YulTypedName","src":"3549:4:66","type":""}],"src":"3457:203:66"},{"body":{"nativeSrc":"3734:85:66","nodeType":"YulBlock","src":"3734:85:66","statements":[{"body":{"nativeSrc":"3773:16:66","nodeType":"YulBlock","src":"3773:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3782:1:66","nodeType":"YulLiteral","src":"3782:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"3785:1:66","nodeType":"YulLiteral","src":"3785:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3775:6:66","nodeType":"YulIdentifier","src":"3775:6:66"},"nativeSrc":"3775:12:66","nodeType":"YulFunctionCall","src":"3775:12:66"},"nativeSrc":"3775:12:66","nodeType":"YulExpressionStatement","src":"3775:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"3755:3:66","nodeType":"YulIdentifier","src":"3755:3:66"},{"name":"offset","nativeSrc":"3760:6:66","nodeType":"YulIdentifier","src":"3760:6:66"}],"functionName":{"name":"sub","nativeSrc":"3751:3:66","nodeType":"YulIdentifier","src":"3751:3:66"},"nativeSrc":"3751:16:66","nodeType":"YulFunctionCall","src":"3751:16:66"},{"kind":"number","nativeSrc":"3769:2:66","nodeType":"YulLiteral","src":"3769:2:66","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3747:3:66","nodeType":"YulIdentifier","src":"3747:3:66"},"nativeSrc":"3747:25:66","nodeType":"YulFunctionCall","src":"3747:25:66"},"nativeSrc":"3744:45:66","nodeType":"YulIf","src":"3744:45:66"},{"nativeSrc":"3798:15:66","nodeType":"YulAssignment","src":"3798:15:66","value":{"name":"offset","nativeSrc":"3807:6:66","nodeType":"YulIdentifier","src":"3807:6:66"},"variableNames":[{"name":"value","nativeSrc":"3798:5:66","nodeType":"YulIdentifier","src":"3798:5:66"}]}]},"name":"abi_decode_struct_Origin_calldata","nativeSrc":"3665:154:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3708:6:66","nodeType":"YulTypedName","src":"3708:6:66","type":""},{"name":"end","nativeSrc":"3716:3:66","nodeType":"YulTypedName","src":"3716:3:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"3724:5:66","nodeType":"YulTypedName","src":"3724:5:66","type":""}],"src":"3665:154:66"},{"body":{"nativeSrc":"3896:275:66","nodeType":"YulBlock","src":"3896:275:66","statements":[{"body":{"nativeSrc":"3945:16:66","nodeType":"YulBlock","src":"3945:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3954:1:66","nodeType":"YulLiteral","src":"3954:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"3957:1:66","nodeType":"YulLiteral","src":"3957:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3947:6:66","nodeType":"YulIdentifier","src":"3947:6:66"},"nativeSrc":"3947:12:66","nodeType":"YulFunctionCall","src":"3947:12:66"},"nativeSrc":"3947:12:66","nodeType":"YulExpressionStatement","src":"3947:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3924:6:66","nodeType":"YulIdentifier","src":"3924:6:66"},{"kind":"number","nativeSrc":"3932:4:66","nodeType":"YulLiteral","src":"3932:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"3920:3:66","nodeType":"YulIdentifier","src":"3920:3:66"},"nativeSrc":"3920:17:66","nodeType":"YulFunctionCall","src":"3920:17:66"},{"name":"end","nativeSrc":"3939:3:66","nodeType":"YulIdentifier","src":"3939:3:66"}],"functionName":{"name":"slt","nativeSrc":"3916:3:66","nodeType":"YulIdentifier","src":"3916:3:66"},"nativeSrc":"3916:27:66","nodeType":"YulFunctionCall","src":"3916:27:66"}],"functionName":{"name":"iszero","nativeSrc":"3909:6:66","nodeType":"YulIdentifier","src":"3909:6:66"},"nativeSrc":"3909:35:66","nodeType":"YulFunctionCall","src":"3909:35:66"},"nativeSrc":"3906:55:66","nodeType":"YulIf","src":"3906:55:66"},{"nativeSrc":"3970:30:66","nodeType":"YulAssignment","src":"3970:30:66","value":{"arguments":[{"name":"offset","nativeSrc":"3993:6:66","nodeType":"YulIdentifier","src":"3993:6:66"}],"functionName":{"name":"calldataload","nativeSrc":"3980:12:66","nodeType":"YulIdentifier","src":"3980:12:66"},"nativeSrc":"3980:20:66","nodeType":"YulFunctionCall","src":"3980:20:66"},"variableNames":[{"name":"length","nativeSrc":"3970:6:66","nodeType":"YulIdentifier","src":"3970:6:66"}]},{"body":{"nativeSrc":"4043:16:66","nodeType":"YulBlock","src":"4043:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4052:1:66","nodeType":"YulLiteral","src":"4052:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4055:1:66","nodeType":"YulLiteral","src":"4055:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4045:6:66","nodeType":"YulIdentifier","src":"4045:6:66"},"nativeSrc":"4045:12:66","nodeType":"YulFunctionCall","src":"4045:12:66"},"nativeSrc":"4045:12:66","nodeType":"YulExpressionStatement","src":"4045:12:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"4015:6:66","nodeType":"YulIdentifier","src":"4015:6:66"},{"kind":"number","nativeSrc":"4023:18:66","nodeType":"YulLiteral","src":"4023:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4012:2:66","nodeType":"YulIdentifier","src":"4012:2:66"},"nativeSrc":"4012:30:66","nodeType":"YulFunctionCall","src":"4012:30:66"},"nativeSrc":"4009:50:66","nodeType":"YulIf","src":"4009:50:66"},{"nativeSrc":"4068:29:66","nodeType":"YulAssignment","src":"4068:29:66","value":{"arguments":[{"name":"offset","nativeSrc":"4084:6:66","nodeType":"YulIdentifier","src":"4084:6:66"},{"kind":"number","nativeSrc":"4092:4:66","nodeType":"YulLiteral","src":"4092:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4080:3:66","nodeType":"YulIdentifier","src":"4080:3:66"},"nativeSrc":"4080:17:66","nodeType":"YulFunctionCall","src":"4080:17:66"},"variableNames":[{"name":"arrayPos","nativeSrc":"4068:8:66","nodeType":"YulIdentifier","src":"4068:8:66"}]},{"body":{"nativeSrc":"4149:16:66","nodeType":"YulBlock","src":"4149:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4158:1:66","nodeType":"YulLiteral","src":"4158:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4161:1:66","nodeType":"YulLiteral","src":"4161:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4151:6:66","nodeType":"YulIdentifier","src":"4151:6:66"},"nativeSrc":"4151:12:66","nodeType":"YulFunctionCall","src":"4151:12:66"},"nativeSrc":"4151:12:66","nodeType":"YulExpressionStatement","src":"4151:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"4120:6:66","nodeType":"YulIdentifier","src":"4120:6:66"},{"name":"length","nativeSrc":"4128:6:66","nodeType":"YulIdentifier","src":"4128:6:66"}],"functionName":{"name":"add","nativeSrc":"4116:3:66","nodeType":"YulIdentifier","src":"4116:3:66"},"nativeSrc":"4116:19:66","nodeType":"YulFunctionCall","src":"4116:19:66"},{"kind":"number","nativeSrc":"4137:4:66","nodeType":"YulLiteral","src":"4137:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4112:3:66","nodeType":"YulIdentifier","src":"4112:3:66"},"nativeSrc":"4112:30:66","nodeType":"YulFunctionCall","src":"4112:30:66"},{"name":"end","nativeSrc":"4144:3:66","nodeType":"YulIdentifier","src":"4144:3:66"}],"functionName":{"name":"gt","nativeSrc":"4109:2:66","nodeType":"YulIdentifier","src":"4109:2:66"},"nativeSrc":"4109:39:66","nodeType":"YulFunctionCall","src":"4109:39:66"},"nativeSrc":"4106:59:66","nodeType":"YulIf","src":"4106:59:66"}]},"name":"abi_decode_bytes_calldata","nativeSrc":"3824:347:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3859:6:66","nodeType":"YulTypedName","src":"3859:6:66","type":""},{"name":"end","nativeSrc":"3867:3:66","nodeType":"YulTypedName","src":"3867:3:66","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"3875:8:66","nodeType":"YulTypedName","src":"3875:8:66","type":""},{"name":"length","nativeSrc":"3885:6:66","nodeType":"YulTypedName","src":"3885:6:66","type":""}],"src":"3824:347:66"},{"body":{"nativeSrc":"4376:893:66","nodeType":"YulBlock","src":"4376:893:66","statements":[{"body":{"nativeSrc":"4423:16:66","nodeType":"YulBlock","src":"4423:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4432:1:66","nodeType":"YulLiteral","src":"4432:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4435:1:66","nodeType":"YulLiteral","src":"4435:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4425:6:66","nodeType":"YulIdentifier","src":"4425:6:66"},"nativeSrc":"4425:12:66","nodeType":"YulFunctionCall","src":"4425:12:66"},"nativeSrc":"4425:12:66","nodeType":"YulExpressionStatement","src":"4425:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4397:7:66","nodeType":"YulIdentifier","src":"4397:7:66"},{"name":"headStart","nativeSrc":"4406:9:66","nodeType":"YulIdentifier","src":"4406:9:66"}],"functionName":{"name":"sub","nativeSrc":"4393:3:66","nodeType":"YulIdentifier","src":"4393:3:66"},"nativeSrc":"4393:23:66","nodeType":"YulFunctionCall","src":"4393:23:66"},{"kind":"number","nativeSrc":"4418:3:66","nodeType":"YulLiteral","src":"4418:3:66","type":"","value":"224"}],"functionName":{"name":"slt","nativeSrc":"4389:3:66","nodeType":"YulIdentifier","src":"4389:3:66"},"nativeSrc":"4389:33:66","nodeType":"YulFunctionCall","src":"4389:33:66"},"nativeSrc":"4386:53:66","nodeType":"YulIf","src":"4386:53:66"},{"nativeSrc":"4448:63:66","nodeType":"YulAssignment","src":"4448:63:66","value":{"arguments":[{"name":"headStart","nativeSrc":"4492:9:66","nodeType":"YulIdentifier","src":"4492:9:66"},{"name":"dataEnd","nativeSrc":"4503:7:66","nodeType":"YulIdentifier","src":"4503:7:66"}],"functionName":{"name":"abi_decode_struct_Origin_calldata","nativeSrc":"4458:33:66","nodeType":"YulIdentifier","src":"4458:33:66"},"nativeSrc":"4458:53:66","nodeType":"YulFunctionCall","src":"4458:53:66"},"variableNames":[{"name":"value0","nativeSrc":"4448:6:66","nodeType":"YulIdentifier","src":"4448:6:66"}]},{"nativeSrc":"4520:14:66","nodeType":"YulVariableDeclaration","src":"4520:14:66","value":{"kind":"number","nativeSrc":"4533:1:66","nodeType":"YulLiteral","src":"4533:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"4524:5:66","nodeType":"YulTypedName","src":"4524:5:66","type":""}]},{"nativeSrc":"4543:41:66","nodeType":"YulAssignment","src":"4543:41:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4569:9:66","nodeType":"YulIdentifier","src":"4569:9:66"},{"kind":"number","nativeSrc":"4580:2:66","nodeType":"YulLiteral","src":"4580:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4565:3:66","nodeType":"YulIdentifier","src":"4565:3:66"},"nativeSrc":"4565:18:66","nodeType":"YulFunctionCall","src":"4565:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"4552:12:66","nodeType":"YulIdentifier","src":"4552:12:66"},"nativeSrc":"4552:32:66","nodeType":"YulFunctionCall","src":"4552:32:66"},"variableNames":[{"name":"value","nativeSrc":"4543:5:66","nodeType":"YulIdentifier","src":"4543:5:66"}]},{"nativeSrc":"4593:15:66","nodeType":"YulAssignment","src":"4593:15:66","value":{"name":"value","nativeSrc":"4603:5:66","nodeType":"YulIdentifier","src":"4603:5:66"},"variableNames":[{"name":"value1","nativeSrc":"4593:6:66","nodeType":"YulIdentifier","src":"4593:6:66"}]},{"nativeSrc":"4617:47:66","nodeType":"YulVariableDeclaration","src":"4617:47:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4648:9:66","nodeType":"YulIdentifier","src":"4648:9:66"},{"kind":"number","nativeSrc":"4659:3:66","nodeType":"YulLiteral","src":"4659:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"4644:3:66","nodeType":"YulIdentifier","src":"4644:3:66"},"nativeSrc":"4644:19:66","nodeType":"YulFunctionCall","src":"4644:19:66"}],"functionName":{"name":"calldataload","nativeSrc":"4631:12:66","nodeType":"YulIdentifier","src":"4631:12:66"},"nativeSrc":"4631:33:66","nodeType":"YulFunctionCall","src":"4631:33:66"},"variables":[{"name":"offset","nativeSrc":"4621:6:66","nodeType":"YulTypedName","src":"4621:6:66","type":""}]},{"body":{"nativeSrc":"4707:16:66","nodeType":"YulBlock","src":"4707:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4716:1:66","nodeType":"YulLiteral","src":"4716:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4719:1:66","nodeType":"YulLiteral","src":"4719:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4709:6:66","nodeType":"YulIdentifier","src":"4709:6:66"},"nativeSrc":"4709:12:66","nodeType":"YulFunctionCall","src":"4709:12:66"},"nativeSrc":"4709:12:66","nodeType":"YulExpressionStatement","src":"4709:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4679:6:66","nodeType":"YulIdentifier","src":"4679:6:66"},{"kind":"number","nativeSrc":"4687:18:66","nodeType":"YulLiteral","src":"4687:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4676:2:66","nodeType":"YulIdentifier","src":"4676:2:66"},"nativeSrc":"4676:30:66","nodeType":"YulFunctionCall","src":"4676:30:66"},"nativeSrc":"4673:50:66","nodeType":"YulIf","src":"4673:50:66"},{"nativeSrc":"4732:84:66","nodeType":"YulVariableDeclaration","src":"4732:84:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4788:9:66","nodeType":"YulIdentifier","src":"4788:9:66"},{"name":"offset","nativeSrc":"4799:6:66","nodeType":"YulIdentifier","src":"4799:6:66"}],"functionName":{"name":"add","nativeSrc":"4784:3:66","nodeType":"YulIdentifier","src":"4784:3:66"},"nativeSrc":"4784:22:66","nodeType":"YulFunctionCall","src":"4784:22:66"},{"name":"dataEnd","nativeSrc":"4808:7:66","nodeType":"YulIdentifier","src":"4808:7:66"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"4758:25:66","nodeType":"YulIdentifier","src":"4758:25:66"},"nativeSrc":"4758:58:66","nodeType":"YulFunctionCall","src":"4758:58:66"},"variables":[{"name":"value2_1","nativeSrc":"4736:8:66","nodeType":"YulTypedName","src":"4736:8:66","type":""},{"name":"value3_1","nativeSrc":"4746:8:66","nodeType":"YulTypedName","src":"4746:8:66","type":""}]},{"nativeSrc":"4825:18:66","nodeType":"YulAssignment","src":"4825:18:66","value":{"name":"value2_1","nativeSrc":"4835:8:66","nodeType":"YulIdentifier","src":"4835:8:66"},"variableNames":[{"name":"value2","nativeSrc":"4825:6:66","nodeType":"YulIdentifier","src":"4825:6:66"}]},{"nativeSrc":"4852:18:66","nodeType":"YulAssignment","src":"4852:18:66","value":{"name":"value3_1","nativeSrc":"4862:8:66","nodeType":"YulIdentifier","src":"4862:8:66"},"variableNames":[{"name":"value3","nativeSrc":"4852:6:66","nodeType":"YulIdentifier","src":"4852:6:66"}]},{"nativeSrc":"4879:48:66","nodeType":"YulVariableDeclaration","src":"4879:48:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4911:9:66","nodeType":"YulIdentifier","src":"4911:9:66"},{"kind":"number","nativeSrc":"4922:3:66","nodeType":"YulLiteral","src":"4922:3:66","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"4907:3:66","nodeType":"YulIdentifier","src":"4907:3:66"},"nativeSrc":"4907:19:66","nodeType":"YulFunctionCall","src":"4907:19:66"}],"functionName":{"name":"calldataload","nativeSrc":"4894:12:66","nodeType":"YulIdentifier","src":"4894:12:66"},"nativeSrc":"4894:33:66","nodeType":"YulFunctionCall","src":"4894:33:66"},"variables":[{"name":"value_1","nativeSrc":"4883:7:66","nodeType":"YulTypedName","src":"4883:7:66","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"4961:7:66","nodeType":"YulIdentifier","src":"4961:7:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4936:24:66","nodeType":"YulIdentifier","src":"4936:24:66"},"nativeSrc":"4936:33:66","nodeType":"YulFunctionCall","src":"4936:33:66"},"nativeSrc":"4936:33:66","nodeType":"YulExpressionStatement","src":"4936:33:66"},{"nativeSrc":"4978:17:66","nodeType":"YulAssignment","src":"4978:17:66","value":{"name":"value_1","nativeSrc":"4988:7:66","nodeType":"YulIdentifier","src":"4988:7:66"},"variableNames":[{"name":"value4","nativeSrc":"4978:6:66","nodeType":"YulIdentifier","src":"4978:6:66"}]},{"nativeSrc":"5004:49:66","nodeType":"YulVariableDeclaration","src":"5004:49:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5037:9:66","nodeType":"YulIdentifier","src":"5037:9:66"},{"kind":"number","nativeSrc":"5048:3:66","nodeType":"YulLiteral","src":"5048:3:66","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"5033:3:66","nodeType":"YulIdentifier","src":"5033:3:66"},"nativeSrc":"5033:19:66","nodeType":"YulFunctionCall","src":"5033:19:66"}],"functionName":{"name":"calldataload","nativeSrc":"5020:12:66","nodeType":"YulIdentifier","src":"5020:12:66"},"nativeSrc":"5020:33:66","nodeType":"YulFunctionCall","src":"5020:33:66"},"variables":[{"name":"offset_1","nativeSrc":"5008:8:66","nodeType":"YulTypedName","src":"5008:8:66","type":""}]},{"body":{"nativeSrc":"5098:16:66","nodeType":"YulBlock","src":"5098:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5107:1:66","nodeType":"YulLiteral","src":"5107:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"5110:1:66","nodeType":"YulLiteral","src":"5110:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5100:6:66","nodeType":"YulIdentifier","src":"5100:6:66"},"nativeSrc":"5100:12:66","nodeType":"YulFunctionCall","src":"5100:12:66"},"nativeSrc":"5100:12:66","nodeType":"YulExpressionStatement","src":"5100:12:66"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"5068:8:66","nodeType":"YulIdentifier","src":"5068:8:66"},{"kind":"number","nativeSrc":"5078:18:66","nodeType":"YulLiteral","src":"5078:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5065:2:66","nodeType":"YulIdentifier","src":"5065:2:66"},"nativeSrc":"5065:32:66","nodeType":"YulFunctionCall","src":"5065:32:66"},"nativeSrc":"5062:52:66","nodeType":"YulIf","src":"5062:52:66"},{"nativeSrc":"5123:86:66","nodeType":"YulVariableDeclaration","src":"5123:86:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5179:9:66","nodeType":"YulIdentifier","src":"5179:9:66"},{"name":"offset_1","nativeSrc":"5190:8:66","nodeType":"YulIdentifier","src":"5190:8:66"}],"functionName":{"name":"add","nativeSrc":"5175:3:66","nodeType":"YulIdentifier","src":"5175:3:66"},"nativeSrc":"5175:24:66","nodeType":"YulFunctionCall","src":"5175:24:66"},{"name":"dataEnd","nativeSrc":"5201:7:66","nodeType":"YulIdentifier","src":"5201:7:66"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"5149:25:66","nodeType":"YulIdentifier","src":"5149:25:66"},"nativeSrc":"5149:60:66","nodeType":"YulFunctionCall","src":"5149:60:66"},"variables":[{"name":"value5_1","nativeSrc":"5127:8:66","nodeType":"YulTypedName","src":"5127:8:66","type":""},{"name":"value6_1","nativeSrc":"5137:8:66","nodeType":"YulTypedName","src":"5137:8:66","type":""}]},{"nativeSrc":"5218:18:66","nodeType":"YulAssignment","src":"5218:18:66","value":{"name":"value5_1","nativeSrc":"5228:8:66","nodeType":"YulIdentifier","src":"5228:8:66"},"variableNames":[{"name":"value5","nativeSrc":"5218:6:66","nodeType":"YulIdentifier","src":"5218:6:66"}]},{"nativeSrc":"5245:18:66","nodeType":"YulAssignment","src":"5245:18:66","value":{"name":"value6_1","nativeSrc":"5255:8:66","nodeType":"YulIdentifier","src":"5255:8:66"},"variableNames":[{"name":"value6","nativeSrc":"5245:6:66","nodeType":"YulIdentifier","src":"5245:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes32t_bytes_calldata_ptrt_addresst_bytes_calldata_ptr","nativeSrc":"4176:1093:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4294:9:66","nodeType":"YulTypedName","src":"4294:9:66","type":""},{"name":"dataEnd","nativeSrc":"4305:7:66","nodeType":"YulTypedName","src":"4305:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4317:6:66","nodeType":"YulTypedName","src":"4317:6:66","type":""},{"name":"value1","nativeSrc":"4325:6:66","nodeType":"YulTypedName","src":"4325:6:66","type":""},{"name":"value2","nativeSrc":"4333:6:66","nodeType":"YulTypedName","src":"4333:6:66","type":""},{"name":"value3","nativeSrc":"4341:6:66","nodeType":"YulTypedName","src":"4341:6:66","type":""},{"name":"value4","nativeSrc":"4349:6:66","nodeType":"YulTypedName","src":"4349:6:66","type":""},{"name":"value5","nativeSrc":"4357:6:66","nodeType":"YulTypedName","src":"4357:6:66","type":""},{"name":"value6","nativeSrc":"4365:6:66","nodeType":"YulTypedName","src":"4365:6:66","type":""}],"src":"4176:1093:66"},{"body":{"nativeSrc":"5373:89:66","nodeType":"YulBlock","src":"5373:89:66","statements":[{"nativeSrc":"5383:26:66","nodeType":"YulAssignment","src":"5383:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"5395:9:66","nodeType":"YulIdentifier","src":"5395:9:66"},{"kind":"number","nativeSrc":"5406:2:66","nodeType":"YulLiteral","src":"5406:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5391:3:66","nodeType":"YulIdentifier","src":"5391:3:66"},"nativeSrc":"5391:18:66","nodeType":"YulFunctionCall","src":"5391:18:66"},"variableNames":[{"name":"tail","nativeSrc":"5383:4:66","nodeType":"YulIdentifier","src":"5383:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5425:9:66","nodeType":"YulIdentifier","src":"5425:9:66"},{"arguments":[{"name":"value0","nativeSrc":"5440:6:66","nodeType":"YulIdentifier","src":"5440:6:66"},{"kind":"number","nativeSrc":"5448:6:66","nodeType":"YulLiteral","src":"5448:6:66","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"5436:3:66","nodeType":"YulIdentifier","src":"5436:3:66"},"nativeSrc":"5436:19:66","nodeType":"YulFunctionCall","src":"5436:19:66"}],"functionName":{"name":"mstore","nativeSrc":"5418:6:66","nodeType":"YulIdentifier","src":"5418:6:66"},"nativeSrc":"5418:38:66","nodeType":"YulFunctionCall","src":"5418:38:66"},"nativeSrc":"5418:38:66","nodeType":"YulExpressionStatement","src":"5418:38:66"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed","nativeSrc":"5274:188:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5342:9:66","nodeType":"YulTypedName","src":"5342:9:66","type":""},{"name":"value0","nativeSrc":"5353:6:66","nodeType":"YulTypedName","src":"5353:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5364:4:66","nodeType":"YulTypedName","src":"5364:4:66","type":""}],"src":"5274:188:66"},{"body":{"nativeSrc":"5592:171:66","nodeType":"YulBlock","src":"5592:171:66","statements":[{"nativeSrc":"5602:26:66","nodeType":"YulAssignment","src":"5602:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"5614:9:66","nodeType":"YulIdentifier","src":"5614:9:66"},{"kind":"number","nativeSrc":"5625:2:66","nodeType":"YulLiteral","src":"5625:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5610:3:66","nodeType":"YulIdentifier","src":"5610:3:66"},"nativeSrc":"5610:18:66","nodeType":"YulFunctionCall","src":"5610:18:66"},"variableNames":[{"name":"tail","nativeSrc":"5602:4:66","nodeType":"YulIdentifier","src":"5602:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5644:9:66","nodeType":"YulIdentifier","src":"5644:9:66"},{"arguments":[{"name":"value0","nativeSrc":"5659:6:66","nodeType":"YulIdentifier","src":"5659:6:66"},{"arguments":[{"kind":"number","nativeSrc":"5671:3:66","nodeType":"YulLiteral","src":"5671:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"5676:10:66","nodeType":"YulLiteral","src":"5676:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"5667:3:66","nodeType":"YulIdentifier","src":"5667:3:66"},"nativeSrc":"5667:20:66","nodeType":"YulFunctionCall","src":"5667:20:66"}],"functionName":{"name":"and","nativeSrc":"5655:3:66","nodeType":"YulIdentifier","src":"5655:3:66"},"nativeSrc":"5655:33:66","nodeType":"YulFunctionCall","src":"5655:33:66"}],"functionName":{"name":"mstore","nativeSrc":"5637:6:66","nodeType":"YulIdentifier","src":"5637:6:66"},"nativeSrc":"5637:52:66","nodeType":"YulFunctionCall","src":"5637:52:66"},"nativeSrc":"5637:52:66","nodeType":"YulExpressionStatement","src":"5637:52:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5709:9:66","nodeType":"YulIdentifier","src":"5709:9:66"},{"kind":"number","nativeSrc":"5720:2:66","nodeType":"YulLiteral","src":"5720:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5705:3:66","nodeType":"YulIdentifier","src":"5705:3:66"},"nativeSrc":"5705:18:66","nodeType":"YulFunctionCall","src":"5705:18:66"},{"arguments":[{"name":"value1","nativeSrc":"5729:6:66","nodeType":"YulIdentifier","src":"5729:6:66"},{"kind":"number","nativeSrc":"5737:18:66","nodeType":"YulLiteral","src":"5737:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5725:3:66","nodeType":"YulIdentifier","src":"5725:3:66"},"nativeSrc":"5725:31:66","nodeType":"YulFunctionCall","src":"5725:31:66"}],"functionName":{"name":"mstore","nativeSrc":"5698:6:66","nodeType":"YulIdentifier","src":"5698:6:66"},"nativeSrc":"5698:59:66","nodeType":"YulFunctionCall","src":"5698:59:66"},"nativeSrc":"5698:59:66","nodeType":"YulExpressionStatement","src":"5698:59:66"}]},"name":"abi_encode_tuple_t_bytes4_t_uint64__to_t_bytes4_t_uint64__fromStack_reversed","nativeSrc":"5467:296:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5553:9:66","nodeType":"YulTypedName","src":"5553:9:66","type":""},{"name":"value1","nativeSrc":"5564:6:66","nodeType":"YulTypedName","src":"5564:6:66","type":""},{"name":"value0","nativeSrc":"5572:6:66","nodeType":"YulTypedName","src":"5572:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5583:4:66","nodeType":"YulTypedName","src":"5583:4:66","type":""}],"src":"5467:296:66"},{"body":{"nativeSrc":"5893:169:66","nodeType":"YulBlock","src":"5893:169:66","statements":[{"nativeSrc":"5903:26:66","nodeType":"YulAssignment","src":"5903:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"5915:9:66","nodeType":"YulIdentifier","src":"5915:9:66"},{"kind":"number","nativeSrc":"5926:2:66","nodeType":"YulLiteral","src":"5926:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5911:3:66","nodeType":"YulIdentifier","src":"5911:3:66"},"nativeSrc":"5911:18:66","nodeType":"YulFunctionCall","src":"5911:18:66"},"variableNames":[{"name":"tail","nativeSrc":"5903:4:66","nodeType":"YulIdentifier","src":"5903:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5945:9:66","nodeType":"YulIdentifier","src":"5945:9:66"},{"arguments":[{"name":"value0","nativeSrc":"5960:6:66","nodeType":"YulIdentifier","src":"5960:6:66"},{"kind":"number","nativeSrc":"5968:18:66","nodeType":"YulLiteral","src":"5968:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5956:3:66","nodeType":"YulIdentifier","src":"5956:3:66"},"nativeSrc":"5956:31:66","nodeType":"YulFunctionCall","src":"5956:31:66"}],"functionName":{"name":"mstore","nativeSrc":"5938:6:66","nodeType":"YulIdentifier","src":"5938:6:66"},"nativeSrc":"5938:50:66","nodeType":"YulFunctionCall","src":"5938:50:66"},"nativeSrc":"5938:50:66","nodeType":"YulExpressionStatement","src":"5938:50:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6008:9:66","nodeType":"YulIdentifier","src":"6008:9:66"},{"kind":"number","nativeSrc":"6019:2:66","nodeType":"YulLiteral","src":"6019:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6004:3:66","nodeType":"YulIdentifier","src":"6004:3:66"},"nativeSrc":"6004:18:66","nodeType":"YulFunctionCall","src":"6004:18:66"},{"arguments":[{"name":"value1","nativeSrc":"6028:6:66","nodeType":"YulIdentifier","src":"6028:6:66"},{"kind":"number","nativeSrc":"6036:18:66","nodeType":"YulLiteral","src":"6036:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"6024:3:66","nodeType":"YulIdentifier","src":"6024:3:66"},"nativeSrc":"6024:31:66","nodeType":"YulFunctionCall","src":"6024:31:66"}],"functionName":{"name":"mstore","nativeSrc":"5997:6:66","nodeType":"YulIdentifier","src":"5997:6:66"},"nativeSrc":"5997:59:66","nodeType":"YulFunctionCall","src":"5997:59:66"},"nativeSrc":"5997:59:66","nodeType":"YulExpressionStatement","src":"5997:59:66"}]},"name":"abi_encode_tuple_t_uint64_t_uint64__to_t_uint64_t_uint64__fromStack_reversed","nativeSrc":"5768:294:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5854:9:66","nodeType":"YulTypedName","src":"5854:9:66","type":""},{"name":"value1","nativeSrc":"5865:6:66","nodeType":"YulTypedName","src":"5865:6:66","type":""},{"name":"value0","nativeSrc":"5873:6:66","nodeType":"YulTypedName","src":"5873:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5884:4:66","nodeType":"YulTypedName","src":"5884:4:66","type":""}],"src":"5768:294:66"},{"body":{"nativeSrc":"6168:76:66","nodeType":"YulBlock","src":"6168:76:66","statements":[{"nativeSrc":"6178:26:66","nodeType":"YulAssignment","src":"6178:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"6190:9:66","nodeType":"YulIdentifier","src":"6190:9:66"},{"kind":"number","nativeSrc":"6201:2:66","nodeType":"YulLiteral","src":"6201:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6186:3:66","nodeType":"YulIdentifier","src":"6186:3:66"},"nativeSrc":"6186:18:66","nodeType":"YulFunctionCall","src":"6186:18:66"},"variableNames":[{"name":"tail","nativeSrc":"6178:4:66","nodeType":"YulIdentifier","src":"6178:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6220:9:66","nodeType":"YulIdentifier","src":"6220:9:66"},{"name":"value0","nativeSrc":"6231:6:66","nodeType":"YulIdentifier","src":"6231:6:66"}],"functionName":{"name":"mstore","nativeSrc":"6213:6:66","nodeType":"YulIdentifier","src":"6213:6:66"},"nativeSrc":"6213:25:66","nodeType":"YulFunctionCall","src":"6213:25:66"},"nativeSrc":"6213:25:66","nodeType":"YulExpressionStatement","src":"6213:25:66"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"6067:177:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6137:9:66","nodeType":"YulTypedName","src":"6137:9:66","type":""},{"name":"value0","nativeSrc":"6148:6:66","nodeType":"YulTypedName","src":"6148:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6159:4:66","nodeType":"YulTypedName","src":"6159:4:66","type":""}],"src":"6067:177:66"},{"body":{"nativeSrc":"6353:404:66","nodeType":"YulBlock","src":"6353:404:66","statements":[{"body":{"nativeSrc":"6399:16:66","nodeType":"YulBlock","src":"6399:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6408:1:66","nodeType":"YulLiteral","src":"6408:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"6411:1:66","nodeType":"YulLiteral","src":"6411:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6401:6:66","nodeType":"YulIdentifier","src":"6401:6:66"},"nativeSrc":"6401:12:66","nodeType":"YulFunctionCall","src":"6401:12:66"},"nativeSrc":"6401:12:66","nodeType":"YulExpressionStatement","src":"6401:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6374:7:66","nodeType":"YulIdentifier","src":"6374:7:66"},{"name":"headStart","nativeSrc":"6383:9:66","nodeType":"YulIdentifier","src":"6383:9:66"}],"functionName":{"name":"sub","nativeSrc":"6370:3:66","nodeType":"YulIdentifier","src":"6370:3:66"},"nativeSrc":"6370:23:66","nodeType":"YulFunctionCall","src":"6370:23:66"},{"kind":"number","nativeSrc":"6395:2:66","nodeType":"YulLiteral","src":"6395:2:66","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"6366:3:66","nodeType":"YulIdentifier","src":"6366:3:66"},"nativeSrc":"6366:32:66","nodeType":"YulFunctionCall","src":"6366:32:66"},"nativeSrc":"6363:52:66","nodeType":"YulIf","src":"6363:52:66"},{"nativeSrc":"6424:36:66","nodeType":"YulVariableDeclaration","src":"6424:36:66","value":{"arguments":[{"name":"headStart","nativeSrc":"6450:9:66","nodeType":"YulIdentifier","src":"6450:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"6437:12:66","nodeType":"YulIdentifier","src":"6437:12:66"},"nativeSrc":"6437:23:66","nodeType":"YulFunctionCall","src":"6437:23:66"},"variables":[{"name":"value","nativeSrc":"6428:5:66","nodeType":"YulTypedName","src":"6428:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6494:5:66","nodeType":"YulIdentifier","src":"6494:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6469:24:66","nodeType":"YulIdentifier","src":"6469:24:66"},"nativeSrc":"6469:31:66","nodeType":"YulFunctionCall","src":"6469:31:66"},"nativeSrc":"6469:31:66","nodeType":"YulExpressionStatement","src":"6469:31:66"},{"nativeSrc":"6509:15:66","nodeType":"YulAssignment","src":"6509:15:66","value":{"name":"value","nativeSrc":"6519:5:66","nodeType":"YulIdentifier","src":"6519:5:66"},"variableNames":[{"name":"value0","nativeSrc":"6509:6:66","nodeType":"YulIdentifier","src":"6509:6:66"}]},{"nativeSrc":"6533:47:66","nodeType":"YulVariableDeclaration","src":"6533:47:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6565:9:66","nodeType":"YulIdentifier","src":"6565:9:66"},{"kind":"number","nativeSrc":"6576:2:66","nodeType":"YulLiteral","src":"6576:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6561:3:66","nodeType":"YulIdentifier","src":"6561:3:66"},"nativeSrc":"6561:18:66","nodeType":"YulFunctionCall","src":"6561:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"6548:12:66","nodeType":"YulIdentifier","src":"6548:12:66"},"nativeSrc":"6548:32:66","nodeType":"YulFunctionCall","src":"6548:32:66"},"variables":[{"name":"value_1","nativeSrc":"6537:7:66","nodeType":"YulTypedName","src":"6537:7:66","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"6614:7:66","nodeType":"YulIdentifier","src":"6614:7:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6589:24:66","nodeType":"YulIdentifier","src":"6589:24:66"},"nativeSrc":"6589:33:66","nodeType":"YulFunctionCall","src":"6589:33:66"},"nativeSrc":"6589:33:66","nodeType":"YulExpressionStatement","src":"6589:33:66"},{"nativeSrc":"6631:17:66","nodeType":"YulAssignment","src":"6631:17:66","value":{"name":"value_1","nativeSrc":"6641:7:66","nodeType":"YulIdentifier","src":"6641:7:66"},"variableNames":[{"name":"value1","nativeSrc":"6631:6:66","nodeType":"YulIdentifier","src":"6631:6:66"}]},{"nativeSrc":"6657:16:66","nodeType":"YulVariableDeclaration","src":"6657:16:66","value":{"kind":"number","nativeSrc":"6672:1:66","nodeType":"YulLiteral","src":"6672:1:66","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"6661:7:66","nodeType":"YulTypedName","src":"6661:7:66","type":""}]},{"nativeSrc":"6682:43:66","nodeType":"YulAssignment","src":"6682:43:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6710:9:66","nodeType":"YulIdentifier","src":"6710:9:66"},{"kind":"number","nativeSrc":"6721:2:66","nodeType":"YulLiteral","src":"6721:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6706:3:66","nodeType":"YulIdentifier","src":"6706:3:66"},"nativeSrc":"6706:18:66","nodeType":"YulFunctionCall","src":"6706:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"6693:12:66","nodeType":"YulIdentifier","src":"6693:12:66"},"nativeSrc":"6693:32:66","nodeType":"YulFunctionCall","src":"6693:32:66"},"variableNames":[{"name":"value_2","nativeSrc":"6682:7:66","nodeType":"YulIdentifier","src":"6682:7:66"}]},{"nativeSrc":"6734:17:66","nodeType":"YulAssignment","src":"6734:17:66","value":{"name":"value_2","nativeSrc":"6744:7:66","nodeType":"YulIdentifier","src":"6744:7:66"},"variableNames":[{"name":"value2","nativeSrc":"6734:6:66","nodeType":"YulIdentifier","src":"6734:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"6249:508:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6303:9:66","nodeType":"YulTypedName","src":"6303:9:66","type":""},{"name":"dataEnd","nativeSrc":"6314:7:66","nodeType":"YulTypedName","src":"6314:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6326:6:66","nodeType":"YulTypedName","src":"6326:6:66","type":""},{"name":"value1","nativeSrc":"6334:6:66","nodeType":"YulTypedName","src":"6334:6:66","type":""},{"name":"value2","nativeSrc":"6342:6:66","nodeType":"YulTypedName","src":"6342:6:66","type":""}],"src":"6249:508:66"},{"body":{"nativeSrc":"6859:87:66","nodeType":"YulBlock","src":"6859:87:66","statements":[{"nativeSrc":"6869:26:66","nodeType":"YulAssignment","src":"6869:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"6881:9:66","nodeType":"YulIdentifier","src":"6881:9:66"},{"kind":"number","nativeSrc":"6892:2:66","nodeType":"YulLiteral","src":"6892:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6877:3:66","nodeType":"YulIdentifier","src":"6877:3:66"},"nativeSrc":"6877:18:66","nodeType":"YulFunctionCall","src":"6877:18:66"},"variableNames":[{"name":"tail","nativeSrc":"6869:4:66","nodeType":"YulIdentifier","src":"6869:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6911:9:66","nodeType":"YulIdentifier","src":"6911:9:66"},{"arguments":[{"name":"value0","nativeSrc":"6926:6:66","nodeType":"YulIdentifier","src":"6926:6:66"},{"kind":"number","nativeSrc":"6934:4:66","nodeType":"YulLiteral","src":"6934:4:66","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"6922:3:66","nodeType":"YulIdentifier","src":"6922:3:66"},"nativeSrc":"6922:17:66","nodeType":"YulFunctionCall","src":"6922:17:66"}],"functionName":{"name":"mstore","nativeSrc":"6904:6:66","nodeType":"YulIdentifier","src":"6904:6:66"},"nativeSrc":"6904:36:66","nodeType":"YulFunctionCall","src":"6904:36:66"},"nativeSrc":"6904:36:66","nodeType":"YulExpressionStatement","src":"6904:36:66"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"6762:184:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6828:9:66","nodeType":"YulTypedName","src":"6828:9:66","type":""},{"name":"value0","nativeSrc":"6839:6:66","nodeType":"YulTypedName","src":"6839:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6850:4:66","nodeType":"YulTypedName","src":"6850:4:66","type":""}],"src":"6762:184:66"},{"body":{"nativeSrc":"6999:115:66","nodeType":"YulBlock","src":"6999:115:66","statements":[{"nativeSrc":"7009:29:66","nodeType":"YulAssignment","src":"7009:29:66","value":{"arguments":[{"name":"offset","nativeSrc":"7031:6:66","nodeType":"YulIdentifier","src":"7031:6:66"}],"functionName":{"name":"calldataload","nativeSrc":"7018:12:66","nodeType":"YulIdentifier","src":"7018:12:66"},"nativeSrc":"7018:20:66","nodeType":"YulFunctionCall","src":"7018:20:66"},"variableNames":[{"name":"value","nativeSrc":"7009:5:66","nodeType":"YulIdentifier","src":"7009:5:66"}]},{"body":{"nativeSrc":"7092:16:66","nodeType":"YulBlock","src":"7092:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7101:1:66","nodeType":"YulLiteral","src":"7101:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"7104:1:66","nodeType":"YulLiteral","src":"7104:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7094:6:66","nodeType":"YulIdentifier","src":"7094:6:66"},"nativeSrc":"7094:12:66","nodeType":"YulFunctionCall","src":"7094:12:66"},"nativeSrc":"7094:12:66","nodeType":"YulExpressionStatement","src":"7094:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7060:5:66","nodeType":"YulIdentifier","src":"7060:5:66"},{"arguments":[{"name":"value","nativeSrc":"7071:5:66","nodeType":"YulIdentifier","src":"7071:5:66"},{"kind":"number","nativeSrc":"7078:10:66","nodeType":"YulLiteral","src":"7078:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"7067:3:66","nodeType":"YulIdentifier","src":"7067:3:66"},"nativeSrc":"7067:22:66","nodeType":"YulFunctionCall","src":"7067:22:66"}],"functionName":{"name":"eq","nativeSrc":"7057:2:66","nodeType":"YulIdentifier","src":"7057:2:66"},"nativeSrc":"7057:33:66","nodeType":"YulFunctionCall","src":"7057:33:66"}],"functionName":{"name":"iszero","nativeSrc":"7050:6:66","nodeType":"YulIdentifier","src":"7050:6:66"},"nativeSrc":"7050:41:66","nodeType":"YulFunctionCall","src":"7050:41:66"},"nativeSrc":"7047:61:66","nodeType":"YulIf","src":"7047:61:66"}]},"name":"abi_decode_uint32","nativeSrc":"6951:163:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"6978:6:66","nodeType":"YulTypedName","src":"6978:6:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"6989:5:66","nodeType":"YulTypedName","src":"6989:5:66","type":""}],"src":"6951:163:66"},{"body":{"nativeSrc":"7205:212:66","nodeType":"YulBlock","src":"7205:212:66","statements":[{"body":{"nativeSrc":"7251:16:66","nodeType":"YulBlock","src":"7251:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7260:1:66","nodeType":"YulLiteral","src":"7260:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"7263:1:66","nodeType":"YulLiteral","src":"7263:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7253:6:66","nodeType":"YulIdentifier","src":"7253:6:66"},"nativeSrc":"7253:12:66","nodeType":"YulFunctionCall","src":"7253:12:66"},"nativeSrc":"7253:12:66","nodeType":"YulExpressionStatement","src":"7253:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7226:7:66","nodeType":"YulIdentifier","src":"7226:7:66"},{"name":"headStart","nativeSrc":"7235:9:66","nodeType":"YulIdentifier","src":"7235:9:66"}],"functionName":{"name":"sub","nativeSrc":"7222:3:66","nodeType":"YulIdentifier","src":"7222:3:66"},"nativeSrc":"7222:23:66","nodeType":"YulFunctionCall","src":"7222:23:66"},{"kind":"number","nativeSrc":"7247:2:66","nodeType":"YulLiteral","src":"7247:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7218:3:66","nodeType":"YulIdentifier","src":"7218:3:66"},"nativeSrc":"7218:32:66","nodeType":"YulFunctionCall","src":"7218:32:66"},"nativeSrc":"7215:52:66","nodeType":"YulIf","src":"7215:52:66"},{"nativeSrc":"7276:38:66","nodeType":"YulAssignment","src":"7276:38:66","value":{"arguments":[{"name":"headStart","nativeSrc":"7304:9:66","nodeType":"YulIdentifier","src":"7304:9:66"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"7286:17:66","nodeType":"YulIdentifier","src":"7286:17:66"},"nativeSrc":"7286:28:66","nodeType":"YulFunctionCall","src":"7286:28:66"},"variableNames":[{"name":"value0","nativeSrc":"7276:6:66","nodeType":"YulIdentifier","src":"7276:6:66"}]},{"nativeSrc":"7323:14:66","nodeType":"YulVariableDeclaration","src":"7323:14:66","value":{"kind":"number","nativeSrc":"7336:1:66","nodeType":"YulLiteral","src":"7336:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"7327:5:66","nodeType":"YulTypedName","src":"7327:5:66","type":""}]},{"nativeSrc":"7346:41:66","nodeType":"YulAssignment","src":"7346:41:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7372:9:66","nodeType":"YulIdentifier","src":"7372:9:66"},{"kind":"number","nativeSrc":"7383:2:66","nodeType":"YulLiteral","src":"7383:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7368:3:66","nodeType":"YulIdentifier","src":"7368:3:66"},"nativeSrc":"7368:18:66","nodeType":"YulFunctionCall","src":"7368:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"7355:12:66","nodeType":"YulIdentifier","src":"7355:12:66"},"nativeSrc":"7355:32:66","nodeType":"YulFunctionCall","src":"7355:32:66"},"variableNames":[{"name":"value","nativeSrc":"7346:5:66","nodeType":"YulIdentifier","src":"7346:5:66"}]},{"nativeSrc":"7396:15:66","nodeType":"YulAssignment","src":"7396:15:66","value":{"name":"value","nativeSrc":"7406:5:66","nodeType":"YulIdentifier","src":"7406:5:66"},"variableNames":[{"name":"value1","nativeSrc":"7396:6:66","nodeType":"YulIdentifier","src":"7396:6:66"}]}]},"name":"abi_decode_tuple_t_uint32t_bytes32","nativeSrc":"7119:298:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7163:9:66","nodeType":"YulTypedName","src":"7163:9:66","type":""},{"name":"dataEnd","nativeSrc":"7174:7:66","nodeType":"YulTypedName","src":"7174:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7186:6:66","nodeType":"YulTypedName","src":"7186:6:66","type":""},{"name":"value1","nativeSrc":"7194:6:66","nodeType":"YulTypedName","src":"7194:6:66","type":""}],"src":"7119:298:66"},{"body":{"nativeSrc":"7464:76:66","nodeType":"YulBlock","src":"7464:76:66","statements":[{"body":{"nativeSrc":"7518:16:66","nodeType":"YulBlock","src":"7518:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7527:1:66","nodeType":"YulLiteral","src":"7527:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"7530:1:66","nodeType":"YulLiteral","src":"7530:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7520:6:66","nodeType":"YulIdentifier","src":"7520:6:66"},"nativeSrc":"7520:12:66","nodeType":"YulFunctionCall","src":"7520:12:66"},"nativeSrc":"7520:12:66","nodeType":"YulExpressionStatement","src":"7520:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7487:5:66","nodeType":"YulIdentifier","src":"7487:5:66"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7508:5:66","nodeType":"YulIdentifier","src":"7508:5:66"}],"functionName":{"name":"iszero","nativeSrc":"7501:6:66","nodeType":"YulIdentifier","src":"7501:6:66"},"nativeSrc":"7501:13:66","nodeType":"YulFunctionCall","src":"7501:13:66"}],"functionName":{"name":"iszero","nativeSrc":"7494:6:66","nodeType":"YulIdentifier","src":"7494:6:66"},"nativeSrc":"7494:21:66","nodeType":"YulFunctionCall","src":"7494:21:66"}],"functionName":{"name":"eq","nativeSrc":"7484:2:66","nodeType":"YulIdentifier","src":"7484:2:66"},"nativeSrc":"7484:32:66","nodeType":"YulFunctionCall","src":"7484:32:66"}],"functionName":{"name":"iszero","nativeSrc":"7477:6:66","nodeType":"YulIdentifier","src":"7477:6:66"},"nativeSrc":"7477:40:66","nodeType":"YulFunctionCall","src":"7477:40:66"},"nativeSrc":"7474:60:66","nodeType":"YulIf","src":"7474:60:66"}]},"name":"validator_revert_bool","nativeSrc":"7422:118:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7453:5:66","nodeType":"YulTypedName","src":"7453:5:66","type":""}],"src":"7422:118:66"},{"body":{"nativeSrc":"7658:376:66","nodeType":"YulBlock","src":"7658:376:66","statements":[{"body":{"nativeSrc":"7704:16:66","nodeType":"YulBlock","src":"7704:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7713:1:66","nodeType":"YulLiteral","src":"7713:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"7716:1:66","nodeType":"YulLiteral","src":"7716:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7706:6:66","nodeType":"YulIdentifier","src":"7706:6:66"},"nativeSrc":"7706:12:66","nodeType":"YulFunctionCall","src":"7706:12:66"},"nativeSrc":"7706:12:66","nodeType":"YulExpressionStatement","src":"7706:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7679:7:66","nodeType":"YulIdentifier","src":"7679:7:66"},{"name":"headStart","nativeSrc":"7688:9:66","nodeType":"YulIdentifier","src":"7688:9:66"}],"functionName":{"name":"sub","nativeSrc":"7675:3:66","nodeType":"YulIdentifier","src":"7675:3:66"},"nativeSrc":"7675:23:66","nodeType":"YulFunctionCall","src":"7675:23:66"},{"kind":"number","nativeSrc":"7700:2:66","nodeType":"YulLiteral","src":"7700:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7671:3:66","nodeType":"YulIdentifier","src":"7671:3:66"},"nativeSrc":"7671:32:66","nodeType":"YulFunctionCall","src":"7671:32:66"},"nativeSrc":"7668:52:66","nodeType":"YulIf","src":"7668:52:66"},{"nativeSrc":"7729:37:66","nodeType":"YulVariableDeclaration","src":"7729:37:66","value":{"arguments":[{"name":"headStart","nativeSrc":"7756:9:66","nodeType":"YulIdentifier","src":"7756:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"7743:12:66","nodeType":"YulIdentifier","src":"7743:12:66"},"nativeSrc":"7743:23:66","nodeType":"YulFunctionCall","src":"7743:23:66"},"variables":[{"name":"offset","nativeSrc":"7733:6:66","nodeType":"YulTypedName","src":"7733:6:66","type":""}]},{"body":{"nativeSrc":"7809:16:66","nodeType":"YulBlock","src":"7809:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7818:1:66","nodeType":"YulLiteral","src":"7818:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"7821:1:66","nodeType":"YulLiteral","src":"7821:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7811:6:66","nodeType":"YulIdentifier","src":"7811:6:66"},"nativeSrc":"7811:12:66","nodeType":"YulFunctionCall","src":"7811:12:66"},"nativeSrc":"7811:12:66","nodeType":"YulExpressionStatement","src":"7811:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7781:6:66","nodeType":"YulIdentifier","src":"7781:6:66"},{"kind":"number","nativeSrc":"7789:18:66","nodeType":"YulLiteral","src":"7789:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7778:2:66","nodeType":"YulIdentifier","src":"7778:2:66"},"nativeSrc":"7778:30:66","nodeType":"YulFunctionCall","src":"7778:30:66"},"nativeSrc":"7775:50:66","nodeType":"YulIf","src":"7775:50:66"},{"nativeSrc":"7834:79:66","nodeType":"YulAssignment","src":"7834:79:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7885:9:66","nodeType":"YulIdentifier","src":"7885:9:66"},{"name":"offset","nativeSrc":"7896:6:66","nodeType":"YulIdentifier","src":"7896:6:66"}],"functionName":{"name":"add","nativeSrc":"7881:3:66","nodeType":"YulIdentifier","src":"7881:3:66"},"nativeSrc":"7881:22:66","nodeType":"YulFunctionCall","src":"7881:22:66"},{"name":"dataEnd","nativeSrc":"7905:7:66","nodeType":"YulIdentifier","src":"7905:7:66"}],"functionName":{"name":"abi_decode_struct_SendParam_calldata","nativeSrc":"7844:36:66","nodeType":"YulIdentifier","src":"7844:36:66"},"nativeSrc":"7844:69:66","nodeType":"YulFunctionCall","src":"7844:69:66"},"variableNames":[{"name":"value0","nativeSrc":"7834:6:66","nodeType":"YulIdentifier","src":"7834:6:66"}]},{"nativeSrc":"7922:45:66","nodeType":"YulVariableDeclaration","src":"7922:45:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7952:9:66","nodeType":"YulIdentifier","src":"7952:9:66"},{"kind":"number","nativeSrc":"7963:2:66","nodeType":"YulLiteral","src":"7963:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7948:3:66","nodeType":"YulIdentifier","src":"7948:3:66"},"nativeSrc":"7948:18:66","nodeType":"YulFunctionCall","src":"7948:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"7935:12:66","nodeType":"YulIdentifier","src":"7935:12:66"},"nativeSrc":"7935:32:66","nodeType":"YulFunctionCall","src":"7935:32:66"},"variables":[{"name":"value","nativeSrc":"7926:5:66","nodeType":"YulTypedName","src":"7926:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7998:5:66","nodeType":"YulIdentifier","src":"7998:5:66"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"7976:21:66","nodeType":"YulIdentifier","src":"7976:21:66"},"nativeSrc":"7976:28:66","nodeType":"YulFunctionCall","src":"7976:28:66"},"nativeSrc":"7976:28:66","nodeType":"YulExpressionStatement","src":"7976:28:66"},{"nativeSrc":"8013:15:66","nodeType":"YulAssignment","src":"8013:15:66","value":{"name":"value","nativeSrc":"8023:5:66","nodeType":"YulIdentifier","src":"8023:5:66"},"variableNames":[{"name":"value1","nativeSrc":"8013:6:66","nodeType":"YulIdentifier","src":"8013:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_bool","nativeSrc":"7545:489:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7616:9:66","nodeType":"YulTypedName","src":"7616:9:66","type":""},{"name":"dataEnd","nativeSrc":"7627:7:66","nodeType":"YulTypedName","src":"7627:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7639:6:66","nodeType":"YulTypedName","src":"7639:6:66","type":""},{"name":"value1","nativeSrc":"7647:6:66","nodeType":"YulTypedName","src":"7647:6:66","type":""}],"src":"7545:489:66"},{"body":{"nativeSrc":"8196:96:66","nodeType":"YulBlock","src":"8196:96:66","statements":[{"nativeSrc":"8206:26:66","nodeType":"YulAssignment","src":"8206:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"8218:9:66","nodeType":"YulIdentifier","src":"8218:9:66"},{"kind":"number","nativeSrc":"8229:2:66","nodeType":"YulLiteral","src":"8229:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8214:3:66","nodeType":"YulIdentifier","src":"8214:3:66"},"nativeSrc":"8214:18:66","nodeType":"YulFunctionCall","src":"8214:18:66"},"variableNames":[{"name":"tail","nativeSrc":"8206:4:66","nodeType":"YulIdentifier","src":"8206:4:66"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"8268:6:66","nodeType":"YulIdentifier","src":"8268:6:66"},{"name":"headStart","nativeSrc":"8276:9:66","nodeType":"YulIdentifier","src":"8276:9:66"}],"functionName":{"name":"abi_encode_struct_OFTLimit","nativeSrc":"8241:26:66","nodeType":"YulIdentifier","src":"8241:26:66"},"nativeSrc":"8241:45:66","nodeType":"YulFunctionCall","src":"8241:45:66"},"nativeSrc":"8241:45:66","nodeType":"YulExpressionStatement","src":"8241:45:66"}]},"name":"abi_encode_tuple_t_struct$_MessagingFee_$33_memory_ptr__to_t_struct$_MessagingFee_$33_memory_ptr__fromStack_reversed","nativeSrc":"8039:253:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8165:9:66","nodeType":"YulTypedName","src":"8165:9:66","type":""},{"name":"value0","nativeSrc":"8176:6:66","nodeType":"YulTypedName","src":"8176:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8187:4:66","nodeType":"YulTypedName","src":"8187:4:66","type":""}],"src":"8039:253:66"},{"body":{"nativeSrc":"8345:111:66","nodeType":"YulBlock","src":"8345:111:66","statements":[{"nativeSrc":"8355:29:66","nodeType":"YulAssignment","src":"8355:29:66","value":{"arguments":[{"name":"offset","nativeSrc":"8377:6:66","nodeType":"YulIdentifier","src":"8377:6:66"}],"functionName":{"name":"calldataload","nativeSrc":"8364:12:66","nodeType":"YulIdentifier","src":"8364:12:66"},"nativeSrc":"8364:20:66","nodeType":"YulFunctionCall","src":"8364:20:66"},"variableNames":[{"name":"value","nativeSrc":"8355:5:66","nodeType":"YulIdentifier","src":"8355:5:66"}]},{"body":{"nativeSrc":"8434:16:66","nodeType":"YulBlock","src":"8434:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8443:1:66","nodeType":"YulLiteral","src":"8443:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"8446:1:66","nodeType":"YulLiteral","src":"8446:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8436:6:66","nodeType":"YulIdentifier","src":"8436:6:66"},"nativeSrc":"8436:12:66","nodeType":"YulFunctionCall","src":"8436:12:66"},"nativeSrc":"8436:12:66","nodeType":"YulExpressionStatement","src":"8436:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"8406:5:66","nodeType":"YulIdentifier","src":"8406:5:66"},{"arguments":[{"name":"value","nativeSrc":"8417:5:66","nodeType":"YulIdentifier","src":"8417:5:66"},{"kind":"number","nativeSrc":"8424:6:66","nodeType":"YulLiteral","src":"8424:6:66","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"8413:3:66","nodeType":"YulIdentifier","src":"8413:3:66"},"nativeSrc":"8413:18:66","nodeType":"YulFunctionCall","src":"8413:18:66"}],"functionName":{"name":"eq","nativeSrc":"8403:2:66","nodeType":"YulIdentifier","src":"8403:2:66"},"nativeSrc":"8403:29:66","nodeType":"YulFunctionCall","src":"8403:29:66"}],"functionName":{"name":"iszero","nativeSrc":"8396:6:66","nodeType":"YulIdentifier","src":"8396:6:66"},"nativeSrc":"8396:37:66","nodeType":"YulFunctionCall","src":"8396:37:66"},"nativeSrc":"8393:57:66","nodeType":"YulIf","src":"8393:57:66"}]},"name":"abi_decode_uint16","nativeSrc":"8297:159:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"8324:6:66","nodeType":"YulTypedName","src":"8324:6:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"8335:5:66","nodeType":"YulTypedName","src":"8335:5:66","type":""}],"src":"8297:159:66"},{"body":{"nativeSrc":"8546:171:66","nodeType":"YulBlock","src":"8546:171:66","statements":[{"body":{"nativeSrc":"8592:16:66","nodeType":"YulBlock","src":"8592:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8601:1:66","nodeType":"YulLiteral","src":"8601:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"8604:1:66","nodeType":"YulLiteral","src":"8604:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8594:6:66","nodeType":"YulIdentifier","src":"8594:6:66"},"nativeSrc":"8594:12:66","nodeType":"YulFunctionCall","src":"8594:12:66"},"nativeSrc":"8594:12:66","nodeType":"YulExpressionStatement","src":"8594:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8567:7:66","nodeType":"YulIdentifier","src":"8567:7:66"},{"name":"headStart","nativeSrc":"8576:9:66","nodeType":"YulIdentifier","src":"8576:9:66"}],"functionName":{"name":"sub","nativeSrc":"8563:3:66","nodeType":"YulIdentifier","src":"8563:3:66"},"nativeSrc":"8563:23:66","nodeType":"YulFunctionCall","src":"8563:23:66"},{"kind":"number","nativeSrc":"8588:2:66","nodeType":"YulLiteral","src":"8588:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"8559:3:66","nodeType":"YulIdentifier","src":"8559:3:66"},"nativeSrc":"8559:32:66","nodeType":"YulFunctionCall","src":"8559:32:66"},"nativeSrc":"8556:52:66","nodeType":"YulIf","src":"8556:52:66"},{"nativeSrc":"8617:38:66","nodeType":"YulAssignment","src":"8617:38:66","value":{"arguments":[{"name":"headStart","nativeSrc":"8645:9:66","nodeType":"YulIdentifier","src":"8645:9:66"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"8627:17:66","nodeType":"YulIdentifier","src":"8627:17:66"},"nativeSrc":"8627:28:66","nodeType":"YulFunctionCall","src":"8627:28:66"},"variableNames":[{"name":"value0","nativeSrc":"8617:6:66","nodeType":"YulIdentifier","src":"8617:6:66"}]},{"nativeSrc":"8664:47:66","nodeType":"YulAssignment","src":"8664:47:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8696:9:66","nodeType":"YulIdentifier","src":"8696:9:66"},{"kind":"number","nativeSrc":"8707:2:66","nodeType":"YulLiteral","src":"8707:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8692:3:66","nodeType":"YulIdentifier","src":"8692:3:66"},"nativeSrc":"8692:18:66","nodeType":"YulFunctionCall","src":"8692:18:66"}],"functionName":{"name":"abi_decode_uint16","nativeSrc":"8674:17:66","nodeType":"YulIdentifier","src":"8674:17:66"},"nativeSrc":"8674:37:66","nodeType":"YulFunctionCall","src":"8674:37:66"},"variableNames":[{"name":"value1","nativeSrc":"8664:6:66","nodeType":"YulIdentifier","src":"8664:6:66"}]}]},"name":"abi_decode_tuple_t_uint32t_uint16","nativeSrc":"8461:256:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8504:9:66","nodeType":"YulTypedName","src":"8504:9:66","type":""},{"name":"dataEnd","nativeSrc":"8515:7:66","nodeType":"YulTypedName","src":"8515:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8527:6:66","nodeType":"YulTypedName","src":"8527:6:66","type":""},{"name":"value1","nativeSrc":"8535:6:66","nodeType":"YulTypedName","src":"8535:6:66","type":""}],"src":"8461:256:66"},{"body":{"nativeSrc":"8841:99:66","nodeType":"YulBlock","src":"8841:99:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8858:9:66","nodeType":"YulIdentifier","src":"8858:9:66"},{"kind":"number","nativeSrc":"8869:2:66","nodeType":"YulLiteral","src":"8869:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"8851:6:66","nodeType":"YulIdentifier","src":"8851:6:66"},"nativeSrc":"8851:21:66","nodeType":"YulFunctionCall","src":"8851:21:66"},"nativeSrc":"8851:21:66","nodeType":"YulExpressionStatement","src":"8851:21:66"},{"nativeSrc":"8881:53:66","nodeType":"YulAssignment","src":"8881:53:66","value":{"arguments":[{"name":"value0","nativeSrc":"8907:6:66","nodeType":"YulIdentifier","src":"8907:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"8919:9:66","nodeType":"YulIdentifier","src":"8919:9:66"},{"kind":"number","nativeSrc":"8930:2:66","nodeType":"YulLiteral","src":"8930:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8915:3:66","nodeType":"YulIdentifier","src":"8915:3:66"},"nativeSrc":"8915:18:66","nodeType":"YulFunctionCall","src":"8915:18:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"8889:17:66","nodeType":"YulIdentifier","src":"8889:17:66"},"nativeSrc":"8889:45:66","nodeType":"YulFunctionCall","src":"8889:45:66"},"variableNames":[{"name":"tail","nativeSrc":"8881:4:66","nodeType":"YulIdentifier","src":"8881:4:66"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"8722:218:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8810:9:66","nodeType":"YulTypedName","src":"8810:9:66","type":""},{"name":"value0","nativeSrc":"8821:6:66","nodeType":"YulTypedName","src":"8821:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8832:4:66","nodeType":"YulTypedName","src":"8832:4:66","type":""}],"src":"8722:218:66"},{"body":{"nativeSrc":"9074:102:66","nodeType":"YulBlock","src":"9074:102:66","statements":[{"nativeSrc":"9084:26:66","nodeType":"YulAssignment","src":"9084:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"9096:9:66","nodeType":"YulIdentifier","src":"9096:9:66"},{"kind":"number","nativeSrc":"9107:2:66","nodeType":"YulLiteral","src":"9107:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9092:3:66","nodeType":"YulIdentifier","src":"9092:3:66"},"nativeSrc":"9092:18:66","nodeType":"YulFunctionCall","src":"9092:18:66"},"variableNames":[{"name":"tail","nativeSrc":"9084:4:66","nodeType":"YulIdentifier","src":"9084:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9126:9:66","nodeType":"YulIdentifier","src":"9126:9:66"},{"arguments":[{"name":"value0","nativeSrc":"9141:6:66","nodeType":"YulIdentifier","src":"9141:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9157:3:66","nodeType":"YulLiteral","src":"9157:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"9162:1:66","nodeType":"YulLiteral","src":"9162:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9153:3:66","nodeType":"YulIdentifier","src":"9153:3:66"},"nativeSrc":"9153:11:66","nodeType":"YulFunctionCall","src":"9153:11:66"},{"kind":"number","nativeSrc":"9166:1:66","nodeType":"YulLiteral","src":"9166:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9149:3:66","nodeType":"YulIdentifier","src":"9149:3:66"},"nativeSrc":"9149:19:66","nodeType":"YulFunctionCall","src":"9149:19:66"}],"functionName":{"name":"and","nativeSrc":"9137:3:66","nodeType":"YulIdentifier","src":"9137:3:66"},"nativeSrc":"9137:32:66","nodeType":"YulFunctionCall","src":"9137:32:66"}],"functionName":{"name":"mstore","nativeSrc":"9119:6:66","nodeType":"YulIdentifier","src":"9119:6:66"},"nativeSrc":"9119:51:66","nodeType":"YulFunctionCall","src":"9119:51:66"},"nativeSrc":"9119:51:66","nodeType":"YulExpressionStatement","src":"9119:51:66"}]},"name":"abi_encode_tuple_t_contract$_ILayerZeroEndpointV2_$202__to_t_address__fromStack_reversed","nativeSrc":"8945:231:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9043:9:66","nodeType":"YulTypedName","src":"9043:9:66","type":""},{"name":"value0","nativeSrc":"9054:6:66","nodeType":"YulTypedName","src":"9054:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9065:4:66","nodeType":"YulTypedName","src":"9065:4:66","type":""}],"src":"8945:231:66"},{"body":{"nativeSrc":"9251:177:66","nodeType":"YulBlock","src":"9251:177:66","statements":[{"body":{"nativeSrc":"9297:16:66","nodeType":"YulBlock","src":"9297:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9306:1:66","nodeType":"YulLiteral","src":"9306:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"9309:1:66","nodeType":"YulLiteral","src":"9309:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9299:6:66","nodeType":"YulIdentifier","src":"9299:6:66"},"nativeSrc":"9299:12:66","nodeType":"YulFunctionCall","src":"9299:12:66"},"nativeSrc":"9299:12:66","nodeType":"YulExpressionStatement","src":"9299:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9272:7:66","nodeType":"YulIdentifier","src":"9272:7:66"},{"name":"headStart","nativeSrc":"9281:9:66","nodeType":"YulIdentifier","src":"9281:9:66"}],"functionName":{"name":"sub","nativeSrc":"9268:3:66","nodeType":"YulIdentifier","src":"9268:3:66"},"nativeSrc":"9268:23:66","nodeType":"YulFunctionCall","src":"9268:23:66"},{"kind":"number","nativeSrc":"9293:2:66","nodeType":"YulLiteral","src":"9293:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"9264:3:66","nodeType":"YulIdentifier","src":"9264:3:66"},"nativeSrc":"9264:32:66","nodeType":"YulFunctionCall","src":"9264:32:66"},"nativeSrc":"9261:52:66","nodeType":"YulIf","src":"9261:52:66"},{"nativeSrc":"9322:36:66","nodeType":"YulVariableDeclaration","src":"9322:36:66","value":{"arguments":[{"name":"headStart","nativeSrc":"9348:9:66","nodeType":"YulIdentifier","src":"9348:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"9335:12:66","nodeType":"YulIdentifier","src":"9335:12:66"},"nativeSrc":"9335:23:66","nodeType":"YulFunctionCall","src":"9335:23:66"},"variables":[{"name":"value","nativeSrc":"9326:5:66","nodeType":"YulTypedName","src":"9326:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"9392:5:66","nodeType":"YulIdentifier","src":"9392:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"9367:24:66","nodeType":"YulIdentifier","src":"9367:24:66"},"nativeSrc":"9367:31:66","nodeType":"YulFunctionCall","src":"9367:31:66"},"nativeSrc":"9367:31:66","nodeType":"YulExpressionStatement","src":"9367:31:66"},{"nativeSrc":"9407:15:66","nodeType":"YulAssignment","src":"9407:15:66","value":{"name":"value","nativeSrc":"9417:5:66","nodeType":"YulIdentifier","src":"9417:5:66"},"variableNames":[{"name":"value0","nativeSrc":"9407:6:66","nodeType":"YulIdentifier","src":"9407:6:66"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"9181:247:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9217:9:66","nodeType":"YulTypedName","src":"9217:9:66","type":""},{"name":"dataEnd","nativeSrc":"9228:7:66","nodeType":"YulTypedName","src":"9228:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9240:6:66","nodeType":"YulTypedName","src":"9240:6:66","type":""}],"src":"9181:247:66"},{"body":{"nativeSrc":"9532:101:66","nodeType":"YulBlock","src":"9532:101:66","statements":[{"nativeSrc":"9542:26:66","nodeType":"YulAssignment","src":"9542:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"9554:9:66","nodeType":"YulIdentifier","src":"9554:9:66"},{"kind":"number","nativeSrc":"9565:2:66","nodeType":"YulLiteral","src":"9565:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9550:3:66","nodeType":"YulIdentifier","src":"9550:3:66"},"nativeSrc":"9550:18:66","nodeType":"YulFunctionCall","src":"9550:18:66"},"variableNames":[{"name":"tail","nativeSrc":"9542:4:66","nodeType":"YulIdentifier","src":"9542:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9584:9:66","nodeType":"YulIdentifier","src":"9584:9:66"},{"arguments":[{"name":"value0","nativeSrc":"9599:6:66","nodeType":"YulIdentifier","src":"9599:6:66"},{"kind":"number","nativeSrc":"9607:18:66","nodeType":"YulLiteral","src":"9607:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"9595:3:66","nodeType":"YulIdentifier","src":"9595:3:66"},"nativeSrc":"9595:31:66","nodeType":"YulFunctionCall","src":"9595:31:66"}],"functionName":{"name":"mstore","nativeSrc":"9577:6:66","nodeType":"YulIdentifier","src":"9577:6:66"},"nativeSrc":"9577:50:66","nodeType":"YulFunctionCall","src":"9577:50:66"},"nativeSrc":"9577:50:66","nodeType":"YulExpressionStatement","src":"9577:50:66"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"9433:200:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9501:9:66","nodeType":"YulTypedName","src":"9501:9:66","type":""},{"name":"value0","nativeSrc":"9512:6:66","nodeType":"YulTypedName","src":"9512:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9523:4:66","nodeType":"YulTypedName","src":"9523:4:66","type":""}],"src":"9433:200:66"},{"body":{"nativeSrc":"9785:521:66","nodeType":"YulBlock","src":"9785:521:66","statements":[{"body":{"nativeSrc":"9832:16:66","nodeType":"YulBlock","src":"9832:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9841:1:66","nodeType":"YulLiteral","src":"9841:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"9844:1:66","nodeType":"YulLiteral","src":"9844:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9834:6:66","nodeType":"YulIdentifier","src":"9834:6:66"},"nativeSrc":"9834:12:66","nodeType":"YulFunctionCall","src":"9834:12:66"},"nativeSrc":"9834:12:66","nodeType":"YulExpressionStatement","src":"9834:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9806:7:66","nodeType":"YulIdentifier","src":"9806:7:66"},{"name":"headStart","nativeSrc":"9815:9:66","nodeType":"YulIdentifier","src":"9815:9:66"}],"functionName":{"name":"sub","nativeSrc":"9802:3:66","nodeType":"YulIdentifier","src":"9802:3:66"},"nativeSrc":"9802:23:66","nodeType":"YulFunctionCall","src":"9802:23:66"},{"kind":"number","nativeSrc":"9827:3:66","nodeType":"YulLiteral","src":"9827:3:66","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"9798:3:66","nodeType":"YulIdentifier","src":"9798:3:66"},"nativeSrc":"9798:33:66","nodeType":"YulFunctionCall","src":"9798:33:66"},"nativeSrc":"9795:53:66","nodeType":"YulIf","src":"9795:53:66"},{"nativeSrc":"9857:63:66","nodeType":"YulAssignment","src":"9857:63:66","value":{"arguments":[{"name":"headStart","nativeSrc":"9901:9:66","nodeType":"YulIdentifier","src":"9901:9:66"},{"name":"dataEnd","nativeSrc":"9912:7:66","nodeType":"YulIdentifier","src":"9912:7:66"}],"functionName":{"name":"abi_decode_struct_Origin_calldata","nativeSrc":"9867:33:66","nodeType":"YulIdentifier","src":"9867:33:66"},"nativeSrc":"9867:53:66","nodeType":"YulFunctionCall","src":"9867:53:66"},"variableNames":[{"name":"value0","nativeSrc":"9857:6:66","nodeType":"YulIdentifier","src":"9857:6:66"}]},{"nativeSrc":"9929:46:66","nodeType":"YulVariableDeclaration","src":"9929:46:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9960:9:66","nodeType":"YulIdentifier","src":"9960:9:66"},{"kind":"number","nativeSrc":"9971:2:66","nodeType":"YulLiteral","src":"9971:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"9956:3:66","nodeType":"YulIdentifier","src":"9956:3:66"},"nativeSrc":"9956:18:66","nodeType":"YulFunctionCall","src":"9956:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"9943:12:66","nodeType":"YulIdentifier","src":"9943:12:66"},"nativeSrc":"9943:32:66","nodeType":"YulFunctionCall","src":"9943:32:66"},"variables":[{"name":"offset","nativeSrc":"9933:6:66","nodeType":"YulTypedName","src":"9933:6:66","type":""}]},{"body":{"nativeSrc":"10018:16:66","nodeType":"YulBlock","src":"10018:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10027:1:66","nodeType":"YulLiteral","src":"10027:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"10030:1:66","nodeType":"YulLiteral","src":"10030:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10020:6:66","nodeType":"YulIdentifier","src":"10020:6:66"},"nativeSrc":"10020:12:66","nodeType":"YulFunctionCall","src":"10020:12:66"},"nativeSrc":"10020:12:66","nodeType":"YulExpressionStatement","src":"10020:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"9990:6:66","nodeType":"YulIdentifier","src":"9990:6:66"},{"kind":"number","nativeSrc":"9998:18:66","nodeType":"YulLiteral","src":"9998:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9987:2:66","nodeType":"YulIdentifier","src":"9987:2:66"},"nativeSrc":"9987:30:66","nodeType":"YulFunctionCall","src":"9987:30:66"},"nativeSrc":"9984:50:66","nodeType":"YulIf","src":"9984:50:66"},{"nativeSrc":"10043:84:66","nodeType":"YulVariableDeclaration","src":"10043:84:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10099:9:66","nodeType":"YulIdentifier","src":"10099:9:66"},{"name":"offset","nativeSrc":"10110:6:66","nodeType":"YulIdentifier","src":"10110:6:66"}],"functionName":{"name":"add","nativeSrc":"10095:3:66","nodeType":"YulIdentifier","src":"10095:3:66"},"nativeSrc":"10095:22:66","nodeType":"YulFunctionCall","src":"10095:22:66"},{"name":"dataEnd","nativeSrc":"10119:7:66","nodeType":"YulIdentifier","src":"10119:7:66"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"10069:25:66","nodeType":"YulIdentifier","src":"10069:25:66"},"nativeSrc":"10069:58:66","nodeType":"YulFunctionCall","src":"10069:58:66"},"variables":[{"name":"value1_1","nativeSrc":"10047:8:66","nodeType":"YulTypedName","src":"10047:8:66","type":""},{"name":"value2_1","nativeSrc":"10057:8:66","nodeType":"YulTypedName","src":"10057:8:66","type":""}]},{"nativeSrc":"10136:18:66","nodeType":"YulAssignment","src":"10136:18:66","value":{"name":"value1_1","nativeSrc":"10146:8:66","nodeType":"YulIdentifier","src":"10146:8:66"},"variableNames":[{"name":"value1","nativeSrc":"10136:6:66","nodeType":"YulIdentifier","src":"10136:6:66"}]},{"nativeSrc":"10163:18:66","nodeType":"YulAssignment","src":"10163:18:66","value":{"name":"value2_1","nativeSrc":"10173:8:66","nodeType":"YulIdentifier","src":"10173:8:66"},"variableNames":[{"name":"value2","nativeSrc":"10163:6:66","nodeType":"YulIdentifier","src":"10163:6:66"}]},{"nativeSrc":"10190:46:66","nodeType":"YulVariableDeclaration","src":"10190:46:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10220:9:66","nodeType":"YulIdentifier","src":"10220:9:66"},{"kind":"number","nativeSrc":"10231:3:66","nodeType":"YulLiteral","src":"10231:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"10216:3:66","nodeType":"YulIdentifier","src":"10216:3:66"},"nativeSrc":"10216:19:66","nodeType":"YulFunctionCall","src":"10216:19:66"}],"functionName":{"name":"calldataload","nativeSrc":"10203:12:66","nodeType":"YulIdentifier","src":"10203:12:66"},"nativeSrc":"10203:33:66","nodeType":"YulFunctionCall","src":"10203:33:66"},"variables":[{"name":"value","nativeSrc":"10194:5:66","nodeType":"YulTypedName","src":"10194:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"10270:5:66","nodeType":"YulIdentifier","src":"10270:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"10245:24:66","nodeType":"YulIdentifier","src":"10245:24:66"},"nativeSrc":"10245:31:66","nodeType":"YulFunctionCall","src":"10245:31:66"},"nativeSrc":"10245:31:66","nodeType":"YulExpressionStatement","src":"10245:31:66"},{"nativeSrc":"10285:15:66","nodeType":"YulAssignment","src":"10285:15:66","value":{"name":"value","nativeSrc":"10295:5:66","nodeType":"YulIdentifier","src":"10295:5:66"},"variableNames":[{"name":"value3","nativeSrc":"10285:6:66","nodeType":"YulIdentifier","src":"10285:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes_calldata_ptrt_address","nativeSrc":"9638:668:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9727:9:66","nodeType":"YulTypedName","src":"9727:9:66","type":""},{"name":"dataEnd","nativeSrc":"9738:7:66","nodeType":"YulTypedName","src":"9738:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9750:6:66","nodeType":"YulTypedName","src":"9750:6:66","type":""},{"name":"value1","nativeSrc":"9758:6:66","nodeType":"YulTypedName","src":"9758:6:66","type":""},{"name":"value2","nativeSrc":"9766:6:66","nodeType":"YulTypedName","src":"9766:6:66","type":""},{"name":"value3","nativeSrc":"9774:6:66","nodeType":"YulTypedName","src":"9774:6:66","type":""}],"src":"9638:668:66"},{"body":{"nativeSrc":"10423:283:66","nodeType":"YulBlock","src":"10423:283:66","statements":[{"body":{"nativeSrc":"10472:16:66","nodeType":"YulBlock","src":"10472:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10481:1:66","nodeType":"YulLiteral","src":"10481:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"10484:1:66","nodeType":"YulLiteral","src":"10484:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10474:6:66","nodeType":"YulIdentifier","src":"10474:6:66"},"nativeSrc":"10474:12:66","nodeType":"YulFunctionCall","src":"10474:12:66"},"nativeSrc":"10474:12:66","nodeType":"YulExpressionStatement","src":"10474:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"10451:6:66","nodeType":"YulIdentifier","src":"10451:6:66"},{"kind":"number","nativeSrc":"10459:4:66","nodeType":"YulLiteral","src":"10459:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"10447:3:66","nodeType":"YulIdentifier","src":"10447:3:66"},"nativeSrc":"10447:17:66","nodeType":"YulFunctionCall","src":"10447:17:66"},{"name":"end","nativeSrc":"10466:3:66","nodeType":"YulIdentifier","src":"10466:3:66"}],"functionName":{"name":"slt","nativeSrc":"10443:3:66","nodeType":"YulIdentifier","src":"10443:3:66"},"nativeSrc":"10443:27:66","nodeType":"YulFunctionCall","src":"10443:27:66"}],"functionName":{"name":"iszero","nativeSrc":"10436:6:66","nodeType":"YulIdentifier","src":"10436:6:66"},"nativeSrc":"10436:35:66","nodeType":"YulFunctionCall","src":"10436:35:66"},"nativeSrc":"10433:55:66","nodeType":"YulIf","src":"10433:55:66"},{"nativeSrc":"10497:30:66","nodeType":"YulAssignment","src":"10497:30:66","value":{"arguments":[{"name":"offset","nativeSrc":"10520:6:66","nodeType":"YulIdentifier","src":"10520:6:66"}],"functionName":{"name":"calldataload","nativeSrc":"10507:12:66","nodeType":"YulIdentifier","src":"10507:12:66"},"nativeSrc":"10507:20:66","nodeType":"YulFunctionCall","src":"10507:20:66"},"variableNames":[{"name":"length","nativeSrc":"10497:6:66","nodeType":"YulIdentifier","src":"10497:6:66"}]},{"body":{"nativeSrc":"10570:16:66","nodeType":"YulBlock","src":"10570:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10579:1:66","nodeType":"YulLiteral","src":"10579:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"10582:1:66","nodeType":"YulLiteral","src":"10582:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10572:6:66","nodeType":"YulIdentifier","src":"10572:6:66"},"nativeSrc":"10572:12:66","nodeType":"YulFunctionCall","src":"10572:12:66"},"nativeSrc":"10572:12:66","nodeType":"YulExpressionStatement","src":"10572:12:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"10542:6:66","nodeType":"YulIdentifier","src":"10542:6:66"},{"kind":"number","nativeSrc":"10550:18:66","nodeType":"YulLiteral","src":"10550:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10539:2:66","nodeType":"YulIdentifier","src":"10539:2:66"},"nativeSrc":"10539:30:66","nodeType":"YulFunctionCall","src":"10539:30:66"},"nativeSrc":"10536:50:66","nodeType":"YulIf","src":"10536:50:66"},{"nativeSrc":"10595:29:66","nodeType":"YulAssignment","src":"10595:29:66","value":{"arguments":[{"name":"offset","nativeSrc":"10611:6:66","nodeType":"YulIdentifier","src":"10611:6:66"},{"kind":"number","nativeSrc":"10619:4:66","nodeType":"YulLiteral","src":"10619:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10607:3:66","nodeType":"YulIdentifier","src":"10607:3:66"},"nativeSrc":"10607:17:66","nodeType":"YulFunctionCall","src":"10607:17:66"},"variableNames":[{"name":"arrayPos","nativeSrc":"10595:8:66","nodeType":"YulIdentifier","src":"10595:8:66"}]},{"body":{"nativeSrc":"10684:16:66","nodeType":"YulBlock","src":"10684:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10693:1:66","nodeType":"YulLiteral","src":"10693:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"10696:1:66","nodeType":"YulLiteral","src":"10696:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10686:6:66","nodeType":"YulIdentifier","src":"10686:6:66"},"nativeSrc":"10686:12:66","nodeType":"YulFunctionCall","src":"10686:12:66"},"nativeSrc":"10686:12:66","nodeType":"YulExpressionStatement","src":"10686:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"10647:6:66","nodeType":"YulIdentifier","src":"10647:6:66"},{"arguments":[{"kind":"number","nativeSrc":"10659:1:66","nodeType":"YulLiteral","src":"10659:1:66","type":"","value":"5"},{"name":"length","nativeSrc":"10662:6:66","nodeType":"YulIdentifier","src":"10662:6:66"}],"functionName":{"name":"shl","nativeSrc":"10655:3:66","nodeType":"YulIdentifier","src":"10655:3:66"},"nativeSrc":"10655:14:66","nodeType":"YulFunctionCall","src":"10655:14:66"}],"functionName":{"name":"add","nativeSrc":"10643:3:66","nodeType":"YulIdentifier","src":"10643:3:66"},"nativeSrc":"10643:27:66","nodeType":"YulFunctionCall","src":"10643:27:66"},{"kind":"number","nativeSrc":"10672:4:66","nodeType":"YulLiteral","src":"10672:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10639:3:66","nodeType":"YulIdentifier","src":"10639:3:66"},"nativeSrc":"10639:38:66","nodeType":"YulFunctionCall","src":"10639:38:66"},{"name":"end","nativeSrc":"10679:3:66","nodeType":"YulIdentifier","src":"10679:3:66"}],"functionName":{"name":"gt","nativeSrc":"10636:2:66","nodeType":"YulIdentifier","src":"10636:2:66"},"nativeSrc":"10636:47:66","nodeType":"YulFunctionCall","src":"10636:47:66"},"nativeSrc":"10633:67:66","nodeType":"YulIf","src":"10633:67:66"}]},"name":"abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata","nativeSrc":"10311:395:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"10386:6:66","nodeType":"YulTypedName","src":"10386:6:66","type":""},{"name":"end","nativeSrc":"10394:3:66","nodeType":"YulTypedName","src":"10394:3:66","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"10402:8:66","nodeType":"YulTypedName","src":"10402:8:66","type":""},{"name":"length","nativeSrc":"10412:6:66","nodeType":"YulTypedName","src":"10412:6:66","type":""}],"src":"10311:395:66"},{"body":{"nativeSrc":"10855:360:66","nodeType":"YulBlock","src":"10855:360:66","statements":[{"body":{"nativeSrc":"10901:16:66","nodeType":"YulBlock","src":"10901:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10910:1:66","nodeType":"YulLiteral","src":"10910:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"10913:1:66","nodeType":"YulLiteral","src":"10913:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10903:6:66","nodeType":"YulIdentifier","src":"10903:6:66"},"nativeSrc":"10903:12:66","nodeType":"YulFunctionCall","src":"10903:12:66"},"nativeSrc":"10903:12:66","nodeType":"YulExpressionStatement","src":"10903:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10876:7:66","nodeType":"YulIdentifier","src":"10876:7:66"},{"name":"headStart","nativeSrc":"10885:9:66","nodeType":"YulIdentifier","src":"10885:9:66"}],"functionName":{"name":"sub","nativeSrc":"10872:3:66","nodeType":"YulIdentifier","src":"10872:3:66"},"nativeSrc":"10872:23:66","nodeType":"YulFunctionCall","src":"10872:23:66"},{"kind":"number","nativeSrc":"10897:2:66","nodeType":"YulLiteral","src":"10897:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10868:3:66","nodeType":"YulIdentifier","src":"10868:3:66"},"nativeSrc":"10868:32:66","nodeType":"YulFunctionCall","src":"10868:32:66"},"nativeSrc":"10865:52:66","nodeType":"YulIf","src":"10865:52:66"},{"nativeSrc":"10926:37:66","nodeType":"YulVariableDeclaration","src":"10926:37:66","value":{"arguments":[{"name":"headStart","nativeSrc":"10953:9:66","nodeType":"YulIdentifier","src":"10953:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"10940:12:66","nodeType":"YulIdentifier","src":"10940:12:66"},"nativeSrc":"10940:23:66","nodeType":"YulFunctionCall","src":"10940:23:66"},"variables":[{"name":"offset","nativeSrc":"10930:6:66","nodeType":"YulTypedName","src":"10930:6:66","type":""}]},{"body":{"nativeSrc":"11006:16:66","nodeType":"YulBlock","src":"11006:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11015:1:66","nodeType":"YulLiteral","src":"11015:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"11018:1:66","nodeType":"YulLiteral","src":"11018:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11008:6:66","nodeType":"YulIdentifier","src":"11008:6:66"},"nativeSrc":"11008:12:66","nodeType":"YulFunctionCall","src":"11008:12:66"},"nativeSrc":"11008:12:66","nodeType":"YulExpressionStatement","src":"11008:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"10978:6:66","nodeType":"YulIdentifier","src":"10978:6:66"},{"kind":"number","nativeSrc":"10986:18:66","nodeType":"YulLiteral","src":"10986:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10975:2:66","nodeType":"YulIdentifier","src":"10975:2:66"},"nativeSrc":"10975:30:66","nodeType":"YulFunctionCall","src":"10975:30:66"},"nativeSrc":"10972:50:66","nodeType":"YulIf","src":"10972:50:66"},{"nativeSrc":"11031:124:66","nodeType":"YulVariableDeclaration","src":"11031:124:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11127:9:66","nodeType":"YulIdentifier","src":"11127:9:66"},{"name":"offset","nativeSrc":"11138:6:66","nodeType":"YulIdentifier","src":"11138:6:66"}],"functionName":{"name":"add","nativeSrc":"11123:3:66","nodeType":"YulIdentifier","src":"11123:3:66"},"nativeSrc":"11123:22:66","nodeType":"YulFunctionCall","src":"11123:22:66"},{"name":"dataEnd","nativeSrc":"11147:7:66","nodeType":"YulIdentifier","src":"11147:7:66"}],"functionName":{"name":"abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata","nativeSrc":"11057:65:66","nodeType":"YulIdentifier","src":"11057:65:66"},"nativeSrc":"11057:98:66","nodeType":"YulFunctionCall","src":"11057:98:66"},"variables":[{"name":"value0_1","nativeSrc":"11035:8:66","nodeType":"YulTypedName","src":"11035:8:66","type":""},{"name":"value1_1","nativeSrc":"11045:8:66","nodeType":"YulTypedName","src":"11045:8:66","type":""}]},{"nativeSrc":"11164:18:66","nodeType":"YulAssignment","src":"11164:18:66","value":{"name":"value0_1","nativeSrc":"11174:8:66","nodeType":"YulIdentifier","src":"11174:8:66"},"variableNames":[{"name":"value0","nativeSrc":"11164:6:66","nodeType":"YulIdentifier","src":"11164:6:66"}]},{"nativeSrc":"11191:18:66","nodeType":"YulAssignment","src":"11191:18:66","value":{"name":"value1_1","nativeSrc":"11201:8:66","nodeType":"YulIdentifier","src":"11201:8:66"},"variableNames":[{"name":"value1","nativeSrc":"11191:6:66","nodeType":"YulIdentifier","src":"11191:6:66"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr","nativeSrc":"10711:504:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10813:9:66","nodeType":"YulTypedName","src":"10813:9:66","type":""},{"name":"dataEnd","nativeSrc":"10824:7:66","nodeType":"YulTypedName","src":"10824:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10836:6:66","nodeType":"YulTypedName","src":"10836:6:66","type":""},{"name":"value1","nativeSrc":"10844:6:66","nodeType":"YulTypedName","src":"10844:6:66","type":""}],"src":"10711:504:66"},{"body":{"nativeSrc":"11289:115:66","nodeType":"YulBlock","src":"11289:115:66","statements":[{"body":{"nativeSrc":"11335:16:66","nodeType":"YulBlock","src":"11335:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11344:1:66","nodeType":"YulLiteral","src":"11344:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"11347:1:66","nodeType":"YulLiteral","src":"11347:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11337:6:66","nodeType":"YulIdentifier","src":"11337:6:66"},"nativeSrc":"11337:12:66","nodeType":"YulFunctionCall","src":"11337:12:66"},"nativeSrc":"11337:12:66","nodeType":"YulExpressionStatement","src":"11337:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11310:7:66","nodeType":"YulIdentifier","src":"11310:7:66"},{"name":"headStart","nativeSrc":"11319:9:66","nodeType":"YulIdentifier","src":"11319:9:66"}],"functionName":{"name":"sub","nativeSrc":"11306:3:66","nodeType":"YulIdentifier","src":"11306:3:66"},"nativeSrc":"11306:23:66","nodeType":"YulFunctionCall","src":"11306:23:66"},{"kind":"number","nativeSrc":"11331:2:66","nodeType":"YulLiteral","src":"11331:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"11302:3:66","nodeType":"YulIdentifier","src":"11302:3:66"},"nativeSrc":"11302:32:66","nodeType":"YulFunctionCall","src":"11302:32:66"},"nativeSrc":"11299:52:66","nodeType":"YulIf","src":"11299:52:66"},{"nativeSrc":"11360:38:66","nodeType":"YulAssignment","src":"11360:38:66","value":{"arguments":[{"name":"headStart","nativeSrc":"11388:9:66","nodeType":"YulIdentifier","src":"11388:9:66"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"11370:17:66","nodeType":"YulIdentifier","src":"11370:17:66"},"nativeSrc":"11370:28:66","nodeType":"YulFunctionCall","src":"11370:28:66"},"variableNames":[{"name":"value0","nativeSrc":"11360:6:66","nodeType":"YulIdentifier","src":"11360:6:66"}]}]},"name":"abi_decode_tuple_t_uint32","nativeSrc":"11220:184:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11255:9:66","nodeType":"YulTypedName","src":"11255:9:66","type":""},{"name":"dataEnd","nativeSrc":"11266:7:66","nodeType":"YulTypedName","src":"11266:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11278:6:66","nodeType":"YulTypedName","src":"11278:6:66","type":""}],"src":"11220:184:66"},{"body":{"nativeSrc":"11510:76:66","nodeType":"YulBlock","src":"11510:76:66","statements":[{"nativeSrc":"11520:26:66","nodeType":"YulAssignment","src":"11520:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"11532:9:66","nodeType":"YulIdentifier","src":"11532:9:66"},{"kind":"number","nativeSrc":"11543:2:66","nodeType":"YulLiteral","src":"11543:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11528:3:66","nodeType":"YulIdentifier","src":"11528:3:66"},"nativeSrc":"11528:18:66","nodeType":"YulFunctionCall","src":"11528:18:66"},"variableNames":[{"name":"tail","nativeSrc":"11520:4:66","nodeType":"YulIdentifier","src":"11520:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11562:9:66","nodeType":"YulIdentifier","src":"11562:9:66"},{"name":"value0","nativeSrc":"11573:6:66","nodeType":"YulIdentifier","src":"11573:6:66"}],"functionName":{"name":"mstore","nativeSrc":"11555:6:66","nodeType":"YulIdentifier","src":"11555:6:66"},"nativeSrc":"11555:25:66","nodeType":"YulFunctionCall","src":"11555:25:66"},"nativeSrc":"11555:25:66","nodeType":"YulExpressionStatement","src":"11555:25:66"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"11409:177:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11479:9:66","nodeType":"YulTypedName","src":"11479:9:66","type":""},{"name":"value0","nativeSrc":"11490:6:66","nodeType":"YulTypedName","src":"11490:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11501:4:66","nodeType":"YulTypedName","src":"11501:4:66","type":""}],"src":"11409:177:66"},{"body":{"nativeSrc":"11712:432:66","nodeType":"YulBlock","src":"11712:432:66","statements":[{"body":{"nativeSrc":"11758:16:66","nodeType":"YulBlock","src":"11758:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11767:1:66","nodeType":"YulLiteral","src":"11767:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"11770:1:66","nodeType":"YulLiteral","src":"11770:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11760:6:66","nodeType":"YulIdentifier","src":"11760:6:66"},"nativeSrc":"11760:12:66","nodeType":"YulFunctionCall","src":"11760:12:66"},"nativeSrc":"11760:12:66","nodeType":"YulExpressionStatement","src":"11760:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11733:7:66","nodeType":"YulIdentifier","src":"11733:7:66"},{"name":"headStart","nativeSrc":"11742:9:66","nodeType":"YulIdentifier","src":"11742:9:66"}],"functionName":{"name":"sub","nativeSrc":"11729:3:66","nodeType":"YulIdentifier","src":"11729:3:66"},"nativeSrc":"11729:23:66","nodeType":"YulFunctionCall","src":"11729:23:66"},{"kind":"number","nativeSrc":"11754:2:66","nodeType":"YulLiteral","src":"11754:2:66","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"11725:3:66","nodeType":"YulIdentifier","src":"11725:3:66"},"nativeSrc":"11725:32:66","nodeType":"YulFunctionCall","src":"11725:32:66"},"nativeSrc":"11722:52:66","nodeType":"YulIf","src":"11722:52:66"},{"nativeSrc":"11783:38:66","nodeType":"YulAssignment","src":"11783:38:66","value":{"arguments":[{"name":"headStart","nativeSrc":"11811:9:66","nodeType":"YulIdentifier","src":"11811:9:66"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"11793:17:66","nodeType":"YulIdentifier","src":"11793:17:66"},"nativeSrc":"11793:28:66","nodeType":"YulFunctionCall","src":"11793:28:66"},"variableNames":[{"name":"value0","nativeSrc":"11783:6:66","nodeType":"YulIdentifier","src":"11783:6:66"}]},{"nativeSrc":"11830:47:66","nodeType":"YulAssignment","src":"11830:47:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11862:9:66","nodeType":"YulIdentifier","src":"11862:9:66"},{"kind":"number","nativeSrc":"11873:2:66","nodeType":"YulLiteral","src":"11873:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11858:3:66","nodeType":"YulIdentifier","src":"11858:3:66"},"nativeSrc":"11858:18:66","nodeType":"YulFunctionCall","src":"11858:18:66"}],"functionName":{"name":"abi_decode_uint16","nativeSrc":"11840:17:66","nodeType":"YulIdentifier","src":"11840:17:66"},"nativeSrc":"11840:37:66","nodeType":"YulFunctionCall","src":"11840:37:66"},"variableNames":[{"name":"value1","nativeSrc":"11830:6:66","nodeType":"YulIdentifier","src":"11830:6:66"}]},{"nativeSrc":"11886:46:66","nodeType":"YulVariableDeclaration","src":"11886:46:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11917:9:66","nodeType":"YulIdentifier","src":"11917:9:66"},{"kind":"number","nativeSrc":"11928:2:66","nodeType":"YulLiteral","src":"11928:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11913:3:66","nodeType":"YulIdentifier","src":"11913:3:66"},"nativeSrc":"11913:18:66","nodeType":"YulFunctionCall","src":"11913:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"11900:12:66","nodeType":"YulIdentifier","src":"11900:12:66"},"nativeSrc":"11900:32:66","nodeType":"YulFunctionCall","src":"11900:32:66"},"variables":[{"name":"offset","nativeSrc":"11890:6:66","nodeType":"YulTypedName","src":"11890:6:66","type":""}]},{"body":{"nativeSrc":"11975:16:66","nodeType":"YulBlock","src":"11975:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11984:1:66","nodeType":"YulLiteral","src":"11984:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"11987:1:66","nodeType":"YulLiteral","src":"11987:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11977:6:66","nodeType":"YulIdentifier","src":"11977:6:66"},"nativeSrc":"11977:12:66","nodeType":"YulFunctionCall","src":"11977:12:66"},"nativeSrc":"11977:12:66","nodeType":"YulExpressionStatement","src":"11977:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"11947:6:66","nodeType":"YulIdentifier","src":"11947:6:66"},{"kind":"number","nativeSrc":"11955:18:66","nodeType":"YulLiteral","src":"11955:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11944:2:66","nodeType":"YulIdentifier","src":"11944:2:66"},"nativeSrc":"11944:30:66","nodeType":"YulFunctionCall","src":"11944:30:66"},"nativeSrc":"11941:50:66","nodeType":"YulIf","src":"11941:50:66"},{"nativeSrc":"12000:84:66","nodeType":"YulVariableDeclaration","src":"12000:84:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12056:9:66","nodeType":"YulIdentifier","src":"12056:9:66"},{"name":"offset","nativeSrc":"12067:6:66","nodeType":"YulIdentifier","src":"12067:6:66"}],"functionName":{"name":"add","nativeSrc":"12052:3:66","nodeType":"YulIdentifier","src":"12052:3:66"},"nativeSrc":"12052:22:66","nodeType":"YulFunctionCall","src":"12052:22:66"},{"name":"dataEnd","nativeSrc":"12076:7:66","nodeType":"YulIdentifier","src":"12076:7:66"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"12026:25:66","nodeType":"YulIdentifier","src":"12026:25:66"},"nativeSrc":"12026:58:66","nodeType":"YulFunctionCall","src":"12026:58:66"},"variables":[{"name":"value2_1","nativeSrc":"12004:8:66","nodeType":"YulTypedName","src":"12004:8:66","type":""},{"name":"value3_1","nativeSrc":"12014:8:66","nodeType":"YulTypedName","src":"12014:8:66","type":""}]},{"nativeSrc":"12093:18:66","nodeType":"YulAssignment","src":"12093:18:66","value":{"name":"value2_1","nativeSrc":"12103:8:66","nodeType":"YulIdentifier","src":"12103:8:66"},"variableNames":[{"name":"value2","nativeSrc":"12093:6:66","nodeType":"YulIdentifier","src":"12093:6:66"}]},{"nativeSrc":"12120:18:66","nodeType":"YulAssignment","src":"12120:18:66","value":{"name":"value3_1","nativeSrc":"12130:8:66","nodeType":"YulIdentifier","src":"12130:8:66"},"variableNames":[{"name":"value3","nativeSrc":"12120:6:66","nodeType":"YulIdentifier","src":"12120:6:66"}]}]},"name":"abi_decode_tuple_t_uint32t_uint16t_bytes_calldata_ptr","nativeSrc":"11591:553:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11654:9:66","nodeType":"YulTypedName","src":"11654:9:66","type":""},{"name":"dataEnd","nativeSrc":"11665:7:66","nodeType":"YulTypedName","src":"11665:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11677:6:66","nodeType":"YulTypedName","src":"11677:6:66","type":""},{"name":"value1","nativeSrc":"11685:6:66","nodeType":"YulTypedName","src":"11685:6:66","type":""},{"name":"value2","nativeSrc":"11693:6:66","nodeType":"YulTypedName","src":"11693:6:66","type":""},{"name":"value3","nativeSrc":"11701:6:66","nodeType":"YulTypedName","src":"11701:6:66","type":""}],"src":"11591:553:66"},{"body":{"nativeSrc":"12287:360:66","nodeType":"YulBlock","src":"12287:360:66","statements":[{"body":{"nativeSrc":"12333:16:66","nodeType":"YulBlock","src":"12333:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12342:1:66","nodeType":"YulLiteral","src":"12342:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"12345:1:66","nodeType":"YulLiteral","src":"12345:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12335:6:66","nodeType":"YulIdentifier","src":"12335:6:66"},"nativeSrc":"12335:12:66","nodeType":"YulFunctionCall","src":"12335:12:66"},"nativeSrc":"12335:12:66","nodeType":"YulExpressionStatement","src":"12335:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"12308:7:66","nodeType":"YulIdentifier","src":"12308:7:66"},{"name":"headStart","nativeSrc":"12317:9:66","nodeType":"YulIdentifier","src":"12317:9:66"}],"functionName":{"name":"sub","nativeSrc":"12304:3:66","nodeType":"YulIdentifier","src":"12304:3:66"},"nativeSrc":"12304:23:66","nodeType":"YulFunctionCall","src":"12304:23:66"},{"kind":"number","nativeSrc":"12329:2:66","nodeType":"YulLiteral","src":"12329:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"12300:3:66","nodeType":"YulIdentifier","src":"12300:3:66"},"nativeSrc":"12300:32:66","nodeType":"YulFunctionCall","src":"12300:32:66"},"nativeSrc":"12297:52:66","nodeType":"YulIf","src":"12297:52:66"},{"nativeSrc":"12358:37:66","nodeType":"YulVariableDeclaration","src":"12358:37:66","value":{"arguments":[{"name":"headStart","nativeSrc":"12385:9:66","nodeType":"YulIdentifier","src":"12385:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"12372:12:66","nodeType":"YulIdentifier","src":"12372:12:66"},"nativeSrc":"12372:23:66","nodeType":"YulFunctionCall","src":"12372:23:66"},"variables":[{"name":"offset","nativeSrc":"12362:6:66","nodeType":"YulTypedName","src":"12362:6:66","type":""}]},{"body":{"nativeSrc":"12438:16:66","nodeType":"YulBlock","src":"12438:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12447:1:66","nodeType":"YulLiteral","src":"12447:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"12450:1:66","nodeType":"YulLiteral","src":"12450:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12440:6:66","nodeType":"YulIdentifier","src":"12440:6:66"},"nativeSrc":"12440:12:66","nodeType":"YulFunctionCall","src":"12440:12:66"},"nativeSrc":"12440:12:66","nodeType":"YulExpressionStatement","src":"12440:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"12410:6:66","nodeType":"YulIdentifier","src":"12410:6:66"},{"kind":"number","nativeSrc":"12418:18:66","nodeType":"YulLiteral","src":"12418:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12407:2:66","nodeType":"YulIdentifier","src":"12407:2:66"},"nativeSrc":"12407:30:66","nodeType":"YulFunctionCall","src":"12407:30:66"},"nativeSrc":"12404:50:66","nodeType":"YulIf","src":"12404:50:66"},{"nativeSrc":"12463:124:66","nodeType":"YulVariableDeclaration","src":"12463:124:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12559:9:66","nodeType":"YulIdentifier","src":"12559:9:66"},{"name":"offset","nativeSrc":"12570:6:66","nodeType":"YulIdentifier","src":"12570:6:66"}],"functionName":{"name":"add","nativeSrc":"12555:3:66","nodeType":"YulIdentifier","src":"12555:3:66"},"nativeSrc":"12555:22:66","nodeType":"YulFunctionCall","src":"12555:22:66"},{"name":"dataEnd","nativeSrc":"12579:7:66","nodeType":"YulIdentifier","src":"12579:7:66"}],"functionName":{"name":"abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata","nativeSrc":"12489:65:66","nodeType":"YulIdentifier","src":"12489:65:66"},"nativeSrc":"12489:98:66","nodeType":"YulFunctionCall","src":"12489:98:66"},"variables":[{"name":"value0_1","nativeSrc":"12467:8:66","nodeType":"YulTypedName","src":"12467:8:66","type":""},{"name":"value1_1","nativeSrc":"12477:8:66","nodeType":"YulTypedName","src":"12477:8:66","type":""}]},{"nativeSrc":"12596:18:66","nodeType":"YulAssignment","src":"12596:18:66","value":{"name":"value0_1","nativeSrc":"12606:8:66","nodeType":"YulIdentifier","src":"12606:8:66"},"variableNames":[{"name":"value0","nativeSrc":"12596:6:66","nodeType":"YulIdentifier","src":"12596:6:66"}]},{"nativeSrc":"12623:18:66","nodeType":"YulAssignment","src":"12623:18:66","value":{"name":"value1_1","nativeSrc":"12633:8:66","nodeType":"YulIdentifier","src":"12633:8:66"},"variableNames":[{"name":"value1","nativeSrc":"12623:6:66","nodeType":"YulIdentifier","src":"12623:6:66"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr","nativeSrc":"12149:498:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12245:9:66","nodeType":"YulTypedName","src":"12245:9:66","type":""},{"name":"dataEnd","nativeSrc":"12256:7:66","nodeType":"YulTypedName","src":"12256:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"12268:6:66","nodeType":"YulTypedName","src":"12268:6:66","type":""},{"name":"value1","nativeSrc":"12276:6:66","nodeType":"YulTypedName","src":"12276:6:66","type":""}],"src":"12149:498:66"},{"body":{"nativeSrc":"12815:492:66","nodeType":"YulBlock","src":"12815:492:66","statements":[{"nativeSrc":"12825:33:66","nodeType":"YulVariableDeclaration","src":"12825:33:66","value":{"arguments":[{"name":"dataEnd","nativeSrc":"12839:7:66","nodeType":"YulIdentifier","src":"12839:7:66"},{"name":"headStart","nativeSrc":"12848:9:66","nodeType":"YulIdentifier","src":"12848:9:66"}],"functionName":{"name":"sub","nativeSrc":"12835:3:66","nodeType":"YulIdentifier","src":"12835:3:66"},"nativeSrc":"12835:23:66","nodeType":"YulFunctionCall","src":"12835:23:66"},"variables":[{"name":"_1","nativeSrc":"12829:2:66","nodeType":"YulTypedName","src":"12829:2:66","type":""}]},{"body":{"nativeSrc":"12883:16:66","nodeType":"YulBlock","src":"12883:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12892:1:66","nodeType":"YulLiteral","src":"12892:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"12895:1:66","nodeType":"YulLiteral","src":"12895:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12885:6:66","nodeType":"YulIdentifier","src":"12885:6:66"},"nativeSrc":"12885:12:66","nodeType":"YulFunctionCall","src":"12885:12:66"},"nativeSrc":"12885:12:66","nodeType":"YulExpressionStatement","src":"12885:12:66"}]},"condition":{"arguments":[{"name":"_1","nativeSrc":"12874:2:66","nodeType":"YulIdentifier","src":"12874:2:66"},{"kind":"number","nativeSrc":"12878:3:66","nodeType":"YulLiteral","src":"12878:3:66","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"12870:3:66","nodeType":"YulIdentifier","src":"12870:3:66"},"nativeSrc":"12870:12:66","nodeType":"YulFunctionCall","src":"12870:12:66"},"nativeSrc":"12867:32:66","nodeType":"YulIf","src":"12867:32:66"},{"nativeSrc":"12908:37:66","nodeType":"YulVariableDeclaration","src":"12908:37:66","value":{"arguments":[{"name":"headStart","nativeSrc":"12935:9:66","nodeType":"YulIdentifier","src":"12935:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"12922:12:66","nodeType":"YulIdentifier","src":"12922:12:66"},"nativeSrc":"12922:23:66","nodeType":"YulFunctionCall","src":"12922:23:66"},"variables":[{"name":"offset","nativeSrc":"12912:6:66","nodeType":"YulTypedName","src":"12912:6:66","type":""}]},{"body":{"nativeSrc":"12988:16:66","nodeType":"YulBlock","src":"12988:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12997:1:66","nodeType":"YulLiteral","src":"12997:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"13000:1:66","nodeType":"YulLiteral","src":"13000:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12990:6:66","nodeType":"YulIdentifier","src":"12990:6:66"},"nativeSrc":"12990:12:66","nodeType":"YulFunctionCall","src":"12990:12:66"},"nativeSrc":"12990:12:66","nodeType":"YulExpressionStatement","src":"12990:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"12960:6:66","nodeType":"YulIdentifier","src":"12960:6:66"},{"kind":"number","nativeSrc":"12968:18:66","nodeType":"YulLiteral","src":"12968:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12957:2:66","nodeType":"YulIdentifier","src":"12957:2:66"},"nativeSrc":"12957:30:66","nodeType":"YulFunctionCall","src":"12957:30:66"},"nativeSrc":"12954:50:66","nodeType":"YulIf","src":"12954:50:66"},{"nativeSrc":"13013:79:66","nodeType":"YulAssignment","src":"13013:79:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13064:9:66","nodeType":"YulIdentifier","src":"13064:9:66"},{"name":"offset","nativeSrc":"13075:6:66","nodeType":"YulIdentifier","src":"13075:6:66"}],"functionName":{"name":"add","nativeSrc":"13060:3:66","nodeType":"YulIdentifier","src":"13060:3:66"},"nativeSrc":"13060:22:66","nodeType":"YulFunctionCall","src":"13060:22:66"},{"name":"dataEnd","nativeSrc":"13084:7:66","nodeType":"YulIdentifier","src":"13084:7:66"}],"functionName":{"name":"abi_decode_struct_SendParam_calldata","nativeSrc":"13023:36:66","nodeType":"YulIdentifier","src":"13023:36:66"},"nativeSrc":"13023:69:66","nodeType":"YulFunctionCall","src":"13023:69:66"},"variableNames":[{"name":"value0","nativeSrc":"13013:6:66","nodeType":"YulIdentifier","src":"13013:6:66"}]},{"body":{"nativeSrc":"13130:16:66","nodeType":"YulBlock","src":"13130:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13139:1:66","nodeType":"YulLiteral","src":"13139:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"13142:1:66","nodeType":"YulLiteral","src":"13142:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13132:6:66","nodeType":"YulIdentifier","src":"13132:6:66"},"nativeSrc":"13132:12:66","nodeType":"YulFunctionCall","src":"13132:12:66"},"nativeSrc":"13132:12:66","nodeType":"YulExpressionStatement","src":"13132:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"13112:2:66","nodeType":"YulIdentifier","src":"13112:2:66"},{"arguments":[{"kind":"number","nativeSrc":"13120:2:66","nodeType":"YulLiteral","src":"13120:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"13116:3:66","nodeType":"YulIdentifier","src":"13116:3:66"},"nativeSrc":"13116:7:66","nodeType":"YulFunctionCall","src":"13116:7:66"}],"functionName":{"name":"add","nativeSrc":"13108:3:66","nodeType":"YulIdentifier","src":"13108:3:66"},"nativeSrc":"13108:16:66","nodeType":"YulFunctionCall","src":"13108:16:66"},{"kind":"number","nativeSrc":"13126:2:66","nodeType":"YulLiteral","src":"13126:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"13104:3:66","nodeType":"YulIdentifier","src":"13104:3:66"},"nativeSrc":"13104:25:66","nodeType":"YulFunctionCall","src":"13104:25:66"},"nativeSrc":"13101:45:66","nodeType":"YulIf","src":"13101:45:66"},{"nativeSrc":"13155:28:66","nodeType":"YulAssignment","src":"13155:28:66","value":{"arguments":[{"name":"headStart","nativeSrc":"13169:9:66","nodeType":"YulIdentifier","src":"13169:9:66"},{"kind":"number","nativeSrc":"13180:2:66","nodeType":"YulLiteral","src":"13180:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13165:3:66","nodeType":"YulIdentifier","src":"13165:3:66"},"nativeSrc":"13165:18:66","nodeType":"YulFunctionCall","src":"13165:18:66"},"variableNames":[{"name":"value1","nativeSrc":"13155:6:66","nodeType":"YulIdentifier","src":"13155:6:66"}]},{"nativeSrc":"13192:45:66","nodeType":"YulVariableDeclaration","src":"13192:45:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13222:9:66","nodeType":"YulIdentifier","src":"13222:9:66"},{"kind":"number","nativeSrc":"13233:2:66","nodeType":"YulLiteral","src":"13233:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"13218:3:66","nodeType":"YulIdentifier","src":"13218:3:66"},"nativeSrc":"13218:18:66","nodeType":"YulFunctionCall","src":"13218:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"13205:12:66","nodeType":"YulIdentifier","src":"13205:12:66"},"nativeSrc":"13205:32:66","nodeType":"YulFunctionCall","src":"13205:32:66"},"variables":[{"name":"value","nativeSrc":"13196:5:66","nodeType":"YulTypedName","src":"13196:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"13271:5:66","nodeType":"YulIdentifier","src":"13271:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"13246:24:66","nodeType":"YulIdentifier","src":"13246:24:66"},"nativeSrc":"13246:31:66","nodeType":"YulFunctionCall","src":"13246:31:66"},"nativeSrc":"13246:31:66","nodeType":"YulExpressionStatement","src":"13246:31:66"},{"nativeSrc":"13286:15:66","nodeType":"YulAssignment","src":"13286:15:66","value":{"name":"value","nativeSrc":"13296:5:66","nodeType":"YulIdentifier","src":"13296:5:66"},"variableNames":[{"name":"value2","nativeSrc":"13286:6:66","nodeType":"YulIdentifier","src":"13286:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_struct$_MessagingFee_$33_calldata_ptrt_address","nativeSrc":"12652:655:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12765:9:66","nodeType":"YulTypedName","src":"12765:9:66","type":""},{"name":"dataEnd","nativeSrc":"12776:7:66","nodeType":"YulTypedName","src":"12776:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"12788:6:66","nodeType":"YulTypedName","src":"12788:6:66","type":""},{"name":"value1","nativeSrc":"12796:6:66","nodeType":"YulTypedName","src":"12796:6:66","type":""},{"name":"value2","nativeSrc":"12804:6:66","nodeType":"YulTypedName","src":"12804:6:66","type":""}],"src":"12652:655:66"},{"body":{"nativeSrc":"13561:360:66","nodeType":"YulBlock","src":"13561:360:66","statements":[{"nativeSrc":"13571:27:66","nodeType":"YulAssignment","src":"13571:27:66","value":{"arguments":[{"name":"headStart","nativeSrc":"13583:9:66","nodeType":"YulIdentifier","src":"13583:9:66"},{"kind":"number","nativeSrc":"13594:3:66","nodeType":"YulLiteral","src":"13594:3:66","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"13579:3:66","nodeType":"YulIdentifier","src":"13579:3:66"},"nativeSrc":"13579:19:66","nodeType":"YulFunctionCall","src":"13579:19:66"},"variableNames":[{"name":"tail","nativeSrc":"13571:4:66","nodeType":"YulIdentifier","src":"13571:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13614:9:66","nodeType":"YulIdentifier","src":"13614:9:66"},{"arguments":[{"name":"value0","nativeSrc":"13631:6:66","nodeType":"YulIdentifier","src":"13631:6:66"}],"functionName":{"name":"mload","nativeSrc":"13625:5:66","nodeType":"YulIdentifier","src":"13625:5:66"},"nativeSrc":"13625:13:66","nodeType":"YulFunctionCall","src":"13625:13:66"}],"functionName":{"name":"mstore","nativeSrc":"13607:6:66","nodeType":"YulIdentifier","src":"13607:6:66"},"nativeSrc":"13607:32:66","nodeType":"YulFunctionCall","src":"13607:32:66"},"nativeSrc":"13607:32:66","nodeType":"YulExpressionStatement","src":"13607:32:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13659:9:66","nodeType":"YulIdentifier","src":"13659:9:66"},{"kind":"number","nativeSrc":"13670:4:66","nodeType":"YulLiteral","src":"13670:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13655:3:66","nodeType":"YulIdentifier","src":"13655:3:66"},"nativeSrc":"13655:20:66","nodeType":"YulFunctionCall","src":"13655:20:66"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"13691:6:66","nodeType":"YulIdentifier","src":"13691:6:66"},{"kind":"number","nativeSrc":"13699:4:66","nodeType":"YulLiteral","src":"13699:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13687:3:66","nodeType":"YulIdentifier","src":"13687:3:66"},"nativeSrc":"13687:17:66","nodeType":"YulFunctionCall","src":"13687:17:66"}],"functionName":{"name":"mload","nativeSrc":"13681:5:66","nodeType":"YulIdentifier","src":"13681:5:66"},"nativeSrc":"13681:24:66","nodeType":"YulFunctionCall","src":"13681:24:66"},{"kind":"number","nativeSrc":"13707:18:66","nodeType":"YulLiteral","src":"13707:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"13677:3:66","nodeType":"YulIdentifier","src":"13677:3:66"},"nativeSrc":"13677:49:66","nodeType":"YulFunctionCall","src":"13677:49:66"}],"functionName":{"name":"mstore","nativeSrc":"13648:6:66","nodeType":"YulIdentifier","src":"13648:6:66"},"nativeSrc":"13648:79:66","nodeType":"YulFunctionCall","src":"13648:79:66"},"nativeSrc":"13648:79:66","nodeType":"YulExpressionStatement","src":"13648:79:66"},{"nativeSrc":"13736:44:66","nodeType":"YulVariableDeclaration","src":"13736:44:66","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"13766:6:66","nodeType":"YulIdentifier","src":"13766:6:66"},{"kind":"number","nativeSrc":"13774:4:66","nodeType":"YulLiteral","src":"13774:4:66","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"13762:3:66","nodeType":"YulIdentifier","src":"13762:3:66"},"nativeSrc":"13762:17:66","nodeType":"YulFunctionCall","src":"13762:17:66"}],"functionName":{"name":"mload","nativeSrc":"13756:5:66","nodeType":"YulIdentifier","src":"13756:5:66"},"nativeSrc":"13756:24:66","nodeType":"YulFunctionCall","src":"13756:24:66"},"variables":[{"name":"memberValue0","nativeSrc":"13740:12:66","nodeType":"YulTypedName","src":"13740:12:66","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nativeSrc":"13816:12:66","nodeType":"YulIdentifier","src":"13816:12:66"},{"arguments":[{"name":"headStart","nativeSrc":"13834:9:66","nodeType":"YulIdentifier","src":"13834:9:66"},{"kind":"number","nativeSrc":"13845:4:66","nodeType":"YulLiteral","src":"13845:4:66","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"13830:3:66","nodeType":"YulIdentifier","src":"13830:3:66"},"nativeSrc":"13830:20:66","nodeType":"YulFunctionCall","src":"13830:20:66"}],"functionName":{"name":"abi_encode_struct_OFTLimit","nativeSrc":"13789:26:66","nodeType":"YulIdentifier","src":"13789:26:66"},"nativeSrc":"13789:62:66","nodeType":"YulFunctionCall","src":"13789:62:66"},"nativeSrc":"13789:62:66","nodeType":"YulExpressionStatement","src":"13789:62:66"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"13887:6:66","nodeType":"YulIdentifier","src":"13887:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"13899:9:66","nodeType":"YulIdentifier","src":"13899:9:66"},{"kind":"number","nativeSrc":"13910:3:66","nodeType":"YulLiteral","src":"13910:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"13895:3:66","nodeType":"YulIdentifier","src":"13895:3:66"},"nativeSrc":"13895:19:66","nodeType":"YulFunctionCall","src":"13895:19:66"}],"functionName":{"name":"abi_encode_struct_OFTLimit","nativeSrc":"13860:26:66","nodeType":"YulIdentifier","src":"13860:26:66"},"nativeSrc":"13860:55:66","nodeType":"YulFunctionCall","src":"13860:55:66"},"nativeSrc":"13860:55:66","nodeType":"YulExpressionStatement","src":"13860:55:66"}]},"name":"abi_encode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed","nativeSrc":"13312:609:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13522:9:66","nodeType":"YulTypedName","src":"13522:9:66","type":""},{"name":"value1","nativeSrc":"13533:6:66","nodeType":"YulTypedName","src":"13533:6:66","type":""},{"name":"value0","nativeSrc":"13541:6:66","nodeType":"YulTypedName","src":"13541:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13552:4:66","nodeType":"YulTypedName","src":"13552:4:66","type":""}],"src":"13312:609:66"},{"body":{"nativeSrc":"14013:301:66","nodeType":"YulBlock","src":"14013:301:66","statements":[{"body":{"nativeSrc":"14059:16:66","nodeType":"YulBlock","src":"14059:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14068:1:66","nodeType":"YulLiteral","src":"14068:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"14071:1:66","nodeType":"YulLiteral","src":"14071:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14061:6:66","nodeType":"YulIdentifier","src":"14061:6:66"},"nativeSrc":"14061:12:66","nodeType":"YulFunctionCall","src":"14061:12:66"},"nativeSrc":"14061:12:66","nodeType":"YulExpressionStatement","src":"14061:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14034:7:66","nodeType":"YulIdentifier","src":"14034:7:66"},{"name":"headStart","nativeSrc":"14043:9:66","nodeType":"YulIdentifier","src":"14043:9:66"}],"functionName":{"name":"sub","nativeSrc":"14030:3:66","nodeType":"YulIdentifier","src":"14030:3:66"},"nativeSrc":"14030:23:66","nodeType":"YulFunctionCall","src":"14030:23:66"},{"kind":"number","nativeSrc":"14055:2:66","nodeType":"YulLiteral","src":"14055:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"14026:3:66","nodeType":"YulIdentifier","src":"14026:3:66"},"nativeSrc":"14026:32:66","nodeType":"YulFunctionCall","src":"14026:32:66"},"nativeSrc":"14023:52:66","nodeType":"YulIf","src":"14023:52:66"},{"nativeSrc":"14084:36:66","nodeType":"YulVariableDeclaration","src":"14084:36:66","value":{"arguments":[{"name":"headStart","nativeSrc":"14110:9:66","nodeType":"YulIdentifier","src":"14110:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"14097:12:66","nodeType":"YulIdentifier","src":"14097:12:66"},"nativeSrc":"14097:23:66","nodeType":"YulFunctionCall","src":"14097:23:66"},"variables":[{"name":"value","nativeSrc":"14088:5:66","nodeType":"YulTypedName","src":"14088:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"14154:5:66","nodeType":"YulIdentifier","src":"14154:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"14129:24:66","nodeType":"YulIdentifier","src":"14129:24:66"},"nativeSrc":"14129:31:66","nodeType":"YulFunctionCall","src":"14129:31:66"},"nativeSrc":"14129:31:66","nodeType":"YulExpressionStatement","src":"14129:31:66"},{"nativeSrc":"14169:15:66","nodeType":"YulAssignment","src":"14169:15:66","value":{"name":"value","nativeSrc":"14179:5:66","nodeType":"YulIdentifier","src":"14179:5:66"},"variableNames":[{"name":"value0","nativeSrc":"14169:6:66","nodeType":"YulIdentifier","src":"14169:6:66"}]},{"nativeSrc":"14193:47:66","nodeType":"YulVariableDeclaration","src":"14193:47:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14225:9:66","nodeType":"YulIdentifier","src":"14225:9:66"},{"kind":"number","nativeSrc":"14236:2:66","nodeType":"YulLiteral","src":"14236:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14221:3:66","nodeType":"YulIdentifier","src":"14221:3:66"},"nativeSrc":"14221:18:66","nodeType":"YulFunctionCall","src":"14221:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"14208:12:66","nodeType":"YulIdentifier","src":"14208:12:66"},"nativeSrc":"14208:32:66","nodeType":"YulFunctionCall","src":"14208:32:66"},"variables":[{"name":"value_1","nativeSrc":"14197:7:66","nodeType":"YulTypedName","src":"14197:7:66","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"14274:7:66","nodeType":"YulIdentifier","src":"14274:7:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"14249:24:66","nodeType":"YulIdentifier","src":"14249:24:66"},"nativeSrc":"14249:33:66","nodeType":"YulFunctionCall","src":"14249:33:66"},"nativeSrc":"14249:33:66","nodeType":"YulExpressionStatement","src":"14249:33:66"},{"nativeSrc":"14291:17:66","nodeType":"YulAssignment","src":"14291:17:66","value":{"name":"value_1","nativeSrc":"14301:7:66","nodeType":"YulIdentifier","src":"14301:7:66"},"variableNames":[{"name":"value1","nativeSrc":"14291:6:66","nodeType":"YulIdentifier","src":"14291:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"13926:388:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13971:9:66","nodeType":"YulTypedName","src":"13971:9:66","type":""},{"name":"dataEnd","nativeSrc":"13982:7:66","nodeType":"YulTypedName","src":"13982:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13994:6:66","nodeType":"YulTypedName","src":"13994:6:66","type":""},{"name":"value1","nativeSrc":"14002:6:66","nodeType":"YulTypedName","src":"14002:6:66","type":""}],"src":"13926:388:66"},{"body":{"nativeSrc":"14413:140:66","nodeType":"YulBlock","src":"14413:140:66","statements":[{"body":{"nativeSrc":"14459:16:66","nodeType":"YulBlock","src":"14459:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14468:1:66","nodeType":"YulLiteral","src":"14468:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"14471:1:66","nodeType":"YulLiteral","src":"14471:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14461:6:66","nodeType":"YulIdentifier","src":"14461:6:66"},"nativeSrc":"14461:12:66","nodeType":"YulFunctionCall","src":"14461:12:66"},"nativeSrc":"14461:12:66","nodeType":"YulExpressionStatement","src":"14461:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14434:7:66","nodeType":"YulIdentifier","src":"14434:7:66"},{"name":"headStart","nativeSrc":"14443:9:66","nodeType":"YulIdentifier","src":"14443:9:66"}],"functionName":{"name":"sub","nativeSrc":"14430:3:66","nodeType":"YulIdentifier","src":"14430:3:66"},"nativeSrc":"14430:23:66","nodeType":"YulFunctionCall","src":"14430:23:66"},{"kind":"number","nativeSrc":"14455:2:66","nodeType":"YulLiteral","src":"14455:2:66","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"14426:3:66","nodeType":"YulIdentifier","src":"14426:3:66"},"nativeSrc":"14426:32:66","nodeType":"YulFunctionCall","src":"14426:32:66"},"nativeSrc":"14423:52:66","nodeType":"YulIf","src":"14423:52:66"},{"nativeSrc":"14484:63:66","nodeType":"YulAssignment","src":"14484:63:66","value":{"arguments":[{"name":"headStart","nativeSrc":"14528:9:66","nodeType":"YulIdentifier","src":"14528:9:66"},{"name":"dataEnd","nativeSrc":"14539:7:66","nodeType":"YulIdentifier","src":"14539:7:66"}],"functionName":{"name":"abi_decode_struct_Origin_calldata","nativeSrc":"14494:33:66","nodeType":"YulIdentifier","src":"14494:33:66"},"nativeSrc":"14494:53:66","nodeType":"YulFunctionCall","src":"14494:53:66"},"variableNames":[{"name":"value0","nativeSrc":"14484:6:66","nodeType":"YulIdentifier","src":"14484:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptr","nativeSrc":"14319:234:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14379:9:66","nodeType":"YulTypedName","src":"14379:9:66","type":""},{"name":"dataEnd","nativeSrc":"14390:7:66","nodeType":"YulTypedName","src":"14390:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"14402:6:66","nodeType":"YulTypedName","src":"14402:6:66","type":""}],"src":"14319:234:66"},{"body":{"nativeSrc":"14613:325:66","nodeType":"YulBlock","src":"14613:325:66","statements":[{"nativeSrc":"14623:22:66","nodeType":"YulAssignment","src":"14623:22:66","value":{"arguments":[{"kind":"number","nativeSrc":"14637:1:66","nodeType":"YulLiteral","src":"14637:1:66","type":"","value":"1"},{"name":"data","nativeSrc":"14640:4:66","nodeType":"YulIdentifier","src":"14640:4:66"}],"functionName":{"name":"shr","nativeSrc":"14633:3:66","nodeType":"YulIdentifier","src":"14633:3:66"},"nativeSrc":"14633:12:66","nodeType":"YulFunctionCall","src":"14633:12:66"},"variableNames":[{"name":"length","nativeSrc":"14623:6:66","nodeType":"YulIdentifier","src":"14623:6:66"}]},{"nativeSrc":"14654:38:66","nodeType":"YulVariableDeclaration","src":"14654:38:66","value":{"arguments":[{"name":"data","nativeSrc":"14684:4:66","nodeType":"YulIdentifier","src":"14684:4:66"},{"kind":"number","nativeSrc":"14690:1:66","nodeType":"YulLiteral","src":"14690:1:66","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"14680:3:66","nodeType":"YulIdentifier","src":"14680:3:66"},"nativeSrc":"14680:12:66","nodeType":"YulFunctionCall","src":"14680:12:66"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"14658:18:66","nodeType":"YulTypedName","src":"14658:18:66","type":""}]},{"body":{"nativeSrc":"14731:31:66","nodeType":"YulBlock","src":"14731:31:66","statements":[{"nativeSrc":"14733:27:66","nodeType":"YulAssignment","src":"14733:27:66","value":{"arguments":[{"name":"length","nativeSrc":"14747:6:66","nodeType":"YulIdentifier","src":"14747:6:66"},{"kind":"number","nativeSrc":"14755:4:66","nodeType":"YulLiteral","src":"14755:4:66","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"14743:3:66","nodeType":"YulIdentifier","src":"14743:3:66"},"nativeSrc":"14743:17:66","nodeType":"YulFunctionCall","src":"14743:17:66"},"variableNames":[{"name":"length","nativeSrc":"14733:6:66","nodeType":"YulIdentifier","src":"14733:6:66"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"14711:18:66","nodeType":"YulIdentifier","src":"14711:18:66"}],"functionName":{"name":"iszero","nativeSrc":"14704:6:66","nodeType":"YulIdentifier","src":"14704:6:66"},"nativeSrc":"14704:26:66","nodeType":"YulFunctionCall","src":"14704:26:66"},"nativeSrc":"14701:61:66","nodeType":"YulIf","src":"14701:61:66"},{"body":{"nativeSrc":"14821:111:66","nodeType":"YulBlock","src":"14821:111:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14842:1:66","nodeType":"YulLiteral","src":"14842:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"14849:3:66","nodeType":"YulLiteral","src":"14849:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"14854:10:66","nodeType":"YulLiteral","src":"14854:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"14845:3:66","nodeType":"YulIdentifier","src":"14845:3:66"},"nativeSrc":"14845:20:66","nodeType":"YulFunctionCall","src":"14845:20:66"}],"functionName":{"name":"mstore","nativeSrc":"14835:6:66","nodeType":"YulIdentifier","src":"14835:6:66"},"nativeSrc":"14835:31:66","nodeType":"YulFunctionCall","src":"14835:31:66"},"nativeSrc":"14835:31:66","nodeType":"YulExpressionStatement","src":"14835:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14886:1:66","nodeType":"YulLiteral","src":"14886:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"14889:4:66","nodeType":"YulLiteral","src":"14889:4:66","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"14879:6:66","nodeType":"YulIdentifier","src":"14879:6:66"},"nativeSrc":"14879:15:66","nodeType":"YulFunctionCall","src":"14879:15:66"},"nativeSrc":"14879:15:66","nodeType":"YulExpressionStatement","src":"14879:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14914:1:66","nodeType":"YulLiteral","src":"14914:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"14917:4:66","nodeType":"YulLiteral","src":"14917:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"14907:6:66","nodeType":"YulIdentifier","src":"14907:6:66"},"nativeSrc":"14907:15:66","nodeType":"YulFunctionCall","src":"14907:15:66"},"nativeSrc":"14907:15:66","nodeType":"YulExpressionStatement","src":"14907:15:66"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"14777:18:66","nodeType":"YulIdentifier","src":"14777:18:66"},{"arguments":[{"name":"length","nativeSrc":"14800:6:66","nodeType":"YulIdentifier","src":"14800:6:66"},{"kind":"number","nativeSrc":"14808:2:66","nodeType":"YulLiteral","src":"14808:2:66","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"14797:2:66","nodeType":"YulIdentifier","src":"14797:2:66"},"nativeSrc":"14797:14:66","nodeType":"YulFunctionCall","src":"14797:14:66"}],"functionName":{"name":"eq","nativeSrc":"14774:2:66","nodeType":"YulIdentifier","src":"14774:2:66"},"nativeSrc":"14774:38:66","nodeType":"YulFunctionCall","src":"14774:38:66"},"nativeSrc":"14771:161:66","nodeType":"YulIf","src":"14771:161:66"}]},"name":"extract_byte_array_length","nativeSrc":"14558:380:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"14593:4:66","nodeType":"YulTypedName","src":"14593:4:66","type":""}],"returnVariables":[{"name":"length","nativeSrc":"14602:6:66","nodeType":"YulTypedName","src":"14602:6:66","type":""}],"src":"14558:380:66"},{"body":{"nativeSrc":"15024:170:66","nodeType":"YulBlock","src":"15024:170:66","statements":[{"body":{"nativeSrc":"15070:16:66","nodeType":"YulBlock","src":"15070:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15079:1:66","nodeType":"YulLiteral","src":"15079:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"15082:1:66","nodeType":"YulLiteral","src":"15082:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15072:6:66","nodeType":"YulIdentifier","src":"15072:6:66"},"nativeSrc":"15072:12:66","nodeType":"YulFunctionCall","src":"15072:12:66"},"nativeSrc":"15072:12:66","nodeType":"YulExpressionStatement","src":"15072:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"15045:7:66","nodeType":"YulIdentifier","src":"15045:7:66"},{"name":"headStart","nativeSrc":"15054:9:66","nodeType":"YulIdentifier","src":"15054:9:66"}],"functionName":{"name":"sub","nativeSrc":"15041:3:66","nodeType":"YulIdentifier","src":"15041:3:66"},"nativeSrc":"15041:23:66","nodeType":"YulFunctionCall","src":"15041:23:66"},{"kind":"number","nativeSrc":"15066:2:66","nodeType":"YulLiteral","src":"15066:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"15037:3:66","nodeType":"YulIdentifier","src":"15037:3:66"},"nativeSrc":"15037:32:66","nodeType":"YulFunctionCall","src":"15037:32:66"},"nativeSrc":"15034:52:66","nodeType":"YulIf","src":"15034:52:66"},{"nativeSrc":"15095:29:66","nodeType":"YulVariableDeclaration","src":"15095:29:66","value":{"arguments":[{"name":"headStart","nativeSrc":"15114:9:66","nodeType":"YulIdentifier","src":"15114:9:66"}],"functionName":{"name":"mload","nativeSrc":"15108:5:66","nodeType":"YulIdentifier","src":"15108:5:66"},"nativeSrc":"15108:16:66","nodeType":"YulFunctionCall","src":"15108:16:66"},"variables":[{"name":"value","nativeSrc":"15099:5:66","nodeType":"YulTypedName","src":"15099:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"15158:5:66","nodeType":"YulIdentifier","src":"15158:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"15133:24:66","nodeType":"YulIdentifier","src":"15133:24:66"},"nativeSrc":"15133:31:66","nodeType":"YulFunctionCall","src":"15133:31:66"},"nativeSrc":"15133:31:66","nodeType":"YulExpressionStatement","src":"15133:31:66"},{"nativeSrc":"15173:15:66","nodeType":"YulAssignment","src":"15173:15:66","value":{"name":"value","nativeSrc":"15183:5:66","nodeType":"YulIdentifier","src":"15183:5:66"},"variableNames":[{"name":"value0","nativeSrc":"15173:6:66","nodeType":"YulIdentifier","src":"15173:6:66"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"14943:251:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14990:9:66","nodeType":"YulTypedName","src":"14990:9:66","type":""},{"name":"dataEnd","nativeSrc":"15001:7:66","nodeType":"YulTypedName","src":"15001:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"15013:6:66","nodeType":"YulTypedName","src":"15013:6:66","type":""}],"src":"14943:251:66"},{"body":{"nativeSrc":"15280:149:66","nodeType":"YulBlock","src":"15280:149:66","statements":[{"body":{"nativeSrc":"15326:16:66","nodeType":"YulBlock","src":"15326:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15335:1:66","nodeType":"YulLiteral","src":"15335:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"15338:1:66","nodeType":"YulLiteral","src":"15338:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15328:6:66","nodeType":"YulIdentifier","src":"15328:6:66"},"nativeSrc":"15328:12:66","nodeType":"YulFunctionCall","src":"15328:12:66"},"nativeSrc":"15328:12:66","nodeType":"YulExpressionStatement","src":"15328:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"15301:7:66","nodeType":"YulIdentifier","src":"15301:7:66"},{"name":"headStart","nativeSrc":"15310:9:66","nodeType":"YulIdentifier","src":"15310:9:66"}],"functionName":{"name":"sub","nativeSrc":"15297:3:66","nodeType":"YulIdentifier","src":"15297:3:66"},"nativeSrc":"15297:23:66","nodeType":"YulFunctionCall","src":"15297:23:66"},{"kind":"number","nativeSrc":"15322:2:66","nodeType":"YulLiteral","src":"15322:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"15293:3:66","nodeType":"YulIdentifier","src":"15293:3:66"},"nativeSrc":"15293:32:66","nodeType":"YulFunctionCall","src":"15293:32:66"},"nativeSrc":"15290:52:66","nodeType":"YulIf","src":"15290:52:66"},{"nativeSrc":"15351:14:66","nodeType":"YulVariableDeclaration","src":"15351:14:66","value":{"kind":"number","nativeSrc":"15364:1:66","nodeType":"YulLiteral","src":"15364:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"15355:5:66","nodeType":"YulTypedName","src":"15355:5:66","type":""}]},{"nativeSrc":"15374:25:66","nodeType":"YulAssignment","src":"15374:25:66","value":{"arguments":[{"name":"headStart","nativeSrc":"15389:9:66","nodeType":"YulIdentifier","src":"15389:9:66"}],"functionName":{"name":"mload","nativeSrc":"15383:5:66","nodeType":"YulIdentifier","src":"15383:5:66"},"nativeSrc":"15383:16:66","nodeType":"YulFunctionCall","src":"15383:16:66"},"variableNames":[{"name":"value","nativeSrc":"15374:5:66","nodeType":"YulIdentifier","src":"15374:5:66"}]},{"nativeSrc":"15408:15:66","nodeType":"YulAssignment","src":"15408:15:66","value":{"name":"value","nativeSrc":"15418:5:66","nodeType":"YulIdentifier","src":"15418:5:66"},"variableNames":[{"name":"value0","nativeSrc":"15408:6:66","nodeType":"YulIdentifier","src":"15408:6:66"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"15199:230:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15246:9:66","nodeType":"YulTypedName","src":"15246:9:66","type":""},{"name":"dataEnd","nativeSrc":"15257:7:66","nodeType":"YulTypedName","src":"15257:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"15269:6:66","nodeType":"YulTypedName","src":"15269:6:66","type":""}],"src":"15199:230:66"},{"body":{"nativeSrc":"15466:95:66","nodeType":"YulBlock","src":"15466:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15483:1:66","nodeType":"YulLiteral","src":"15483:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15490:3:66","nodeType":"YulLiteral","src":"15490:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"15495:10:66","nodeType":"YulLiteral","src":"15495:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15486:3:66","nodeType":"YulIdentifier","src":"15486:3:66"},"nativeSrc":"15486:20:66","nodeType":"YulFunctionCall","src":"15486:20:66"}],"functionName":{"name":"mstore","nativeSrc":"15476:6:66","nodeType":"YulIdentifier","src":"15476:6:66"},"nativeSrc":"15476:31:66","nodeType":"YulFunctionCall","src":"15476:31:66"},"nativeSrc":"15476:31:66","nodeType":"YulExpressionStatement","src":"15476:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15523:1:66","nodeType":"YulLiteral","src":"15523:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"15526:4:66","nodeType":"YulLiteral","src":"15526:4:66","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"15516:6:66","nodeType":"YulIdentifier","src":"15516:6:66"},"nativeSrc":"15516:15:66","nodeType":"YulFunctionCall","src":"15516:15:66"},"nativeSrc":"15516:15:66","nodeType":"YulExpressionStatement","src":"15516:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15547:1:66","nodeType":"YulLiteral","src":"15547:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"15550:4:66","nodeType":"YulLiteral","src":"15550:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15540:6:66","nodeType":"YulIdentifier","src":"15540:6:66"},"nativeSrc":"15540:15:66","nodeType":"YulFunctionCall","src":"15540:15:66"},"nativeSrc":"15540:15:66","nodeType":"YulExpressionStatement","src":"15540:15:66"}]},"name":"panic_error_0x41","nativeSrc":"15434:127:66","nodeType":"YulFunctionDefinition","src":"15434:127:66"},{"body":{"nativeSrc":"15693:136:66","nodeType":"YulBlock","src":"15693:136:66","statements":[{"nativeSrc":"15703:26:66","nodeType":"YulAssignment","src":"15703:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"15715:9:66","nodeType":"YulIdentifier","src":"15715:9:66"},{"kind":"number","nativeSrc":"15726:2:66","nodeType":"YulLiteral","src":"15726:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"15711:3:66","nodeType":"YulIdentifier","src":"15711:3:66"},"nativeSrc":"15711:18:66","nodeType":"YulFunctionCall","src":"15711:18:66"},"variableNames":[{"name":"tail","nativeSrc":"15703:4:66","nodeType":"YulIdentifier","src":"15703:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"15745:9:66","nodeType":"YulIdentifier","src":"15745:9:66"},{"arguments":[{"name":"value0","nativeSrc":"15760:6:66","nodeType":"YulIdentifier","src":"15760:6:66"},{"kind":"number","nativeSrc":"15768:10:66","nodeType":"YulLiteral","src":"15768:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"15756:3:66","nodeType":"YulIdentifier","src":"15756:3:66"},"nativeSrc":"15756:23:66","nodeType":"YulFunctionCall","src":"15756:23:66"}],"functionName":{"name":"mstore","nativeSrc":"15738:6:66","nodeType":"YulIdentifier","src":"15738:6:66"},"nativeSrc":"15738:42:66","nodeType":"YulFunctionCall","src":"15738:42:66"},"nativeSrc":"15738:42:66","nodeType":"YulExpressionStatement","src":"15738:42:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15800:9:66","nodeType":"YulIdentifier","src":"15800:9:66"},{"kind":"number","nativeSrc":"15811:2:66","nodeType":"YulLiteral","src":"15811:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15796:3:66","nodeType":"YulIdentifier","src":"15796:3:66"},"nativeSrc":"15796:18:66","nodeType":"YulFunctionCall","src":"15796:18:66"},{"name":"value1","nativeSrc":"15816:6:66","nodeType":"YulIdentifier","src":"15816:6:66"}],"functionName":{"name":"mstore","nativeSrc":"15789:6:66","nodeType":"YulIdentifier","src":"15789:6:66"},"nativeSrc":"15789:34:66","nodeType":"YulFunctionCall","src":"15789:34:66"},"nativeSrc":"15789:34:66","nodeType":"YulExpressionStatement","src":"15789:34:66"}]},"name":"abi_encode_tuple_t_uint32_t_bytes32__to_t_uint32_t_bytes32__fromStack_reversed","nativeSrc":"15566:263:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15654:9:66","nodeType":"YulTypedName","src":"15654:9:66","type":""},{"name":"value1","nativeSrc":"15665:6:66","nodeType":"YulTypedName","src":"15665:6:66","type":""},{"name":"value0","nativeSrc":"15673:6:66","nodeType":"YulTypedName","src":"15673:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"15684:4:66","nodeType":"YulTypedName","src":"15684:4:66","type":""}],"src":"15566:263:66"},{"body":{"nativeSrc":"15880:207:66","nodeType":"YulBlock","src":"15880:207:66","statements":[{"nativeSrc":"15890:19:66","nodeType":"YulAssignment","src":"15890:19:66","value":{"arguments":[{"kind":"number","nativeSrc":"15906:2:66","nodeType":"YulLiteral","src":"15906:2:66","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"15900:5:66","nodeType":"YulIdentifier","src":"15900:5:66"},"nativeSrc":"15900:9:66","nodeType":"YulFunctionCall","src":"15900:9:66"},"variableNames":[{"name":"memPtr","nativeSrc":"15890:6:66","nodeType":"YulIdentifier","src":"15890:6:66"}]},{"nativeSrc":"15918:35:66","nodeType":"YulVariableDeclaration","src":"15918:35:66","value":{"arguments":[{"name":"memPtr","nativeSrc":"15940:6:66","nodeType":"YulIdentifier","src":"15940:6:66"},{"kind":"number","nativeSrc":"15948:4:66","nodeType":"YulLiteral","src":"15948:4:66","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"15936:3:66","nodeType":"YulIdentifier","src":"15936:3:66"},"nativeSrc":"15936:17:66","nodeType":"YulFunctionCall","src":"15936:17:66"},"variables":[{"name":"newFreePtr","nativeSrc":"15922:10:66","nodeType":"YulTypedName","src":"15922:10:66","type":""}]},{"body":{"nativeSrc":"16028:22:66","nodeType":"YulBlock","src":"16028:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"16030:16:66","nodeType":"YulIdentifier","src":"16030:16:66"},"nativeSrc":"16030:18:66","nodeType":"YulFunctionCall","src":"16030:18:66"},"nativeSrc":"16030:18:66","nodeType":"YulExpressionStatement","src":"16030:18:66"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"15971:10:66","nodeType":"YulIdentifier","src":"15971:10:66"},{"kind":"number","nativeSrc":"15983:18:66","nodeType":"YulLiteral","src":"15983:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"15968:2:66","nodeType":"YulIdentifier","src":"15968:2:66"},"nativeSrc":"15968:34:66","nodeType":"YulFunctionCall","src":"15968:34:66"},{"arguments":[{"name":"newFreePtr","nativeSrc":"16007:10:66","nodeType":"YulIdentifier","src":"16007:10:66"},{"name":"memPtr","nativeSrc":"16019:6:66","nodeType":"YulIdentifier","src":"16019:6:66"}],"functionName":{"name":"lt","nativeSrc":"16004:2:66","nodeType":"YulIdentifier","src":"16004:2:66"},"nativeSrc":"16004:22:66","nodeType":"YulFunctionCall","src":"16004:22:66"}],"functionName":{"name":"or","nativeSrc":"15965:2:66","nodeType":"YulIdentifier","src":"15965:2:66"},"nativeSrc":"15965:62:66","nodeType":"YulFunctionCall","src":"15965:62:66"},"nativeSrc":"15962:88:66","nodeType":"YulIf","src":"15962:88:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16066:2:66","nodeType":"YulLiteral","src":"16066:2:66","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"16070:10:66","nodeType":"YulIdentifier","src":"16070:10:66"}],"functionName":{"name":"mstore","nativeSrc":"16059:6:66","nodeType":"YulIdentifier","src":"16059:6:66"},"nativeSrc":"16059:22:66","nodeType":"YulFunctionCall","src":"16059:22:66"},"nativeSrc":"16059:22:66","nodeType":"YulExpressionStatement","src":"16059:22:66"}]},"name":"allocate_memory_3873","nativeSrc":"15834:253:66","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"15869:6:66","nodeType":"YulTypedName","src":"15869:6:66","type":""}],"src":"15834:253:66"},{"body":{"nativeSrc":"16138:211:66","nodeType":"YulBlock","src":"16138:211:66","statements":[{"nativeSrc":"16148:21:66","nodeType":"YulAssignment","src":"16148:21:66","value":{"arguments":[{"kind":"number","nativeSrc":"16164:4:66","nodeType":"YulLiteral","src":"16164:4:66","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"16158:5:66","nodeType":"YulIdentifier","src":"16158:5:66"},"nativeSrc":"16158:11:66","nodeType":"YulFunctionCall","src":"16158:11:66"},"variableNames":[{"name":"memPtr","nativeSrc":"16148:6:66","nodeType":"YulIdentifier","src":"16148:6:66"}]},{"nativeSrc":"16178:35:66","nodeType":"YulVariableDeclaration","src":"16178:35:66","value":{"arguments":[{"name":"memPtr","nativeSrc":"16200:6:66","nodeType":"YulIdentifier","src":"16200:6:66"},{"kind":"number","nativeSrc":"16208:4:66","nodeType":"YulLiteral","src":"16208:4:66","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"16196:3:66","nodeType":"YulIdentifier","src":"16196:3:66"},"nativeSrc":"16196:17:66","nodeType":"YulFunctionCall","src":"16196:17:66"},"variables":[{"name":"newFreePtr","nativeSrc":"16182:10:66","nodeType":"YulTypedName","src":"16182:10:66","type":""}]},{"body":{"nativeSrc":"16288:22:66","nodeType":"YulBlock","src":"16288:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"16290:16:66","nodeType":"YulIdentifier","src":"16290:16:66"},"nativeSrc":"16290:18:66","nodeType":"YulFunctionCall","src":"16290:18:66"},"nativeSrc":"16290:18:66","nodeType":"YulExpressionStatement","src":"16290:18:66"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"16231:10:66","nodeType":"YulIdentifier","src":"16231:10:66"},{"kind":"number","nativeSrc":"16243:18:66","nodeType":"YulLiteral","src":"16243:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"16228:2:66","nodeType":"YulIdentifier","src":"16228:2:66"},"nativeSrc":"16228:34:66","nodeType":"YulFunctionCall","src":"16228:34:66"},{"arguments":[{"name":"newFreePtr","nativeSrc":"16267:10:66","nodeType":"YulIdentifier","src":"16267:10:66"},{"name":"memPtr","nativeSrc":"16279:6:66","nodeType":"YulIdentifier","src":"16279:6:66"}],"functionName":{"name":"lt","nativeSrc":"16264:2:66","nodeType":"YulIdentifier","src":"16264:2:66"},"nativeSrc":"16264:22:66","nodeType":"YulFunctionCall","src":"16264:22:66"}],"functionName":{"name":"or","nativeSrc":"16225:2:66","nodeType":"YulIdentifier","src":"16225:2:66"},"nativeSrc":"16225:62:66","nodeType":"YulFunctionCall","src":"16225:62:66"},"nativeSrc":"16222:88:66","nodeType":"YulIf","src":"16222:88:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16326:4:66","nodeType":"YulLiteral","src":"16326:4:66","type":"","value":"0x40"},{"name":"newFreePtr","nativeSrc":"16332:10:66","nodeType":"YulIdentifier","src":"16332:10:66"}],"functionName":{"name":"mstore","nativeSrc":"16319:6:66","nodeType":"YulIdentifier","src":"16319:6:66"},"nativeSrc":"16319:24:66","nodeType":"YulFunctionCall","src":"16319:24:66"},"nativeSrc":"16319:24:66","nodeType":"YulExpressionStatement","src":"16319:24:66"}]},"name":"allocate_memory_3874","nativeSrc":"16092:257:66","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"16127:6:66","nodeType":"YulTypedName","src":"16127:6:66","type":""}],"src":"16092:257:66"},{"body":{"nativeSrc":"16399:230:66","nodeType":"YulBlock","src":"16399:230:66","statements":[{"nativeSrc":"16409:19:66","nodeType":"YulAssignment","src":"16409:19:66","value":{"arguments":[{"kind":"number","nativeSrc":"16425:2:66","nodeType":"YulLiteral","src":"16425:2:66","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"16419:5:66","nodeType":"YulIdentifier","src":"16419:5:66"},"nativeSrc":"16419:9:66","nodeType":"YulFunctionCall","src":"16419:9:66"},"variableNames":[{"name":"memPtr","nativeSrc":"16409:6:66","nodeType":"YulIdentifier","src":"16409:6:66"}]},{"nativeSrc":"16437:58:66","nodeType":"YulVariableDeclaration","src":"16437:58:66","value":{"arguments":[{"name":"memPtr","nativeSrc":"16459:6:66","nodeType":"YulIdentifier","src":"16459:6:66"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"16475:4:66","nodeType":"YulIdentifier","src":"16475:4:66"},{"kind":"number","nativeSrc":"16481:2:66","nodeType":"YulLiteral","src":"16481:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"16471:3:66","nodeType":"YulIdentifier","src":"16471:3:66"},"nativeSrc":"16471:13:66","nodeType":"YulFunctionCall","src":"16471:13:66"},{"arguments":[{"kind":"number","nativeSrc":"16490:2:66","nodeType":"YulLiteral","src":"16490:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"16486:3:66","nodeType":"YulIdentifier","src":"16486:3:66"},"nativeSrc":"16486:7:66","nodeType":"YulFunctionCall","src":"16486:7:66"}],"functionName":{"name":"and","nativeSrc":"16467:3:66","nodeType":"YulIdentifier","src":"16467:3:66"},"nativeSrc":"16467:27:66","nodeType":"YulFunctionCall","src":"16467:27:66"}],"functionName":{"name":"add","nativeSrc":"16455:3:66","nodeType":"YulIdentifier","src":"16455:3:66"},"nativeSrc":"16455:40:66","nodeType":"YulFunctionCall","src":"16455:40:66"},"variables":[{"name":"newFreePtr","nativeSrc":"16441:10:66","nodeType":"YulTypedName","src":"16441:10:66","type":""}]},{"body":{"nativeSrc":"16570:22:66","nodeType":"YulBlock","src":"16570:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"16572:16:66","nodeType":"YulIdentifier","src":"16572:16:66"},"nativeSrc":"16572:18:66","nodeType":"YulFunctionCall","src":"16572:18:66"},"nativeSrc":"16572:18:66","nodeType":"YulExpressionStatement","src":"16572:18:66"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"16513:10:66","nodeType":"YulIdentifier","src":"16513:10:66"},{"kind":"number","nativeSrc":"16525:18:66","nodeType":"YulLiteral","src":"16525:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"16510:2:66","nodeType":"YulIdentifier","src":"16510:2:66"},"nativeSrc":"16510:34:66","nodeType":"YulFunctionCall","src":"16510:34:66"},{"arguments":[{"name":"newFreePtr","nativeSrc":"16549:10:66","nodeType":"YulIdentifier","src":"16549:10:66"},{"name":"memPtr","nativeSrc":"16561:6:66","nodeType":"YulIdentifier","src":"16561:6:66"}],"functionName":{"name":"lt","nativeSrc":"16546:2:66","nodeType":"YulIdentifier","src":"16546:2:66"},"nativeSrc":"16546:22:66","nodeType":"YulFunctionCall","src":"16546:22:66"}],"functionName":{"name":"or","nativeSrc":"16507:2:66","nodeType":"YulIdentifier","src":"16507:2:66"},"nativeSrc":"16507:62:66","nodeType":"YulFunctionCall","src":"16507:62:66"},"nativeSrc":"16504:88:66","nodeType":"YulIf","src":"16504:88:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16608:2:66","nodeType":"YulLiteral","src":"16608:2:66","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"16612:10:66","nodeType":"YulIdentifier","src":"16612:10:66"}],"functionName":{"name":"mstore","nativeSrc":"16601:6:66","nodeType":"YulIdentifier","src":"16601:6:66"},"nativeSrc":"16601:22:66","nodeType":"YulFunctionCall","src":"16601:22:66"},"nativeSrc":"16601:22:66","nodeType":"YulExpressionStatement","src":"16601:22:66"}]},"name":"allocate_memory","nativeSrc":"16354:275:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"16379:4:66","nodeType":"YulTypedName","src":"16379:4:66","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"16388:6:66","nodeType":"YulTypedName","src":"16388:6:66","type":""}],"src":"16354:275:66"},{"body":{"nativeSrc":"16691:129:66","nodeType":"YulBlock","src":"16691:129:66","statements":[{"body":{"nativeSrc":"16735:22:66","nodeType":"YulBlock","src":"16735:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"16737:16:66","nodeType":"YulIdentifier","src":"16737:16:66"},"nativeSrc":"16737:18:66","nodeType":"YulFunctionCall","src":"16737:18:66"},"nativeSrc":"16737:18:66","nodeType":"YulExpressionStatement","src":"16737:18:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"16707:6:66","nodeType":"YulIdentifier","src":"16707:6:66"},{"kind":"number","nativeSrc":"16715:18:66","nodeType":"YulLiteral","src":"16715:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"16704:2:66","nodeType":"YulIdentifier","src":"16704:2:66"},"nativeSrc":"16704:30:66","nodeType":"YulFunctionCall","src":"16704:30:66"},"nativeSrc":"16701:56:66","nodeType":"YulIf","src":"16701:56:66"},{"nativeSrc":"16766:48:66","nodeType":"YulAssignment","src":"16766:48:66","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"16786:6:66","nodeType":"YulIdentifier","src":"16786:6:66"},{"kind":"number","nativeSrc":"16794:2:66","nodeType":"YulLiteral","src":"16794:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"16782:3:66","nodeType":"YulIdentifier","src":"16782:3:66"},"nativeSrc":"16782:15:66","nodeType":"YulFunctionCall","src":"16782:15:66"},{"arguments":[{"kind":"number","nativeSrc":"16803:2:66","nodeType":"YulLiteral","src":"16803:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"16799:3:66","nodeType":"YulIdentifier","src":"16799:3:66"},"nativeSrc":"16799:7:66","nodeType":"YulFunctionCall","src":"16799:7:66"}],"functionName":{"name":"and","nativeSrc":"16778:3:66","nodeType":"YulIdentifier","src":"16778:3:66"},"nativeSrc":"16778:29:66","nodeType":"YulFunctionCall","src":"16778:29:66"},{"kind":"number","nativeSrc":"16809:4:66","nodeType":"YulLiteral","src":"16809:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"16774:3:66","nodeType":"YulIdentifier","src":"16774:3:66"},"nativeSrc":"16774:40:66","nodeType":"YulFunctionCall","src":"16774:40:66"},"variableNames":[{"name":"size","nativeSrc":"16766:4:66","nodeType":"YulIdentifier","src":"16766:4:66"}]}]},"name":"array_allocation_size_bytes","nativeSrc":"16634:186:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"16671:6:66","nodeType":"YulTypedName","src":"16671:6:66","type":""}],"returnVariables":[{"name":"size","nativeSrc":"16682:4:66","nodeType":"YulTypedName","src":"16682:4:66","type":""}],"src":"16634:186:66"},{"body":{"nativeSrc":"17031:1578:66","nodeType":"YulBlock","src":"17031:1578:66","statements":[{"body":{"nativeSrc":"17075:22:66","nodeType":"YulBlock","src":"17075:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"17077:16:66","nodeType":"YulIdentifier","src":"17077:16:66"},"nativeSrc":"17077:18:66","nodeType":"YulFunctionCall","src":"17077:18:66"},"nativeSrc":"17077:18:66","nodeType":"YulExpressionStatement","src":"17077:18:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"17047:6:66","nodeType":"YulIdentifier","src":"17047:6:66"},{"kind":"number","nativeSrc":"17055:18:66","nodeType":"YulLiteral","src":"17055:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"17044:2:66","nodeType":"YulIdentifier","src":"17044:2:66"},"nativeSrc":"17044:30:66","nodeType":"YulFunctionCall","src":"17044:30:66"},"nativeSrc":"17041:56:66","nodeType":"YulIf","src":"17041:56:66"},{"nativeSrc":"17106:24:66","nodeType":"YulVariableDeclaration","src":"17106:24:66","value":{"arguments":[{"kind":"number","nativeSrc":"17120:1:66","nodeType":"YulLiteral","src":"17120:1:66","type":"","value":"5"},{"name":"length","nativeSrc":"17123:6:66","nodeType":"YulIdentifier","src":"17123:6:66"}],"functionName":{"name":"shl","nativeSrc":"17116:3:66","nodeType":"YulIdentifier","src":"17116:3:66"},"nativeSrc":"17116:14:66","nodeType":"YulFunctionCall","src":"17116:14:66"},"variables":[{"name":"_1","nativeSrc":"17110:2:66","nodeType":"YulTypedName","src":"17110:2:66","type":""}]},{"nativeSrc":"17139:41:66","nodeType":"YulVariableDeclaration","src":"17139:41:66","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"17170:2:66","nodeType":"YulIdentifier","src":"17170:2:66"},{"kind":"number","nativeSrc":"17174:4:66","nodeType":"YulLiteral","src":"17174:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17166:3:66","nodeType":"YulIdentifier","src":"17166:3:66"},"nativeSrc":"17166:13:66","nodeType":"YulFunctionCall","src":"17166:13:66"}],"functionName":{"name":"allocate_memory","nativeSrc":"17150:15:66","nodeType":"YulIdentifier","src":"17150:15:66"},"nativeSrc":"17150:30:66","nodeType":"YulFunctionCall","src":"17150:30:66"},"variables":[{"name":"dst","nativeSrc":"17143:3:66","nodeType":"YulTypedName","src":"17143:3:66","type":""}]},{"nativeSrc":"17189:16:66","nodeType":"YulVariableDeclaration","src":"17189:16:66","value":{"name":"dst","nativeSrc":"17202:3:66","nodeType":"YulIdentifier","src":"17202:3:66"},"variables":[{"name":"array","nativeSrc":"17193:5:66","nodeType":"YulTypedName","src":"17193:5:66","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"17221:3:66","nodeType":"YulIdentifier","src":"17221:3:66"},{"name":"length","nativeSrc":"17226:6:66","nodeType":"YulIdentifier","src":"17226:6:66"}],"functionName":{"name":"mstore","nativeSrc":"17214:6:66","nodeType":"YulIdentifier","src":"17214:6:66"},"nativeSrc":"17214:19:66","nodeType":"YulFunctionCall","src":"17214:19:66"},"nativeSrc":"17214:19:66","nodeType":"YulExpressionStatement","src":"17214:19:66"},{"nativeSrc":"17242:21:66","nodeType":"YulAssignment","src":"17242:21:66","value":{"arguments":[{"name":"dst","nativeSrc":"17253:3:66","nodeType":"YulIdentifier","src":"17253:3:66"},{"kind":"number","nativeSrc":"17258:4:66","nodeType":"YulLiteral","src":"17258:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17249:3:66","nodeType":"YulIdentifier","src":"17249:3:66"},"nativeSrc":"17249:14:66","nodeType":"YulFunctionCall","src":"17249:14:66"},"variableNames":[{"name":"dst","nativeSrc":"17242:3:66","nodeType":"YulIdentifier","src":"17242:3:66"}]},{"nativeSrc":"17272:28:66","nodeType":"YulVariableDeclaration","src":"17272:28:66","value":{"arguments":[{"name":"value","nativeSrc":"17290:5:66","nodeType":"YulIdentifier","src":"17290:5:66"},{"name":"_1","nativeSrc":"17297:2:66","nodeType":"YulIdentifier","src":"17297:2:66"}],"functionName":{"name":"add","nativeSrc":"17286:3:66","nodeType":"YulIdentifier","src":"17286:3:66"},"nativeSrc":"17286:14:66","nodeType":"YulFunctionCall","src":"17286:14:66"},"variables":[{"name":"srcEnd","nativeSrc":"17276:6:66","nodeType":"YulTypedName","src":"17276:6:66","type":""}]},{"body":{"nativeSrc":"17339:16:66","nodeType":"YulBlock","src":"17339:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17348:1:66","nodeType":"YulLiteral","src":"17348:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"17351:1:66","nodeType":"YulLiteral","src":"17351:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"17341:6:66","nodeType":"YulIdentifier","src":"17341:6:66"},"nativeSrc":"17341:12:66","nodeType":"YulFunctionCall","src":"17341:12:66"},"nativeSrc":"17341:12:66","nodeType":"YulExpressionStatement","src":"17341:12:66"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"17315:6:66","nodeType":"YulIdentifier","src":"17315:6:66"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"17323:12:66","nodeType":"YulIdentifier","src":"17323:12:66"},"nativeSrc":"17323:14:66","nodeType":"YulFunctionCall","src":"17323:14:66"}],"functionName":{"name":"gt","nativeSrc":"17312:2:66","nodeType":"YulIdentifier","src":"17312:2:66"},"nativeSrc":"17312:26:66","nodeType":"YulFunctionCall","src":"17312:26:66"},"nativeSrc":"17309:46:66","nodeType":"YulIf","src":"17309:46:66"},{"nativeSrc":"17364:16:66","nodeType":"YulVariableDeclaration","src":"17364:16:66","value":{"name":"value","nativeSrc":"17375:5:66","nodeType":"YulIdentifier","src":"17375:5:66"},"variables":[{"name":"src","nativeSrc":"17368:3:66","nodeType":"YulTypedName","src":"17368:3:66","type":""}]},{"body":{"nativeSrc":"17447:1129:66","nodeType":"YulBlock","src":"17447:1129:66","statements":[{"nativeSrc":"17461:36:66","nodeType":"YulVariableDeclaration","src":"17461:36:66","value":{"arguments":[{"name":"src","nativeSrc":"17493:3:66","nodeType":"YulIdentifier","src":"17493:3:66"}],"functionName":{"name":"calldataload","nativeSrc":"17480:12:66","nodeType":"YulIdentifier","src":"17480:12:66"},"nativeSrc":"17480:17:66","nodeType":"YulFunctionCall","src":"17480:17:66"},"variables":[{"name":"innerOffset","nativeSrc":"17465:11:66","nodeType":"YulTypedName","src":"17465:11:66","type":""}]},{"body":{"nativeSrc":"17549:16:66","nodeType":"YulBlock","src":"17549:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17558:1:66","nodeType":"YulLiteral","src":"17558:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"17561:1:66","nodeType":"YulLiteral","src":"17561:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"17551:6:66","nodeType":"YulIdentifier","src":"17551:6:66"},"nativeSrc":"17551:12:66","nodeType":"YulFunctionCall","src":"17551:12:66"},"nativeSrc":"17551:12:66","nodeType":"YulExpressionStatement","src":"17551:12:66"}]},"condition":{"arguments":[{"name":"innerOffset","nativeSrc":"17516:11:66","nodeType":"YulIdentifier","src":"17516:11:66"},{"kind":"number","nativeSrc":"17529:18:66","nodeType":"YulLiteral","src":"17529:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"17513:2:66","nodeType":"YulIdentifier","src":"17513:2:66"},"nativeSrc":"17513:35:66","nodeType":"YulFunctionCall","src":"17513:35:66"},"nativeSrc":"17510:55:66","nodeType":"YulIf","src":"17510:55:66"},{"nativeSrc":"17578:33:66","nodeType":"YulVariableDeclaration","src":"17578:33:66","value":{"arguments":[{"name":"value","nativeSrc":"17592:5:66","nodeType":"YulIdentifier","src":"17592:5:66"},{"name":"innerOffset","nativeSrc":"17599:11:66","nodeType":"YulIdentifier","src":"17599:11:66"}],"functionName":{"name":"add","nativeSrc":"17588:3:66","nodeType":"YulIdentifier","src":"17588:3:66"},"nativeSrc":"17588:23:66","nodeType":"YulFunctionCall","src":"17588:23:66"},"variables":[{"name":"_2","nativeSrc":"17582:2:66","nodeType":"YulTypedName","src":"17582:2:66","type":""}]},{"body":{"nativeSrc":"17662:16:66","nodeType":"YulBlock","src":"17662:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17671:1:66","nodeType":"YulLiteral","src":"17671:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"17674:1:66","nodeType":"YulLiteral","src":"17674:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"17664:6:66","nodeType":"YulIdentifier","src":"17664:6:66"},"nativeSrc":"17664:12:66","nodeType":"YulFunctionCall","src":"17664:12:66"},"nativeSrc":"17664:12:66","nodeType":"YulExpressionStatement","src":"17664:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"17635:12:66","nodeType":"YulIdentifier","src":"17635:12:66"},"nativeSrc":"17635:14:66","nodeType":"YulFunctionCall","src":"17635:14:66"},{"name":"_2","nativeSrc":"17651:2:66","nodeType":"YulIdentifier","src":"17651:2:66"}],"functionName":{"name":"sub","nativeSrc":"17631:3:66","nodeType":"YulIdentifier","src":"17631:3:66"},"nativeSrc":"17631:23:66","nodeType":"YulFunctionCall","src":"17631:23:66"},{"kind":"number","nativeSrc":"17656:4:66","nodeType":"YulLiteral","src":"17656:4:66","type":"","value":"0x60"}],"functionName":{"name":"slt","nativeSrc":"17627:3:66","nodeType":"YulIdentifier","src":"17627:3:66"},"nativeSrc":"17627:34:66","nodeType":"YulFunctionCall","src":"17627:34:66"},"nativeSrc":"17624:54:66","nodeType":"YulIf","src":"17624:54:66"},{"nativeSrc":"17691:37:66","nodeType":"YulVariableDeclaration","src":"17691:37:66","value":{"arguments":[],"functionName":{"name":"allocate_memory_3873","nativeSrc":"17706:20:66","nodeType":"YulIdentifier","src":"17706:20:66"},"nativeSrc":"17706:22:66","nodeType":"YulFunctionCall","src":"17706:22:66"},"variables":[{"name":"value_1","nativeSrc":"17695:7:66","nodeType":"YulTypedName","src":"17695:7:66","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"17748:7:66","nodeType":"YulIdentifier","src":"17748:7:66"},{"arguments":[{"name":"_2","nativeSrc":"17775:2:66","nodeType":"YulIdentifier","src":"17775:2:66"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"17757:17:66","nodeType":"YulIdentifier","src":"17757:17:66"},"nativeSrc":"17757:21:66","nodeType":"YulFunctionCall","src":"17757:21:66"}],"functionName":{"name":"mstore","nativeSrc":"17741:6:66","nodeType":"YulIdentifier","src":"17741:6:66"},"nativeSrc":"17741:38:66","nodeType":"YulFunctionCall","src":"17741:38:66"},"nativeSrc":"17741:38:66","nodeType":"YulExpressionStatement","src":"17741:38:66"},{"expression":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"17803:7:66","nodeType":"YulIdentifier","src":"17803:7:66"},{"kind":"number","nativeSrc":"17812:4:66","nodeType":"YulLiteral","src":"17812:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17799:3:66","nodeType":"YulIdentifier","src":"17799:3:66"},"nativeSrc":"17799:18:66","nodeType":"YulFunctionCall","src":"17799:18:66"},{"arguments":[{"arguments":[{"name":"_2","nativeSrc":"17841:2:66","nodeType":"YulIdentifier","src":"17841:2:66"},{"kind":"number","nativeSrc":"17845:4:66","nodeType":"YulLiteral","src":"17845:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17837:3:66","nodeType":"YulIdentifier","src":"17837:3:66"},"nativeSrc":"17837:13:66","nodeType":"YulFunctionCall","src":"17837:13:66"}],"functionName":{"name":"abi_decode_uint16","nativeSrc":"17819:17:66","nodeType":"YulIdentifier","src":"17819:17:66"},"nativeSrc":"17819:32:66","nodeType":"YulFunctionCall","src":"17819:32:66"}],"functionName":{"name":"mstore","nativeSrc":"17792:6:66","nodeType":"YulIdentifier","src":"17792:6:66"},"nativeSrc":"17792:60:66","nodeType":"YulFunctionCall","src":"17792:60:66"},"nativeSrc":"17792:60:66","nodeType":"YulExpressionStatement","src":"17792:60:66"},{"nativeSrc":"17865:39:66","nodeType":"YulVariableDeclaration","src":"17865:39:66","value":{"arguments":[{"arguments":[{"name":"_2","nativeSrc":"17896:2:66","nodeType":"YulIdentifier","src":"17896:2:66"},{"kind":"number","nativeSrc":"17900:2:66","nodeType":"YulLiteral","src":"17900:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"17892:3:66","nodeType":"YulIdentifier","src":"17892:3:66"},"nativeSrc":"17892:11:66","nodeType":"YulFunctionCall","src":"17892:11:66"}],"functionName":{"name":"calldataload","nativeSrc":"17879:12:66","nodeType":"YulIdentifier","src":"17879:12:66"},"nativeSrc":"17879:25:66","nodeType":"YulFunctionCall","src":"17879:25:66"},"variables":[{"name":"offset","nativeSrc":"17869:6:66","nodeType":"YulTypedName","src":"17869:6:66","type":""}]},{"body":{"nativeSrc":"17951:16:66","nodeType":"YulBlock","src":"17951:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17960:1:66","nodeType":"YulLiteral","src":"17960:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"17963:1:66","nodeType":"YulLiteral","src":"17963:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"17953:6:66","nodeType":"YulIdentifier","src":"17953:6:66"},"nativeSrc":"17953:12:66","nodeType":"YulFunctionCall","src":"17953:12:66"},"nativeSrc":"17953:12:66","nodeType":"YulExpressionStatement","src":"17953:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"17923:6:66","nodeType":"YulIdentifier","src":"17923:6:66"},{"kind":"number","nativeSrc":"17931:18:66","nodeType":"YulLiteral","src":"17931:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"17920:2:66","nodeType":"YulIdentifier","src":"17920:2:66"},"nativeSrc":"17920:30:66","nodeType":"YulFunctionCall","src":"17920:30:66"},"nativeSrc":"17917:50:66","nodeType":"YulIf","src":"17917:50:66"},{"nativeSrc":"17980:25:66","nodeType":"YulVariableDeclaration","src":"17980:25:66","value":{"arguments":[{"name":"_2","nativeSrc":"17994:2:66","nodeType":"YulIdentifier","src":"17994:2:66"},{"name":"offset","nativeSrc":"17998:6:66","nodeType":"YulIdentifier","src":"17998:6:66"}],"functionName":{"name":"add","nativeSrc":"17990:3:66","nodeType":"YulIdentifier","src":"17990:3:66"},"nativeSrc":"17990:15:66","nodeType":"YulFunctionCall","src":"17990:15:66"},"variables":[{"name":"_3","nativeSrc":"17984:2:66","nodeType":"YulTypedName","src":"17984:2:66","type":""}]},{"body":{"nativeSrc":"18064:16:66","nodeType":"YulBlock","src":"18064:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18073:1:66","nodeType":"YulLiteral","src":"18073:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"18076:1:66","nodeType":"YulLiteral","src":"18076:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"18066:6:66","nodeType":"YulIdentifier","src":"18066:6:66"},"nativeSrc":"18066:12:66","nodeType":"YulFunctionCall","src":"18066:12:66"},"nativeSrc":"18066:12:66","nodeType":"YulExpressionStatement","src":"18066:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nativeSrc":"18036:2:66","nodeType":"YulIdentifier","src":"18036:2:66"},{"kind":"number","nativeSrc":"18040:4:66","nodeType":"YulLiteral","src":"18040:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"18032:3:66","nodeType":"YulIdentifier","src":"18032:3:66"},"nativeSrc":"18032:13:66","nodeType":"YulFunctionCall","src":"18032:13:66"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"18047:12:66","nodeType":"YulIdentifier","src":"18047:12:66"},"nativeSrc":"18047:14:66","nodeType":"YulFunctionCall","src":"18047:14:66"}],"functionName":{"name":"slt","nativeSrc":"18028:3:66","nodeType":"YulIdentifier","src":"18028:3:66"},"nativeSrc":"18028:34:66","nodeType":"YulFunctionCall","src":"18028:34:66"}],"functionName":{"name":"iszero","nativeSrc":"18021:6:66","nodeType":"YulIdentifier","src":"18021:6:66"},"nativeSrc":"18021:42:66","nodeType":"YulFunctionCall","src":"18021:42:66"},"nativeSrc":"18018:62:66","nodeType":"YulIf","src":"18018:62:66"},{"nativeSrc":"18093:32:66","nodeType":"YulVariableDeclaration","src":"18093:32:66","value":{"arguments":[{"name":"_3","nativeSrc":"18122:2:66","nodeType":"YulIdentifier","src":"18122:2:66"}],"functionName":{"name":"calldataload","nativeSrc":"18109:12:66","nodeType":"YulIdentifier","src":"18109:12:66"},"nativeSrc":"18109:16:66","nodeType":"YulFunctionCall","src":"18109:16:66"},"variables":[{"name":"length_1","nativeSrc":"18097:8:66","nodeType":"YulTypedName","src":"18097:8:66","type":""}]},{"nativeSrc":"18138:69:66","nodeType":"YulVariableDeclaration","src":"18138:69:66","value":{"arguments":[{"arguments":[{"name":"length_1","nativeSrc":"18197:8:66","nodeType":"YulIdentifier","src":"18197:8:66"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"18169:27:66","nodeType":"YulIdentifier","src":"18169:27:66"},"nativeSrc":"18169:37:66","nodeType":"YulFunctionCall","src":"18169:37:66"}],"functionName":{"name":"allocate_memory","nativeSrc":"18153:15:66","nodeType":"YulIdentifier","src":"18153:15:66"},"nativeSrc":"18153:54:66","nodeType":"YulFunctionCall","src":"18153:54:66"},"variables":[{"name":"array_1","nativeSrc":"18142:7:66","nodeType":"YulTypedName","src":"18142:7:66","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"18227:7:66","nodeType":"YulIdentifier","src":"18227:7:66"},{"name":"length_1","nativeSrc":"18236:8:66","nodeType":"YulIdentifier","src":"18236:8:66"}],"functionName":{"name":"mstore","nativeSrc":"18220:6:66","nodeType":"YulIdentifier","src":"18220:6:66"},"nativeSrc":"18220:25:66","nodeType":"YulFunctionCall","src":"18220:25:66"},"nativeSrc":"18220:25:66","nodeType":"YulExpressionStatement","src":"18220:25:66"},{"body":{"nativeSrc":"18310:16:66","nodeType":"YulBlock","src":"18310:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18319:1:66","nodeType":"YulLiteral","src":"18319:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"18322:1:66","nodeType":"YulLiteral","src":"18322:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"18312:6:66","nodeType":"YulIdentifier","src":"18312:6:66"},"nativeSrc":"18312:12:66","nodeType":"YulFunctionCall","src":"18312:12:66"},"nativeSrc":"18312:12:66","nodeType":"YulExpressionStatement","src":"18312:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nativeSrc":"18272:2:66","nodeType":"YulIdentifier","src":"18272:2:66"},{"name":"length_1","nativeSrc":"18276:8:66","nodeType":"YulIdentifier","src":"18276:8:66"}],"functionName":{"name":"add","nativeSrc":"18268:3:66","nodeType":"YulIdentifier","src":"18268:3:66"},"nativeSrc":"18268:17:66","nodeType":"YulFunctionCall","src":"18268:17:66"},{"kind":"number","nativeSrc":"18287:4:66","nodeType":"YulLiteral","src":"18287:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18264:3:66","nodeType":"YulIdentifier","src":"18264:3:66"},"nativeSrc":"18264:28:66","nodeType":"YulFunctionCall","src":"18264:28:66"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"18294:12:66","nodeType":"YulIdentifier","src":"18294:12:66"},"nativeSrc":"18294:14:66","nodeType":"YulFunctionCall","src":"18294:14:66"}],"functionName":{"name":"gt","nativeSrc":"18261:2:66","nodeType":"YulIdentifier","src":"18261:2:66"},"nativeSrc":"18261:48:66","nodeType":"YulFunctionCall","src":"18261:48:66"},"nativeSrc":"18258:68:66","nodeType":"YulIf","src":"18258:68:66"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"18356:7:66","nodeType":"YulIdentifier","src":"18356:7:66"},{"kind":"number","nativeSrc":"18365:4:66","nodeType":"YulLiteral","src":"18365:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18352:3:66","nodeType":"YulIdentifier","src":"18352:3:66"},"nativeSrc":"18352:18:66","nodeType":"YulFunctionCall","src":"18352:18:66"},{"arguments":[{"name":"_3","nativeSrc":"18376:2:66","nodeType":"YulIdentifier","src":"18376:2:66"},{"kind":"number","nativeSrc":"18380:4:66","nodeType":"YulLiteral","src":"18380:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18372:3:66","nodeType":"YulIdentifier","src":"18372:3:66"},"nativeSrc":"18372:13:66","nodeType":"YulFunctionCall","src":"18372:13:66"},{"name":"length_1","nativeSrc":"18387:8:66","nodeType":"YulIdentifier","src":"18387:8:66"}],"functionName":{"name":"calldatacopy","nativeSrc":"18339:12:66","nodeType":"YulIdentifier","src":"18339:12:66"},"nativeSrc":"18339:57:66","nodeType":"YulFunctionCall","src":"18339:57:66"},"nativeSrc":"18339:57:66","nodeType":"YulExpressionStatement","src":"18339:57:66"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"18424:7:66","nodeType":"YulIdentifier","src":"18424:7:66"},{"name":"length_1","nativeSrc":"18433:8:66","nodeType":"YulIdentifier","src":"18433:8:66"}],"functionName":{"name":"add","nativeSrc":"18420:3:66","nodeType":"YulIdentifier","src":"18420:3:66"},"nativeSrc":"18420:22:66","nodeType":"YulFunctionCall","src":"18420:22:66"},{"kind":"number","nativeSrc":"18444:4:66","nodeType":"YulLiteral","src":"18444:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18416:3:66","nodeType":"YulIdentifier","src":"18416:3:66"},"nativeSrc":"18416:33:66","nodeType":"YulFunctionCall","src":"18416:33:66"},{"kind":"number","nativeSrc":"18451:1:66","nodeType":"YulLiteral","src":"18451:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"18409:6:66","nodeType":"YulIdentifier","src":"18409:6:66"},"nativeSrc":"18409:44:66","nodeType":"YulFunctionCall","src":"18409:44:66"},"nativeSrc":"18409:44:66","nodeType":"YulExpressionStatement","src":"18409:44:66"},{"expression":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"18477:7:66","nodeType":"YulIdentifier","src":"18477:7:66"},{"kind":"number","nativeSrc":"18486:2:66","nodeType":"YulLiteral","src":"18486:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18473:3:66","nodeType":"YulIdentifier","src":"18473:3:66"},"nativeSrc":"18473:16:66","nodeType":"YulFunctionCall","src":"18473:16:66"},{"name":"array_1","nativeSrc":"18491:7:66","nodeType":"YulIdentifier","src":"18491:7:66"}],"functionName":{"name":"mstore","nativeSrc":"18466:6:66","nodeType":"YulIdentifier","src":"18466:6:66"},"nativeSrc":"18466:33:66","nodeType":"YulFunctionCall","src":"18466:33:66"},"nativeSrc":"18466:33:66","nodeType":"YulExpressionStatement","src":"18466:33:66"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"18519:3:66","nodeType":"YulIdentifier","src":"18519:3:66"},{"name":"value_1","nativeSrc":"18524:7:66","nodeType":"YulIdentifier","src":"18524:7:66"}],"functionName":{"name":"mstore","nativeSrc":"18512:6:66","nodeType":"YulIdentifier","src":"18512:6:66"},"nativeSrc":"18512:20:66","nodeType":"YulFunctionCall","src":"18512:20:66"},"nativeSrc":"18512:20:66","nodeType":"YulExpressionStatement","src":"18512:20:66"},{"nativeSrc":"18545:21:66","nodeType":"YulAssignment","src":"18545:21:66","value":{"arguments":[{"name":"dst","nativeSrc":"18556:3:66","nodeType":"YulIdentifier","src":"18556:3:66"},{"kind":"number","nativeSrc":"18561:4:66","nodeType":"YulLiteral","src":"18561:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18552:3:66","nodeType":"YulIdentifier","src":"18552:3:66"},"nativeSrc":"18552:14:66","nodeType":"YulFunctionCall","src":"18552:14:66"},"variableNames":[{"name":"dst","nativeSrc":"18545:3:66","nodeType":"YulIdentifier","src":"18545:3:66"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"17400:3:66","nodeType":"YulIdentifier","src":"17400:3:66"},{"name":"srcEnd","nativeSrc":"17405:6:66","nodeType":"YulIdentifier","src":"17405:6:66"}],"functionName":{"name":"lt","nativeSrc":"17397:2:66","nodeType":"YulIdentifier","src":"17397:2:66"},"nativeSrc":"17397:15:66","nodeType":"YulFunctionCall","src":"17397:15:66"},"nativeSrc":"17389:1187:66","nodeType":"YulForLoop","post":{"nativeSrc":"17413:25:66","nodeType":"YulBlock","src":"17413:25:66","statements":[{"nativeSrc":"17415:21:66","nodeType":"YulAssignment","src":"17415:21:66","value":{"arguments":[{"name":"src","nativeSrc":"17426:3:66","nodeType":"YulIdentifier","src":"17426:3:66"},{"kind":"number","nativeSrc":"17431:4:66","nodeType":"YulLiteral","src":"17431:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17422:3:66","nodeType":"YulIdentifier","src":"17422:3:66"},"nativeSrc":"17422:14:66","nodeType":"YulFunctionCall","src":"17422:14:66"},"variableNames":[{"name":"src","nativeSrc":"17415:3:66","nodeType":"YulIdentifier","src":"17415:3:66"}]}]},"pre":{"nativeSrc":"17393:3:66","nodeType":"YulBlock","src":"17393:3:66","statements":[]},"src":"17389:1187:66"},{"nativeSrc":"18585:18:66","nodeType":"YulAssignment","src":"18585:18:66","value":{"name":"array","nativeSrc":"18598:5:66","nodeType":"YulIdentifier","src":"18598:5:66"},"variableNames":[{"name":"converted","nativeSrc":"18585:9:66","nodeType":"YulIdentifier","src":"18585:9:66"}]}]},"name":"convert_array_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","nativeSrc":"16825:1784:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"16999:5:66","nodeType":"YulTypedName","src":"16999:5:66","type":""},{"name":"length","nativeSrc":"17006:6:66","nodeType":"YulTypedName","src":"17006:6:66","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"17017:9:66","nodeType":"YulTypedName","src":"17017:9:66","type":""}],"src":"16825:1784:66"},{"body":{"nativeSrc":"18744:201:66","nodeType":"YulBlock","src":"18744:201:66","statements":[{"body":{"nativeSrc":"18782:16:66","nodeType":"YulBlock","src":"18782:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18791:1:66","nodeType":"YulLiteral","src":"18791:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"18794:1:66","nodeType":"YulLiteral","src":"18794:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"18784:6:66","nodeType":"YulIdentifier","src":"18784:6:66"},"nativeSrc":"18784:12:66","nodeType":"YulFunctionCall","src":"18784:12:66"},"nativeSrc":"18784:12:66","nodeType":"YulExpressionStatement","src":"18784:12:66"}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"18760:10:66","nodeType":"YulIdentifier","src":"18760:10:66"},{"name":"endIndex","nativeSrc":"18772:8:66","nodeType":"YulIdentifier","src":"18772:8:66"}],"functionName":{"name":"gt","nativeSrc":"18757:2:66","nodeType":"YulIdentifier","src":"18757:2:66"},"nativeSrc":"18757:24:66","nodeType":"YulFunctionCall","src":"18757:24:66"},"nativeSrc":"18754:44:66","nodeType":"YulIf","src":"18754:44:66"},{"body":{"nativeSrc":"18831:16:66","nodeType":"YulBlock","src":"18831:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18840:1:66","nodeType":"YulLiteral","src":"18840:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"18843:1:66","nodeType":"YulLiteral","src":"18843:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"18833:6:66","nodeType":"YulIdentifier","src":"18833:6:66"},"nativeSrc":"18833:12:66","nodeType":"YulFunctionCall","src":"18833:12:66"},"nativeSrc":"18833:12:66","nodeType":"YulExpressionStatement","src":"18833:12:66"}]},"condition":{"arguments":[{"name":"endIndex","nativeSrc":"18813:8:66","nodeType":"YulIdentifier","src":"18813:8:66"},{"name":"length","nativeSrc":"18823:6:66","nodeType":"YulIdentifier","src":"18823:6:66"}],"functionName":{"name":"gt","nativeSrc":"18810:2:66","nodeType":"YulIdentifier","src":"18810:2:66"},"nativeSrc":"18810:20:66","nodeType":"YulFunctionCall","src":"18810:20:66"},"nativeSrc":"18807:40:66","nodeType":"YulIf","src":"18807:40:66"},{"nativeSrc":"18856:36:66","nodeType":"YulAssignment","src":"18856:36:66","value":{"arguments":[{"name":"offset","nativeSrc":"18873:6:66","nodeType":"YulIdentifier","src":"18873:6:66"},{"name":"startIndex","nativeSrc":"18881:10:66","nodeType":"YulIdentifier","src":"18881:10:66"}],"functionName":{"name":"add","nativeSrc":"18869:3:66","nodeType":"YulIdentifier","src":"18869:3:66"},"nativeSrc":"18869:23:66","nodeType":"YulFunctionCall","src":"18869:23:66"},"variableNames":[{"name":"offsetOut","nativeSrc":"18856:9:66","nodeType":"YulIdentifier","src":"18856:9:66"}]},{"nativeSrc":"18901:38:66","nodeType":"YulAssignment","src":"18901:38:66","value":{"arguments":[{"name":"endIndex","nativeSrc":"18918:8:66","nodeType":"YulIdentifier","src":"18918:8:66"},{"name":"startIndex","nativeSrc":"18928:10:66","nodeType":"YulIdentifier","src":"18928:10:66"}],"functionName":{"name":"sub","nativeSrc":"18914:3:66","nodeType":"YulIdentifier","src":"18914:3:66"},"nativeSrc":"18914:25:66","nodeType":"YulFunctionCall","src":"18914:25:66"},"variableNames":[{"name":"lengthOut","nativeSrc":"18901:9:66","nodeType":"YulIdentifier","src":"18901:9:66"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nativeSrc":"18614:331:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"18678:6:66","nodeType":"YulTypedName","src":"18678:6:66","type":""},{"name":"length","nativeSrc":"18686:6:66","nodeType":"YulTypedName","src":"18686:6:66","type":""},{"name":"startIndex","nativeSrc":"18694:10:66","nodeType":"YulTypedName","src":"18694:10:66","type":""},{"name":"endIndex","nativeSrc":"18706:8:66","nodeType":"YulTypedName","src":"18706:8:66","type":""}],"returnVariables":[{"name":"offsetOut","nativeSrc":"18719:9:66","nodeType":"YulTypedName","src":"18719:9:66","type":""},{"name":"lengthOut","nativeSrc":"18730:9:66","nodeType":"YulTypedName","src":"18730:9:66","type":""}],"src":"18614:331:66"},{"body":{"nativeSrc":"19149:277:66","nodeType":"YulBlock","src":"19149:277:66","statements":[{"nativeSrc":"19159:27:66","nodeType":"YulVariableDeclaration","src":"19159:27:66","value":{"arguments":[{"name":"value0","nativeSrc":"19179:6:66","nodeType":"YulIdentifier","src":"19179:6:66"}],"functionName":{"name":"mload","nativeSrc":"19173:5:66","nodeType":"YulIdentifier","src":"19173:5:66"},"nativeSrc":"19173:13:66","nodeType":"YulFunctionCall","src":"19173:13:66"},"variables":[{"name":"length","nativeSrc":"19163:6:66","nodeType":"YulTypedName","src":"19163:6:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"19234:6:66","nodeType":"YulIdentifier","src":"19234:6:66"},{"kind":"number","nativeSrc":"19242:4:66","nodeType":"YulLiteral","src":"19242:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19230:3:66","nodeType":"YulIdentifier","src":"19230:3:66"},"nativeSrc":"19230:17:66","nodeType":"YulFunctionCall","src":"19230:17:66"},{"name":"pos","nativeSrc":"19249:3:66","nodeType":"YulIdentifier","src":"19249:3:66"},{"name":"length","nativeSrc":"19254:6:66","nodeType":"YulIdentifier","src":"19254:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"19195:34:66","nodeType":"YulIdentifier","src":"19195:34:66"},"nativeSrc":"19195:66:66","nodeType":"YulFunctionCall","src":"19195:66:66"},"nativeSrc":"19195:66:66","nodeType":"YulExpressionStatement","src":"19195:66:66"},{"nativeSrc":"19270:29:66","nodeType":"YulVariableDeclaration","src":"19270:29:66","value":{"arguments":[{"name":"pos","nativeSrc":"19287:3:66","nodeType":"YulIdentifier","src":"19287:3:66"},{"name":"length","nativeSrc":"19292:6:66","nodeType":"YulIdentifier","src":"19292:6:66"}],"functionName":{"name":"add","nativeSrc":"19283:3:66","nodeType":"YulIdentifier","src":"19283:3:66"},"nativeSrc":"19283:16:66","nodeType":"YulFunctionCall","src":"19283:16:66"},"variables":[{"name":"end_1","nativeSrc":"19274:5:66","nodeType":"YulTypedName","src":"19274:5:66","type":""}]},{"expression":{"arguments":[{"name":"end_1","nativeSrc":"19321:5:66","nodeType":"YulIdentifier","src":"19321:5:66"},{"name":"value1","nativeSrc":"19328:6:66","nodeType":"YulIdentifier","src":"19328:6:66"},{"name":"value2","nativeSrc":"19336:6:66","nodeType":"YulIdentifier","src":"19336:6:66"}],"functionName":{"name":"calldatacopy","nativeSrc":"19308:12:66","nodeType":"YulIdentifier","src":"19308:12:66"},"nativeSrc":"19308:35:66","nodeType":"YulFunctionCall","src":"19308:35:66"},"nativeSrc":"19308:35:66","nodeType":"YulExpressionStatement","src":"19308:35:66"},{"nativeSrc":"19352:28:66","nodeType":"YulVariableDeclaration","src":"19352:28:66","value":{"arguments":[{"name":"end_1","nativeSrc":"19366:5:66","nodeType":"YulIdentifier","src":"19366:5:66"},{"name":"value2","nativeSrc":"19373:6:66","nodeType":"YulIdentifier","src":"19373:6:66"}],"functionName":{"name":"add","nativeSrc":"19362:3:66","nodeType":"YulIdentifier","src":"19362:3:66"},"nativeSrc":"19362:18:66","nodeType":"YulFunctionCall","src":"19362:18:66"},"variables":[{"name":"_1","nativeSrc":"19356:2:66","nodeType":"YulTypedName","src":"19356:2:66","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"19396:2:66","nodeType":"YulIdentifier","src":"19396:2:66"},{"kind":"number","nativeSrc":"19400:1:66","nodeType":"YulLiteral","src":"19400:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"19389:6:66","nodeType":"YulIdentifier","src":"19389:6:66"},"nativeSrc":"19389:13:66","nodeType":"YulFunctionCall","src":"19389:13:66"},"nativeSrc":"19389:13:66","nodeType":"YulExpressionStatement","src":"19389:13:66"},{"nativeSrc":"19411:9:66","nodeType":"YulAssignment","src":"19411:9:66","value":{"name":"_1","nativeSrc":"19418:2:66","nodeType":"YulIdentifier","src":"19418:2:66"},"variableNames":[{"name":"end","nativeSrc":"19411:3:66","nodeType":"YulIdentifier","src":"19411:3:66"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_calldata_ptr_slice__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"18950:476:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"19109:3:66","nodeType":"YulTypedName","src":"19109:3:66","type":""},{"name":"value2","nativeSrc":"19114:6:66","nodeType":"YulTypedName","src":"19114:6:66","type":""},{"name":"value1","nativeSrc":"19122:6:66","nodeType":"YulTypedName","src":"19122:6:66","type":""},{"name":"value0","nativeSrc":"19130:6:66","nodeType":"YulTypedName","src":"19130:6:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"19141:3:66","nodeType":"YulTypedName","src":"19141:3:66","type":""}],"src":"18950:476:66"},{"body":{"nativeSrc":"19497:200:66","nodeType":"YulBlock","src":"19497:200:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"19514:3:66","nodeType":"YulIdentifier","src":"19514:3:66"},{"name":"length","nativeSrc":"19519:6:66","nodeType":"YulIdentifier","src":"19519:6:66"}],"functionName":{"name":"mstore","nativeSrc":"19507:6:66","nodeType":"YulIdentifier","src":"19507:6:66"},"nativeSrc":"19507:19:66","nodeType":"YulFunctionCall","src":"19507:19:66"},"nativeSrc":"19507:19:66","nodeType":"YulExpressionStatement","src":"19507:19:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"19552:3:66","nodeType":"YulIdentifier","src":"19552:3:66"},{"kind":"number","nativeSrc":"19557:4:66","nodeType":"YulLiteral","src":"19557:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19548:3:66","nodeType":"YulIdentifier","src":"19548:3:66"},"nativeSrc":"19548:14:66","nodeType":"YulFunctionCall","src":"19548:14:66"},{"name":"start","nativeSrc":"19564:5:66","nodeType":"YulIdentifier","src":"19564:5:66"},{"name":"length","nativeSrc":"19571:6:66","nodeType":"YulIdentifier","src":"19571:6:66"}],"functionName":{"name":"calldatacopy","nativeSrc":"19535:12:66","nodeType":"YulIdentifier","src":"19535:12:66"},"nativeSrc":"19535:43:66","nodeType":"YulFunctionCall","src":"19535:43:66"},"nativeSrc":"19535:43:66","nodeType":"YulExpressionStatement","src":"19535:43:66"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"19602:3:66","nodeType":"YulIdentifier","src":"19602:3:66"},{"name":"length","nativeSrc":"19607:6:66","nodeType":"YulIdentifier","src":"19607:6:66"}],"functionName":{"name":"add","nativeSrc":"19598:3:66","nodeType":"YulIdentifier","src":"19598:3:66"},"nativeSrc":"19598:16:66","nodeType":"YulFunctionCall","src":"19598:16:66"},{"kind":"number","nativeSrc":"19616:4:66","nodeType":"YulLiteral","src":"19616:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19594:3:66","nodeType":"YulIdentifier","src":"19594:3:66"},"nativeSrc":"19594:27:66","nodeType":"YulFunctionCall","src":"19594:27:66"},{"kind":"number","nativeSrc":"19623:1:66","nodeType":"YulLiteral","src":"19623:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"19587:6:66","nodeType":"YulIdentifier","src":"19587:6:66"},"nativeSrc":"19587:38:66","nodeType":"YulFunctionCall","src":"19587:38:66"},"nativeSrc":"19587:38:66","nodeType":"YulExpressionStatement","src":"19587:38:66"},{"nativeSrc":"19634:57:66","nodeType":"YulAssignment","src":"19634:57:66","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"19649:3:66","nodeType":"YulIdentifier","src":"19649:3:66"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"19662:6:66","nodeType":"YulIdentifier","src":"19662:6:66"},{"kind":"number","nativeSrc":"19670:2:66","nodeType":"YulLiteral","src":"19670:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"19658:3:66","nodeType":"YulIdentifier","src":"19658:3:66"},"nativeSrc":"19658:15:66","nodeType":"YulFunctionCall","src":"19658:15:66"},{"arguments":[{"kind":"number","nativeSrc":"19679:2:66","nodeType":"YulLiteral","src":"19679:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"19675:3:66","nodeType":"YulIdentifier","src":"19675:3:66"},"nativeSrc":"19675:7:66","nodeType":"YulFunctionCall","src":"19675:7:66"}],"functionName":{"name":"and","nativeSrc":"19654:3:66","nodeType":"YulIdentifier","src":"19654:3:66"},"nativeSrc":"19654:29:66","nodeType":"YulFunctionCall","src":"19654:29:66"}],"functionName":{"name":"add","nativeSrc":"19645:3:66","nodeType":"YulIdentifier","src":"19645:3:66"},"nativeSrc":"19645:39:66","nodeType":"YulFunctionCall","src":"19645:39:66"},{"kind":"number","nativeSrc":"19686:4:66","nodeType":"YulLiteral","src":"19686:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19641:3:66","nodeType":"YulIdentifier","src":"19641:3:66"},"nativeSrc":"19641:50:66","nodeType":"YulFunctionCall","src":"19641:50:66"},"variableNames":[{"name":"end","nativeSrc":"19634:3:66","nodeType":"YulIdentifier","src":"19634:3:66"}]}]},"name":"abi_encode_bytes_calldata","nativeSrc":"19431:266:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nativeSrc":"19466:5:66","nodeType":"YulTypedName","src":"19466:5:66","type":""},{"name":"length","nativeSrc":"19473:6:66","nodeType":"YulTypedName","src":"19473:6:66","type":""},{"name":"pos","nativeSrc":"19481:3:66","nodeType":"YulTypedName","src":"19481:3:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"19489:3:66","nodeType":"YulTypedName","src":"19489:3:66","type":""}],"src":"19431:266:66"},{"body":{"nativeSrc":"19831:115:66","nodeType":"YulBlock","src":"19831:115:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"19848:9:66","nodeType":"YulIdentifier","src":"19848:9:66"},{"kind":"number","nativeSrc":"19859:2:66","nodeType":"YulLiteral","src":"19859:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"19841:6:66","nodeType":"YulIdentifier","src":"19841:6:66"},"nativeSrc":"19841:21:66","nodeType":"YulFunctionCall","src":"19841:21:66"},"nativeSrc":"19841:21:66","nodeType":"YulExpressionStatement","src":"19841:21:66"},{"nativeSrc":"19871:69:66","nodeType":"YulAssignment","src":"19871:69:66","value":{"arguments":[{"name":"value0","nativeSrc":"19905:6:66","nodeType":"YulIdentifier","src":"19905:6:66"},{"name":"value1","nativeSrc":"19913:6:66","nodeType":"YulIdentifier","src":"19913:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"19925:9:66","nodeType":"YulIdentifier","src":"19925:9:66"},{"kind":"number","nativeSrc":"19936:2:66","nodeType":"YulLiteral","src":"19936:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19921:3:66","nodeType":"YulIdentifier","src":"19921:3:66"},"nativeSrc":"19921:18:66","nodeType":"YulFunctionCall","src":"19921:18:66"}],"functionName":{"name":"abi_encode_bytes_calldata","nativeSrc":"19879:25:66","nodeType":"YulIdentifier","src":"19879:25:66"},"nativeSrc":"19879:61:66","nodeType":"YulFunctionCall","src":"19879:61:66"},"variableNames":[{"name":"tail","nativeSrc":"19871:4:66","nodeType":"YulIdentifier","src":"19871:4:66"}]}]},"name":"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"19702:244:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19792:9:66","nodeType":"YulTypedName","src":"19792:9:66","type":""},{"name":"value1","nativeSrc":"19803:6:66","nodeType":"YulTypedName","src":"19803:6:66","type":""},{"name":"value0","nativeSrc":"19811:6:66","nodeType":"YulTypedName","src":"19811:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19822:4:66","nodeType":"YulTypedName","src":"19822:4:66","type":""}],"src":"19702:244:66"},{"body":{"nativeSrc":"19983:95:66","nodeType":"YulBlock","src":"19983:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20000:1:66","nodeType":"YulLiteral","src":"20000:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"20007:3:66","nodeType":"YulLiteral","src":"20007:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"20012:10:66","nodeType":"YulLiteral","src":"20012:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"20003:3:66","nodeType":"YulIdentifier","src":"20003:3:66"},"nativeSrc":"20003:20:66","nodeType":"YulFunctionCall","src":"20003:20:66"}],"functionName":{"name":"mstore","nativeSrc":"19993:6:66","nodeType":"YulIdentifier","src":"19993:6:66"},"nativeSrc":"19993:31:66","nodeType":"YulFunctionCall","src":"19993:31:66"},"nativeSrc":"19993:31:66","nodeType":"YulExpressionStatement","src":"19993:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"20040:1:66","nodeType":"YulLiteral","src":"20040:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"20043:4:66","nodeType":"YulLiteral","src":"20043:4:66","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"20033:6:66","nodeType":"YulIdentifier","src":"20033:6:66"},"nativeSrc":"20033:15:66","nodeType":"YulFunctionCall","src":"20033:15:66"},"nativeSrc":"20033:15:66","nodeType":"YulExpressionStatement","src":"20033:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"20064:1:66","nodeType":"YulLiteral","src":"20064:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"20067:4:66","nodeType":"YulLiteral","src":"20067:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"20057:6:66","nodeType":"YulIdentifier","src":"20057:6:66"},"nativeSrc":"20057:15:66","nodeType":"YulFunctionCall","src":"20057:15:66"},"nativeSrc":"20057:15:66","nodeType":"YulExpressionStatement","src":"20057:15:66"}]},"name":"panic_error_0x32","nativeSrc":"19951:127:66","nodeType":"YulFunctionDefinition","src":"19951:127:66"},{"body":{"nativeSrc":"20191:223:66","nodeType":"YulBlock","src":"20191:223:66","statements":[{"nativeSrc":"20201:51:66","nodeType":"YulVariableDeclaration","src":"20201:51:66","value":{"arguments":[{"name":"ptr_to_tail","nativeSrc":"20240:11:66","nodeType":"YulIdentifier","src":"20240:11:66"}],"functionName":{"name":"calldataload","nativeSrc":"20227:12:66","nodeType":"YulIdentifier","src":"20227:12:66"},"nativeSrc":"20227:25:66","nodeType":"YulFunctionCall","src":"20227:25:66"},"variables":[{"name":"rel_offset_of_tail","nativeSrc":"20205:18:66","nodeType":"YulTypedName","src":"20205:18:66","type":""}]},{"body":{"nativeSrc":"20342:16:66","nodeType":"YulBlock","src":"20342:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20351:1:66","nodeType":"YulLiteral","src":"20351:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"20354:1:66","nodeType":"YulLiteral","src":"20354:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"20344:6:66","nodeType":"YulIdentifier","src":"20344:6:66"},"nativeSrc":"20344:12:66","nodeType":"YulFunctionCall","src":"20344:12:66"},"nativeSrc":"20344:12:66","nodeType":"YulExpressionStatement","src":"20344:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nativeSrc":"20275:18:66","nodeType":"YulIdentifier","src":"20275:18:66"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"20303:12:66","nodeType":"YulIdentifier","src":"20303:12:66"},"nativeSrc":"20303:14:66","nodeType":"YulFunctionCall","src":"20303:14:66"},{"name":"base_ref","nativeSrc":"20319:8:66","nodeType":"YulIdentifier","src":"20319:8:66"}],"functionName":{"name":"sub","nativeSrc":"20299:3:66","nodeType":"YulIdentifier","src":"20299:3:66"},"nativeSrc":"20299:29:66","nodeType":"YulFunctionCall","src":"20299:29:66"},{"arguments":[{"kind":"number","nativeSrc":"20334:3:66","nodeType":"YulLiteral","src":"20334:3:66","type":"","value":"318"}],"functionName":{"name":"not","nativeSrc":"20330:3:66","nodeType":"YulIdentifier","src":"20330:3:66"},"nativeSrc":"20330:8:66","nodeType":"YulFunctionCall","src":"20330:8:66"}],"functionName":{"name":"add","nativeSrc":"20295:3:66","nodeType":"YulIdentifier","src":"20295:3:66"},"nativeSrc":"20295:44:66","nodeType":"YulFunctionCall","src":"20295:44:66"}],"functionName":{"name":"slt","nativeSrc":"20271:3:66","nodeType":"YulIdentifier","src":"20271:3:66"},"nativeSrc":"20271:69:66","nodeType":"YulFunctionCall","src":"20271:69:66"}],"functionName":{"name":"iszero","nativeSrc":"20264:6:66","nodeType":"YulIdentifier","src":"20264:6:66"},"nativeSrc":"20264:77:66","nodeType":"YulFunctionCall","src":"20264:77:66"},"nativeSrc":"20261:97:66","nodeType":"YulIf","src":"20261:97:66"},{"nativeSrc":"20367:41:66","nodeType":"YulAssignment","src":"20367:41:66","value":{"arguments":[{"name":"base_ref","nativeSrc":"20379:8:66","nodeType":"YulIdentifier","src":"20379:8:66"},{"name":"rel_offset_of_tail","nativeSrc":"20389:18:66","nodeType":"YulIdentifier","src":"20389:18:66"}],"functionName":{"name":"add","nativeSrc":"20375:3:66","nodeType":"YulIdentifier","src":"20375:3:66"},"nativeSrc":"20375:33:66","nodeType":"YulFunctionCall","src":"20375:33:66"},"variableNames":[{"name":"addr","nativeSrc":"20367:4:66","nodeType":"YulIdentifier","src":"20367:4:66"}]}]},"name":"access_calldata_tail_t_struct$_InboundPacket_$2486_calldata_ptr","nativeSrc":"20083:331:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nativeSrc":"20156:8:66","nodeType":"YulTypedName","src":"20156:8:66","type":""},{"name":"ptr_to_tail","nativeSrc":"20166:11:66","nodeType":"YulTypedName","src":"20166:11:66","type":""}],"returnVariables":[{"name":"addr","nativeSrc":"20182:4:66","nodeType":"YulTypedName","src":"20182:4:66","type":""}],"src":"20083:331:66"},{"body":{"nativeSrc":"20513:427:66","nodeType":"YulBlock","src":"20513:427:66","statements":[{"nativeSrc":"20523:51:66","nodeType":"YulVariableDeclaration","src":"20523:51:66","value":{"arguments":[{"name":"ptr_to_tail","nativeSrc":"20562:11:66","nodeType":"YulIdentifier","src":"20562:11:66"}],"functionName":{"name":"calldataload","nativeSrc":"20549:12:66","nodeType":"YulIdentifier","src":"20549:12:66"},"nativeSrc":"20549:25:66","nodeType":"YulFunctionCall","src":"20549:25:66"},"variables":[{"name":"rel_offset_of_tail","nativeSrc":"20527:18:66","nodeType":"YulTypedName","src":"20527:18:66","type":""}]},{"body":{"nativeSrc":"20663:16:66","nodeType":"YulBlock","src":"20663:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20672:1:66","nodeType":"YulLiteral","src":"20672:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"20675:1:66","nodeType":"YulLiteral","src":"20675:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"20665:6:66","nodeType":"YulIdentifier","src":"20665:6:66"},"nativeSrc":"20665:12:66","nodeType":"YulFunctionCall","src":"20665:12:66"},"nativeSrc":"20665:12:66","nodeType":"YulExpressionStatement","src":"20665:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nativeSrc":"20597:18:66","nodeType":"YulIdentifier","src":"20597:18:66"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"20625:12:66","nodeType":"YulIdentifier","src":"20625:12:66"},"nativeSrc":"20625:14:66","nodeType":"YulFunctionCall","src":"20625:14:66"},{"name":"base_ref","nativeSrc":"20641:8:66","nodeType":"YulIdentifier","src":"20641:8:66"}],"functionName":{"name":"sub","nativeSrc":"20621:3:66","nodeType":"YulIdentifier","src":"20621:3:66"},"nativeSrc":"20621:29:66","nodeType":"YulFunctionCall","src":"20621:29:66"},{"arguments":[{"kind":"number","nativeSrc":"20656:2:66","nodeType":"YulLiteral","src":"20656:2:66","type":"","value":"30"}],"functionName":{"name":"not","nativeSrc":"20652:3:66","nodeType":"YulIdentifier","src":"20652:3:66"},"nativeSrc":"20652:7:66","nodeType":"YulFunctionCall","src":"20652:7:66"}],"functionName":{"name":"add","nativeSrc":"20617:3:66","nodeType":"YulIdentifier","src":"20617:3:66"},"nativeSrc":"20617:43:66","nodeType":"YulFunctionCall","src":"20617:43:66"}],"functionName":{"name":"slt","nativeSrc":"20593:3:66","nodeType":"YulIdentifier","src":"20593:3:66"},"nativeSrc":"20593:68:66","nodeType":"YulFunctionCall","src":"20593:68:66"}],"functionName":{"name":"iszero","nativeSrc":"20586:6:66","nodeType":"YulIdentifier","src":"20586:6:66"},"nativeSrc":"20586:76:66","nodeType":"YulFunctionCall","src":"20586:76:66"},"nativeSrc":"20583:96:66","nodeType":"YulIf","src":"20583:96:66"},{"nativeSrc":"20688:47:66","nodeType":"YulVariableDeclaration","src":"20688:47:66","value":{"arguments":[{"name":"base_ref","nativeSrc":"20706:8:66","nodeType":"YulIdentifier","src":"20706:8:66"},{"name":"rel_offset_of_tail","nativeSrc":"20716:18:66","nodeType":"YulIdentifier","src":"20716:18:66"}],"functionName":{"name":"add","nativeSrc":"20702:3:66","nodeType":"YulIdentifier","src":"20702:3:66"},"nativeSrc":"20702:33:66","nodeType":"YulFunctionCall","src":"20702:33:66"},"variables":[{"name":"addr_1","nativeSrc":"20692:6:66","nodeType":"YulTypedName","src":"20692:6:66","type":""}]},{"nativeSrc":"20744:30:66","nodeType":"YulAssignment","src":"20744:30:66","value":{"arguments":[{"name":"addr_1","nativeSrc":"20767:6:66","nodeType":"YulIdentifier","src":"20767:6:66"}],"functionName":{"name":"calldataload","nativeSrc":"20754:12:66","nodeType":"YulIdentifier","src":"20754:12:66"},"nativeSrc":"20754:20:66","nodeType":"YulFunctionCall","src":"20754:20:66"},"variableNames":[{"name":"length","nativeSrc":"20744:6:66","nodeType":"YulIdentifier","src":"20744:6:66"}]},{"body":{"nativeSrc":"20817:16:66","nodeType":"YulBlock","src":"20817:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20826:1:66","nodeType":"YulLiteral","src":"20826:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"20829:1:66","nodeType":"YulLiteral","src":"20829:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"20819:6:66","nodeType":"YulIdentifier","src":"20819:6:66"},"nativeSrc":"20819:12:66","nodeType":"YulFunctionCall","src":"20819:12:66"},"nativeSrc":"20819:12:66","nodeType":"YulExpressionStatement","src":"20819:12:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"20789:6:66","nodeType":"YulIdentifier","src":"20789:6:66"},{"kind":"number","nativeSrc":"20797:18:66","nodeType":"YulLiteral","src":"20797:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"20786:2:66","nodeType":"YulIdentifier","src":"20786:2:66"},"nativeSrc":"20786:30:66","nodeType":"YulFunctionCall","src":"20786:30:66"},"nativeSrc":"20783:50:66","nodeType":"YulIf","src":"20783:50:66"},{"nativeSrc":"20842:25:66","nodeType":"YulAssignment","src":"20842:25:66","value":{"arguments":[{"name":"addr_1","nativeSrc":"20854:6:66","nodeType":"YulIdentifier","src":"20854:6:66"},{"kind":"number","nativeSrc":"20862:4:66","nodeType":"YulLiteral","src":"20862:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"20850:3:66","nodeType":"YulIdentifier","src":"20850:3:66"},"nativeSrc":"20850:17:66","nodeType":"YulFunctionCall","src":"20850:17:66"},"variableNames":[{"name":"addr","nativeSrc":"20842:4:66","nodeType":"YulIdentifier","src":"20842:4:66"}]},{"body":{"nativeSrc":"20918:16:66","nodeType":"YulBlock","src":"20918:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20927:1:66","nodeType":"YulLiteral","src":"20927:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"20930:1:66","nodeType":"YulLiteral","src":"20930:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"20920:6:66","nodeType":"YulIdentifier","src":"20920:6:66"},"nativeSrc":"20920:12:66","nodeType":"YulFunctionCall","src":"20920:12:66"},"nativeSrc":"20920:12:66","nodeType":"YulExpressionStatement","src":"20920:12:66"}]},"condition":{"arguments":[{"name":"addr","nativeSrc":"20883:4:66","nodeType":"YulIdentifier","src":"20883:4:66"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"20893:12:66","nodeType":"YulIdentifier","src":"20893:12:66"},"nativeSrc":"20893:14:66","nodeType":"YulFunctionCall","src":"20893:14:66"},{"name":"length","nativeSrc":"20909:6:66","nodeType":"YulIdentifier","src":"20909:6:66"}],"functionName":{"name":"sub","nativeSrc":"20889:3:66","nodeType":"YulIdentifier","src":"20889:3:66"},"nativeSrc":"20889:27:66","nodeType":"YulFunctionCall","src":"20889:27:66"}],"functionName":{"name":"sgt","nativeSrc":"20879:3:66","nodeType":"YulIdentifier","src":"20879:3:66"},"nativeSrc":"20879:38:66","nodeType":"YulFunctionCall","src":"20879:38:66"},"nativeSrc":"20876:58:66","nodeType":"YulIf","src":"20876:58:66"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nativeSrc":"20419:521:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nativeSrc":"20470:8:66","nodeType":"YulTypedName","src":"20470:8:66","type":""},{"name":"ptr_to_tail","nativeSrc":"20480:11:66","nodeType":"YulTypedName","src":"20480:11:66","type":""}],"returnVariables":[{"name":"addr","nativeSrc":"20496:4:66","nodeType":"YulTypedName","src":"20496:4:66","type":""},{"name":"length","nativeSrc":"20502:6:66","nodeType":"YulTypedName","src":"20502:6:66","type":""}],"src":"20419:521:66"},{"body":{"nativeSrc":"20989:85:66","nodeType":"YulBlock","src":"20989:85:66","statements":[{"body":{"nativeSrc":"21052:16:66","nodeType":"YulBlock","src":"21052:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21061:1:66","nodeType":"YulLiteral","src":"21061:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"21064:1:66","nodeType":"YulLiteral","src":"21064:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"21054:6:66","nodeType":"YulIdentifier","src":"21054:6:66"},"nativeSrc":"21054:12:66","nodeType":"YulFunctionCall","src":"21054:12:66"},"nativeSrc":"21054:12:66","nodeType":"YulExpressionStatement","src":"21054:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"21012:5:66","nodeType":"YulIdentifier","src":"21012:5:66"},{"arguments":[{"name":"value","nativeSrc":"21023:5:66","nodeType":"YulIdentifier","src":"21023:5:66"},{"kind":"number","nativeSrc":"21030:18:66","nodeType":"YulLiteral","src":"21030:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"21019:3:66","nodeType":"YulIdentifier","src":"21019:3:66"},"nativeSrc":"21019:30:66","nodeType":"YulFunctionCall","src":"21019:30:66"}],"functionName":{"name":"eq","nativeSrc":"21009:2:66","nodeType":"YulIdentifier","src":"21009:2:66"},"nativeSrc":"21009:41:66","nodeType":"YulFunctionCall","src":"21009:41:66"}],"functionName":{"name":"iszero","nativeSrc":"21002:6:66","nodeType":"YulIdentifier","src":"21002:6:66"},"nativeSrc":"21002:49:66","nodeType":"YulFunctionCall","src":"21002:49:66"},"nativeSrc":"20999:69:66","nodeType":"YulIf","src":"20999:69:66"}]},"name":"validator_revert_uint64","nativeSrc":"20945:129:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"20978:5:66","nodeType":"YulTypedName","src":"20978:5:66","type":""}],"src":"20945:129:66"},{"body":{"nativeSrc":"21394:725:66","nodeType":"YulBlock","src":"21394:725:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"21411:9:66","nodeType":"YulIdentifier","src":"21411:9:66"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"21444:6:66","nodeType":"YulIdentifier","src":"21444:6:66"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"21426:17:66","nodeType":"YulIdentifier","src":"21426:17:66"},"nativeSrc":"21426:25:66","nodeType":"YulFunctionCall","src":"21426:25:66"},{"kind":"number","nativeSrc":"21453:10:66","nodeType":"YulLiteral","src":"21453:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"21422:3:66","nodeType":"YulIdentifier","src":"21422:3:66"},"nativeSrc":"21422:42:66","nodeType":"YulFunctionCall","src":"21422:42:66"}],"functionName":{"name":"mstore","nativeSrc":"21404:6:66","nodeType":"YulIdentifier","src":"21404:6:66"},"nativeSrc":"21404:61:66","nodeType":"YulFunctionCall","src":"21404:61:66"},"nativeSrc":"21404:61:66","nodeType":"YulExpressionStatement","src":"21404:61:66"},{"nativeSrc":"21474:14:66","nodeType":"YulVariableDeclaration","src":"21474:14:66","value":{"kind":"number","nativeSrc":"21487:1:66","nodeType":"YulLiteral","src":"21487:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"21478:5:66","nodeType":"YulTypedName","src":"21478:5:66","type":""}]},{"nativeSrc":"21497:40:66","nodeType":"YulAssignment","src":"21497:40:66","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"21523:6:66","nodeType":"YulIdentifier","src":"21523:6:66"},{"kind":"number","nativeSrc":"21531:4:66","nodeType":"YulLiteral","src":"21531:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"21519:3:66","nodeType":"YulIdentifier","src":"21519:3:66"},"nativeSrc":"21519:17:66","nodeType":"YulFunctionCall","src":"21519:17:66"}],"functionName":{"name":"calldataload","nativeSrc":"21506:12:66","nodeType":"YulIdentifier","src":"21506:12:66"},"nativeSrc":"21506:31:66","nodeType":"YulFunctionCall","src":"21506:31:66"},"variableNames":[{"name":"value","nativeSrc":"21497:5:66","nodeType":"YulIdentifier","src":"21497:5:66"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21557:9:66","nodeType":"YulIdentifier","src":"21557:9:66"},{"kind":"number","nativeSrc":"21568:4:66","nodeType":"YulLiteral","src":"21568:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"21553:3:66","nodeType":"YulIdentifier","src":"21553:3:66"},"nativeSrc":"21553:20:66","nodeType":"YulFunctionCall","src":"21553:20:66"},{"name":"value","nativeSrc":"21575:5:66","nodeType":"YulIdentifier","src":"21575:5:66"}],"functionName":{"name":"mstore","nativeSrc":"21546:6:66","nodeType":"YulIdentifier","src":"21546:6:66"},"nativeSrc":"21546:35:66","nodeType":"YulFunctionCall","src":"21546:35:66"},"nativeSrc":"21546:35:66","nodeType":"YulExpressionStatement","src":"21546:35:66"},{"nativeSrc":"21590:46:66","nodeType":"YulVariableDeclaration","src":"21590:46:66","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"21622:6:66","nodeType":"YulIdentifier","src":"21622:6:66"},{"kind":"number","nativeSrc":"21630:4:66","nodeType":"YulLiteral","src":"21630:4:66","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"21618:3:66","nodeType":"YulIdentifier","src":"21618:3:66"},"nativeSrc":"21618:17:66","nodeType":"YulFunctionCall","src":"21618:17:66"}],"functionName":{"name":"calldataload","nativeSrc":"21605:12:66","nodeType":"YulIdentifier","src":"21605:12:66"},"nativeSrc":"21605:31:66","nodeType":"YulFunctionCall","src":"21605:31:66"},"variables":[{"name":"value_1","nativeSrc":"21594:7:66","nodeType":"YulTypedName","src":"21594:7:66","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"21669:7:66","nodeType":"YulIdentifier","src":"21669:7:66"}],"functionName":{"name":"validator_revert_uint64","nativeSrc":"21645:23:66","nodeType":"YulIdentifier","src":"21645:23:66"},"nativeSrc":"21645:32:66","nodeType":"YulFunctionCall","src":"21645:32:66"},"nativeSrc":"21645:32:66","nodeType":"YulExpressionStatement","src":"21645:32:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21697:9:66","nodeType":"YulIdentifier","src":"21697:9:66"},{"kind":"number","nativeSrc":"21708:4:66","nodeType":"YulLiteral","src":"21708:4:66","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"21693:3:66","nodeType":"YulIdentifier","src":"21693:3:66"},"nativeSrc":"21693:20:66","nodeType":"YulFunctionCall","src":"21693:20:66"},{"arguments":[{"name":"value_1","nativeSrc":"21719:7:66","nodeType":"YulIdentifier","src":"21719:7:66"},{"kind":"number","nativeSrc":"21728:18:66","nodeType":"YulLiteral","src":"21728:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"21715:3:66","nodeType":"YulIdentifier","src":"21715:3:66"},"nativeSrc":"21715:32:66","nodeType":"YulFunctionCall","src":"21715:32:66"}],"functionName":{"name":"mstore","nativeSrc":"21686:6:66","nodeType":"YulIdentifier","src":"21686:6:66"},"nativeSrc":"21686:62:66","nodeType":"YulFunctionCall","src":"21686:62:66"},"nativeSrc":"21686:62:66","nodeType":"YulExpressionStatement","src":"21686:62:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21768:9:66","nodeType":"YulIdentifier","src":"21768:9:66"},{"kind":"number","nativeSrc":"21779:2:66","nodeType":"YulLiteral","src":"21779:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"21764:3:66","nodeType":"YulIdentifier","src":"21764:3:66"},"nativeSrc":"21764:18:66","nodeType":"YulFunctionCall","src":"21764:18:66"},{"name":"value1","nativeSrc":"21784:6:66","nodeType":"YulIdentifier","src":"21784:6:66"}],"functionName":{"name":"mstore","nativeSrc":"21757:6:66","nodeType":"YulIdentifier","src":"21757:6:66"},"nativeSrc":"21757:34:66","nodeType":"YulFunctionCall","src":"21757:34:66"},"nativeSrc":"21757:34:66","nodeType":"YulExpressionStatement","src":"21757:34:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21811:9:66","nodeType":"YulIdentifier","src":"21811:9:66"},{"kind":"number","nativeSrc":"21822:3:66","nodeType":"YulLiteral","src":"21822:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"21807:3:66","nodeType":"YulIdentifier","src":"21807:3:66"},"nativeSrc":"21807:19:66","nodeType":"YulFunctionCall","src":"21807:19:66"},{"kind":"number","nativeSrc":"21828:3:66","nodeType":"YulLiteral","src":"21828:3:66","type":"","value":"224"}],"functionName":{"name":"mstore","nativeSrc":"21800:6:66","nodeType":"YulIdentifier","src":"21800:6:66"},"nativeSrc":"21800:32:66","nodeType":"YulFunctionCall","src":"21800:32:66"},"nativeSrc":"21800:32:66","nodeType":"YulExpressionStatement","src":"21800:32:66"},{"nativeSrc":"21841:76:66","nodeType":"YulVariableDeclaration","src":"21841:76:66","value":{"arguments":[{"name":"value2","nativeSrc":"21881:6:66","nodeType":"YulIdentifier","src":"21881:6:66"},{"name":"value3","nativeSrc":"21889:6:66","nodeType":"YulIdentifier","src":"21889:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"21901:9:66","nodeType":"YulIdentifier","src":"21901:9:66"},{"kind":"number","nativeSrc":"21912:3:66","nodeType":"YulLiteral","src":"21912:3:66","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"21897:3:66","nodeType":"YulIdentifier","src":"21897:3:66"},"nativeSrc":"21897:19:66","nodeType":"YulFunctionCall","src":"21897:19:66"}],"functionName":{"name":"abi_encode_bytes_calldata","nativeSrc":"21855:25:66","nodeType":"YulIdentifier","src":"21855:25:66"},"nativeSrc":"21855:62:66","nodeType":"YulFunctionCall","src":"21855:62:66"},"variables":[{"name":"tail_1","nativeSrc":"21845:6:66","nodeType":"YulTypedName","src":"21845:6:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21937:9:66","nodeType":"YulIdentifier","src":"21937:9:66"},{"kind":"number","nativeSrc":"21948:3:66","nodeType":"YulLiteral","src":"21948:3:66","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"21933:3:66","nodeType":"YulIdentifier","src":"21933:3:66"},"nativeSrc":"21933:19:66","nodeType":"YulFunctionCall","src":"21933:19:66"},{"arguments":[{"name":"value4","nativeSrc":"21958:6:66","nodeType":"YulIdentifier","src":"21958:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"21974:3:66","nodeType":"YulLiteral","src":"21974:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"21979:1:66","nodeType":"YulLiteral","src":"21979:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"21970:3:66","nodeType":"YulIdentifier","src":"21970:3:66"},"nativeSrc":"21970:11:66","nodeType":"YulFunctionCall","src":"21970:11:66"},{"kind":"number","nativeSrc":"21983:1:66","nodeType":"YulLiteral","src":"21983:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"21966:3:66","nodeType":"YulIdentifier","src":"21966:3:66"},"nativeSrc":"21966:19:66","nodeType":"YulFunctionCall","src":"21966:19:66"}],"functionName":{"name":"and","nativeSrc":"21954:3:66","nodeType":"YulIdentifier","src":"21954:3:66"},"nativeSrc":"21954:32:66","nodeType":"YulFunctionCall","src":"21954:32:66"}],"functionName":{"name":"mstore","nativeSrc":"21926:6:66","nodeType":"YulIdentifier","src":"21926:6:66"},"nativeSrc":"21926:61:66","nodeType":"YulFunctionCall","src":"21926:61:66"},"nativeSrc":"21926:61:66","nodeType":"YulExpressionStatement","src":"21926:61:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22007:9:66","nodeType":"YulIdentifier","src":"22007:9:66"},{"kind":"number","nativeSrc":"22018:3:66","nodeType":"YulLiteral","src":"22018:3:66","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"22003:3:66","nodeType":"YulIdentifier","src":"22003:3:66"},"nativeSrc":"22003:19:66","nodeType":"YulFunctionCall","src":"22003:19:66"},{"arguments":[{"name":"tail_1","nativeSrc":"22028:6:66","nodeType":"YulIdentifier","src":"22028:6:66"},{"name":"headStart","nativeSrc":"22036:9:66","nodeType":"YulIdentifier","src":"22036:9:66"}],"functionName":{"name":"sub","nativeSrc":"22024:3:66","nodeType":"YulIdentifier","src":"22024:3:66"},"nativeSrc":"22024:22:66","nodeType":"YulFunctionCall","src":"22024:22:66"}],"functionName":{"name":"mstore","nativeSrc":"21996:6:66","nodeType":"YulIdentifier","src":"21996:6:66"},"nativeSrc":"21996:51:66","nodeType":"YulFunctionCall","src":"21996:51:66"},"nativeSrc":"21996:51:66","nodeType":"YulExpressionStatement","src":"21996:51:66"},{"nativeSrc":"22056:57:66","nodeType":"YulAssignment","src":"22056:57:66","value":{"arguments":[{"name":"value5","nativeSrc":"22090:6:66","nodeType":"YulIdentifier","src":"22090:6:66"},{"name":"value6","nativeSrc":"22098:6:66","nodeType":"YulIdentifier","src":"22098:6:66"},{"name":"tail_1","nativeSrc":"22106:6:66","nodeType":"YulIdentifier","src":"22106:6:66"}],"functionName":{"name":"abi_encode_bytes_calldata","nativeSrc":"22064:25:66","nodeType":"YulIdentifier","src":"22064:25:66"},"nativeSrc":"22064:49:66","nodeType":"YulFunctionCall","src":"22064:49:66"},"variableNames":[{"name":"tail","nativeSrc":"22056:4:66","nodeType":"YulIdentifier","src":"22056:4:66"}]}]},"name":"abi_encode_tuple_t_struct$_Origin_$40_calldata_ptr_t_bytes32_t_bytes_calldata_ptr_t_address_t_bytes_calldata_ptr__to_t_struct$_Origin_$40_memory_ptr_t_bytes32_t_bytes_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"21079:1040:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21315:9:66","nodeType":"YulTypedName","src":"21315:9:66","type":""},{"name":"value6","nativeSrc":"21326:6:66","nodeType":"YulTypedName","src":"21326:6:66","type":""},{"name":"value5","nativeSrc":"21334:6:66","nodeType":"YulTypedName","src":"21334:6:66","type":""},{"name":"value4","nativeSrc":"21342:6:66","nodeType":"YulTypedName","src":"21342:6:66","type":""},{"name":"value3","nativeSrc":"21350:6:66","nodeType":"YulTypedName","src":"21350:6:66","type":""},{"name":"value2","nativeSrc":"21358:6:66","nodeType":"YulTypedName","src":"21358:6:66","type":""},{"name":"value1","nativeSrc":"21366:6:66","nodeType":"YulTypedName","src":"21366:6:66","type":""},{"name":"value0","nativeSrc":"21374:6:66","nodeType":"YulTypedName","src":"21374:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"21385:4:66","nodeType":"YulTypedName","src":"21385:4:66","type":""}],"src":"21079:1040:66"},{"body":{"nativeSrc":"22214:577:66","nodeType":"YulBlock","src":"22214:577:66","statements":[{"body":{"nativeSrc":"22260:16:66","nodeType":"YulBlock","src":"22260:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22269:1:66","nodeType":"YulLiteral","src":"22269:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"22272:1:66","nodeType":"YulLiteral","src":"22272:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"22262:6:66","nodeType":"YulIdentifier","src":"22262:6:66"},"nativeSrc":"22262:12:66","nodeType":"YulFunctionCall","src":"22262:12:66"},"nativeSrc":"22262:12:66","nodeType":"YulExpressionStatement","src":"22262:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"22235:7:66","nodeType":"YulIdentifier","src":"22235:7:66"},{"name":"headStart","nativeSrc":"22244:9:66","nodeType":"YulIdentifier","src":"22244:9:66"}],"functionName":{"name":"sub","nativeSrc":"22231:3:66","nodeType":"YulIdentifier","src":"22231:3:66"},"nativeSrc":"22231:23:66","nodeType":"YulFunctionCall","src":"22231:23:66"},{"kind":"number","nativeSrc":"22256:2:66","nodeType":"YulLiteral","src":"22256:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"22227:3:66","nodeType":"YulIdentifier","src":"22227:3:66"},"nativeSrc":"22227:32:66","nodeType":"YulFunctionCall","src":"22227:32:66"},"nativeSrc":"22224:52:66","nodeType":"YulIf","src":"22224:52:66"},{"nativeSrc":"22285:30:66","nodeType":"YulVariableDeclaration","src":"22285:30:66","value":{"arguments":[{"name":"headStart","nativeSrc":"22305:9:66","nodeType":"YulIdentifier","src":"22305:9:66"}],"functionName":{"name":"mload","nativeSrc":"22299:5:66","nodeType":"YulIdentifier","src":"22299:5:66"},"nativeSrc":"22299:16:66","nodeType":"YulFunctionCall","src":"22299:16:66"},"variables":[{"name":"offset","nativeSrc":"22289:6:66","nodeType":"YulTypedName","src":"22289:6:66","type":""}]},{"body":{"nativeSrc":"22358:16:66","nodeType":"YulBlock","src":"22358:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22367:1:66","nodeType":"YulLiteral","src":"22367:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"22370:1:66","nodeType":"YulLiteral","src":"22370:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"22360:6:66","nodeType":"YulIdentifier","src":"22360:6:66"},"nativeSrc":"22360:12:66","nodeType":"YulFunctionCall","src":"22360:12:66"},"nativeSrc":"22360:12:66","nodeType":"YulExpressionStatement","src":"22360:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"22330:6:66","nodeType":"YulIdentifier","src":"22330:6:66"},{"kind":"number","nativeSrc":"22338:18:66","nodeType":"YulLiteral","src":"22338:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"22327:2:66","nodeType":"YulIdentifier","src":"22327:2:66"},"nativeSrc":"22327:30:66","nodeType":"YulFunctionCall","src":"22327:30:66"},"nativeSrc":"22324:50:66","nodeType":"YulIf","src":"22324:50:66"},{"nativeSrc":"22383:32:66","nodeType":"YulVariableDeclaration","src":"22383:32:66","value":{"arguments":[{"name":"headStart","nativeSrc":"22397:9:66","nodeType":"YulIdentifier","src":"22397:9:66"},{"name":"offset","nativeSrc":"22408:6:66","nodeType":"YulIdentifier","src":"22408:6:66"}],"functionName":{"name":"add","nativeSrc":"22393:3:66","nodeType":"YulIdentifier","src":"22393:3:66"},"nativeSrc":"22393:22:66","nodeType":"YulFunctionCall","src":"22393:22:66"},"variables":[{"name":"_1","nativeSrc":"22387:2:66","nodeType":"YulTypedName","src":"22387:2:66","type":""}]},{"body":{"nativeSrc":"22463:16:66","nodeType":"YulBlock","src":"22463:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22472:1:66","nodeType":"YulLiteral","src":"22472:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"22475:1:66","nodeType":"YulLiteral","src":"22475:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"22465:6:66","nodeType":"YulIdentifier","src":"22465:6:66"},"nativeSrc":"22465:12:66","nodeType":"YulFunctionCall","src":"22465:12:66"},"nativeSrc":"22465:12:66","nodeType":"YulExpressionStatement","src":"22465:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"22442:2:66","nodeType":"YulIdentifier","src":"22442:2:66"},{"kind":"number","nativeSrc":"22446:4:66","nodeType":"YulLiteral","src":"22446:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"22438:3:66","nodeType":"YulIdentifier","src":"22438:3:66"},"nativeSrc":"22438:13:66","nodeType":"YulFunctionCall","src":"22438:13:66"},{"name":"dataEnd","nativeSrc":"22453:7:66","nodeType":"YulIdentifier","src":"22453:7:66"}],"functionName":{"name":"slt","nativeSrc":"22434:3:66","nodeType":"YulIdentifier","src":"22434:3:66"},"nativeSrc":"22434:27:66","nodeType":"YulFunctionCall","src":"22434:27:66"}],"functionName":{"name":"iszero","nativeSrc":"22427:6:66","nodeType":"YulIdentifier","src":"22427:6:66"},"nativeSrc":"22427:35:66","nodeType":"YulFunctionCall","src":"22427:35:66"},"nativeSrc":"22424:55:66","nodeType":"YulIf","src":"22424:55:66"},{"nativeSrc":"22488:23:66","nodeType":"YulVariableDeclaration","src":"22488:23:66","value":{"arguments":[{"name":"_1","nativeSrc":"22508:2:66","nodeType":"YulIdentifier","src":"22508:2:66"}],"functionName":{"name":"mload","nativeSrc":"22502:5:66","nodeType":"YulIdentifier","src":"22502:5:66"},"nativeSrc":"22502:9:66","nodeType":"YulFunctionCall","src":"22502:9:66"},"variables":[{"name":"length","nativeSrc":"22492:6:66","nodeType":"YulTypedName","src":"22492:6:66","type":""}]},{"nativeSrc":"22520:65:66","nodeType":"YulVariableDeclaration","src":"22520:65:66","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"22577:6:66","nodeType":"YulIdentifier","src":"22577:6:66"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"22549:27:66","nodeType":"YulIdentifier","src":"22549:27:66"},"nativeSrc":"22549:35:66","nodeType":"YulFunctionCall","src":"22549:35:66"}],"functionName":{"name":"allocate_memory","nativeSrc":"22533:15:66","nodeType":"YulIdentifier","src":"22533:15:66"},"nativeSrc":"22533:52:66","nodeType":"YulFunctionCall","src":"22533:52:66"},"variables":[{"name":"array","nativeSrc":"22524:5:66","nodeType":"YulTypedName","src":"22524:5:66","type":""}]},{"expression":{"arguments":[{"name":"array","nativeSrc":"22601:5:66","nodeType":"YulIdentifier","src":"22601:5:66"},{"name":"length","nativeSrc":"22608:6:66","nodeType":"YulIdentifier","src":"22608:6:66"}],"functionName":{"name":"mstore","nativeSrc":"22594:6:66","nodeType":"YulIdentifier","src":"22594:6:66"},"nativeSrc":"22594:21:66","nodeType":"YulFunctionCall","src":"22594:21:66"},"nativeSrc":"22594:21:66","nodeType":"YulExpressionStatement","src":"22594:21:66"},{"body":{"nativeSrc":"22665:16:66","nodeType":"YulBlock","src":"22665:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22674:1:66","nodeType":"YulLiteral","src":"22674:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"22677:1:66","nodeType":"YulLiteral","src":"22677:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"22667:6:66","nodeType":"YulIdentifier","src":"22667:6:66"},"nativeSrc":"22667:12:66","nodeType":"YulFunctionCall","src":"22667:12:66"},"nativeSrc":"22667:12:66","nodeType":"YulExpressionStatement","src":"22667:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"22638:2:66","nodeType":"YulIdentifier","src":"22638:2:66"},{"name":"length","nativeSrc":"22642:6:66","nodeType":"YulIdentifier","src":"22642:6:66"}],"functionName":{"name":"add","nativeSrc":"22634:3:66","nodeType":"YulIdentifier","src":"22634:3:66"},"nativeSrc":"22634:15:66","nodeType":"YulFunctionCall","src":"22634:15:66"},{"kind":"number","nativeSrc":"22651:2:66","nodeType":"YulLiteral","src":"22651:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22630:3:66","nodeType":"YulIdentifier","src":"22630:3:66"},"nativeSrc":"22630:24:66","nodeType":"YulFunctionCall","src":"22630:24:66"},{"name":"dataEnd","nativeSrc":"22656:7:66","nodeType":"YulIdentifier","src":"22656:7:66"}],"functionName":{"name":"gt","nativeSrc":"22627:2:66","nodeType":"YulIdentifier","src":"22627:2:66"},"nativeSrc":"22627:37:66","nodeType":"YulFunctionCall","src":"22627:37:66"},"nativeSrc":"22624:57:66","nodeType":"YulIf","src":"22624:57:66"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"22729:2:66","nodeType":"YulIdentifier","src":"22729:2:66"},{"kind":"number","nativeSrc":"22733:2:66","nodeType":"YulLiteral","src":"22733:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22725:3:66","nodeType":"YulIdentifier","src":"22725:3:66"},"nativeSrc":"22725:11:66","nodeType":"YulFunctionCall","src":"22725:11:66"},{"arguments":[{"name":"array","nativeSrc":"22742:5:66","nodeType":"YulIdentifier","src":"22742:5:66"},{"kind":"number","nativeSrc":"22749:2:66","nodeType":"YulLiteral","src":"22749:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22738:3:66","nodeType":"YulIdentifier","src":"22738:3:66"},"nativeSrc":"22738:14:66","nodeType":"YulFunctionCall","src":"22738:14:66"},{"name":"length","nativeSrc":"22754:6:66","nodeType":"YulIdentifier","src":"22754:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"22690:34:66","nodeType":"YulIdentifier","src":"22690:34:66"},"nativeSrc":"22690:71:66","nodeType":"YulFunctionCall","src":"22690:71:66"},"nativeSrc":"22690:71:66","nodeType":"YulExpressionStatement","src":"22690:71:66"},{"nativeSrc":"22770:15:66","nodeType":"YulAssignment","src":"22770:15:66","value":{"name":"array","nativeSrc":"22780:5:66","nodeType":"YulIdentifier","src":"22780:5:66"},"variableNames":[{"name":"value0","nativeSrc":"22770:6:66","nodeType":"YulIdentifier","src":"22770:6:66"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nativeSrc":"22124:667:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22180:9:66","nodeType":"YulTypedName","src":"22180:9:66","type":""},{"name":"dataEnd","nativeSrc":"22191:7:66","nodeType":"YulTypedName","src":"22191:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"22203:6:66","nodeType":"YulTypedName","src":"22203:6:66","type":""}],"src":"22124:667:66"},{"body":{"nativeSrc":"22925:119:66","nodeType":"YulBlock","src":"22925:119:66","statements":[{"nativeSrc":"22935:26:66","nodeType":"YulAssignment","src":"22935:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"22947:9:66","nodeType":"YulIdentifier","src":"22947:9:66"},{"kind":"number","nativeSrc":"22958:2:66","nodeType":"YulLiteral","src":"22958:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"22943:3:66","nodeType":"YulIdentifier","src":"22943:3:66"},"nativeSrc":"22943:18:66","nodeType":"YulFunctionCall","src":"22943:18:66"},"variableNames":[{"name":"tail","nativeSrc":"22935:4:66","nodeType":"YulIdentifier","src":"22935:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"22977:9:66","nodeType":"YulIdentifier","src":"22977:9:66"},{"name":"value0","nativeSrc":"22988:6:66","nodeType":"YulIdentifier","src":"22988:6:66"}],"functionName":{"name":"mstore","nativeSrc":"22970:6:66","nodeType":"YulIdentifier","src":"22970:6:66"},"nativeSrc":"22970:25:66","nodeType":"YulFunctionCall","src":"22970:25:66"},"nativeSrc":"22970:25:66","nodeType":"YulExpressionStatement","src":"22970:25:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23015:9:66","nodeType":"YulIdentifier","src":"23015:9:66"},{"kind":"number","nativeSrc":"23026:2:66","nodeType":"YulLiteral","src":"23026:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23011:3:66","nodeType":"YulIdentifier","src":"23011:3:66"},"nativeSrc":"23011:18:66","nodeType":"YulFunctionCall","src":"23011:18:66"},{"name":"value1","nativeSrc":"23031:6:66","nodeType":"YulIdentifier","src":"23031:6:66"}],"functionName":{"name":"mstore","nativeSrc":"23004:6:66","nodeType":"YulIdentifier","src":"23004:6:66"},"nativeSrc":"23004:34:66","nodeType":"YulFunctionCall","src":"23004:34:66"},"nativeSrc":"23004:34:66","nodeType":"YulExpressionStatement","src":"23004:34:66"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"22796:248:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22886:9:66","nodeType":"YulTypedName","src":"22886:9:66","type":""},{"name":"value1","nativeSrc":"22897:6:66","nodeType":"YulTypedName","src":"22897:6:66","type":""},{"name":"value0","nativeSrc":"22905:6:66","nodeType":"YulTypedName","src":"22905:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"22916:4:66","nodeType":"YulTypedName","src":"22916:4:66","type":""}],"src":"22796:248:66"},{"body":{"nativeSrc":"23148:93:66","nodeType":"YulBlock","src":"23148:93:66","statements":[{"nativeSrc":"23158:26:66","nodeType":"YulAssignment","src":"23158:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"23170:9:66","nodeType":"YulIdentifier","src":"23170:9:66"},{"kind":"number","nativeSrc":"23181:2:66","nodeType":"YulLiteral","src":"23181:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23166:3:66","nodeType":"YulIdentifier","src":"23166:3:66"},"nativeSrc":"23166:18:66","nodeType":"YulFunctionCall","src":"23166:18:66"},"variableNames":[{"name":"tail","nativeSrc":"23158:4:66","nodeType":"YulIdentifier","src":"23158:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"23200:9:66","nodeType":"YulIdentifier","src":"23200:9:66"},{"arguments":[{"name":"value0","nativeSrc":"23215:6:66","nodeType":"YulIdentifier","src":"23215:6:66"},{"kind":"number","nativeSrc":"23223:10:66","nodeType":"YulLiteral","src":"23223:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"23211:3:66","nodeType":"YulIdentifier","src":"23211:3:66"},"nativeSrc":"23211:23:66","nodeType":"YulFunctionCall","src":"23211:23:66"}],"functionName":{"name":"mstore","nativeSrc":"23193:6:66","nodeType":"YulIdentifier","src":"23193:6:66"},"nativeSrc":"23193:42:66","nodeType":"YulFunctionCall","src":"23193:42:66"},"nativeSrc":"23193:42:66","nodeType":"YulExpressionStatement","src":"23193:42:66"}]},"name":"abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed","nativeSrc":"23049:192:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23117:9:66","nodeType":"YulTypedName","src":"23117:9:66","type":""},{"name":"value0","nativeSrc":"23128:6:66","nodeType":"YulTypedName","src":"23128:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"23139:4:66","nodeType":"YulTypedName","src":"23139:4:66","type":""}],"src":"23049:192:66"},{"body":{"nativeSrc":"23315:176:66","nodeType":"YulBlock","src":"23315:176:66","statements":[{"body":{"nativeSrc":"23361:16:66","nodeType":"YulBlock","src":"23361:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"23370:1:66","nodeType":"YulLiteral","src":"23370:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"23373:1:66","nodeType":"YulLiteral","src":"23373:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"23363:6:66","nodeType":"YulIdentifier","src":"23363:6:66"},"nativeSrc":"23363:12:66","nodeType":"YulFunctionCall","src":"23363:12:66"},"nativeSrc":"23363:12:66","nodeType":"YulExpressionStatement","src":"23363:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"23336:7:66","nodeType":"YulIdentifier","src":"23336:7:66"},{"name":"headStart","nativeSrc":"23345:9:66","nodeType":"YulIdentifier","src":"23345:9:66"}],"functionName":{"name":"sub","nativeSrc":"23332:3:66","nodeType":"YulIdentifier","src":"23332:3:66"},"nativeSrc":"23332:23:66","nodeType":"YulFunctionCall","src":"23332:23:66"},{"kind":"number","nativeSrc":"23357:2:66","nodeType":"YulLiteral","src":"23357:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"23328:3:66","nodeType":"YulIdentifier","src":"23328:3:66"},"nativeSrc":"23328:32:66","nodeType":"YulFunctionCall","src":"23328:32:66"},"nativeSrc":"23325:52:66","nodeType":"YulIf","src":"23325:52:66"},{"nativeSrc":"23386:36:66","nodeType":"YulVariableDeclaration","src":"23386:36:66","value":{"arguments":[{"name":"headStart","nativeSrc":"23412:9:66","nodeType":"YulIdentifier","src":"23412:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"23399:12:66","nodeType":"YulIdentifier","src":"23399:12:66"},"nativeSrc":"23399:23:66","nodeType":"YulFunctionCall","src":"23399:23:66"},"variables":[{"name":"value","nativeSrc":"23390:5:66","nodeType":"YulTypedName","src":"23390:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"23455:5:66","nodeType":"YulIdentifier","src":"23455:5:66"}],"functionName":{"name":"validator_revert_uint64","nativeSrc":"23431:23:66","nodeType":"YulIdentifier","src":"23431:23:66"},"nativeSrc":"23431:30:66","nodeType":"YulFunctionCall","src":"23431:30:66"},"nativeSrc":"23431:30:66","nodeType":"YulExpressionStatement","src":"23431:30:66"},{"nativeSrc":"23470:15:66","nodeType":"YulAssignment","src":"23470:15:66","value":{"name":"value","nativeSrc":"23480:5:66","nodeType":"YulIdentifier","src":"23480:5:66"},"variableNames":[{"name":"value0","nativeSrc":"23470:6:66","nodeType":"YulIdentifier","src":"23470:6:66"}]}]},"name":"abi_decode_tuple_t_uint64","nativeSrc":"23246:245:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23281:9:66","nodeType":"YulTypedName","src":"23281:9:66","type":""},{"name":"dataEnd","nativeSrc":"23292:7:66","nodeType":"YulTypedName","src":"23292:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"23304:6:66","nodeType":"YulTypedName","src":"23304:6:66","type":""}],"src":"23246:245:66"},{"body":{"nativeSrc":"23706:269:66","nodeType":"YulBlock","src":"23706:269:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"23723:9:66","nodeType":"YulIdentifier","src":"23723:9:66"},{"arguments":[{"name":"value0","nativeSrc":"23738:6:66","nodeType":"YulIdentifier","src":"23738:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"23754:3:66","nodeType":"YulLiteral","src":"23754:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"23759:1:66","nodeType":"YulLiteral","src":"23759:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"23750:3:66","nodeType":"YulIdentifier","src":"23750:3:66"},"nativeSrc":"23750:11:66","nodeType":"YulFunctionCall","src":"23750:11:66"},{"kind":"number","nativeSrc":"23763:1:66","nodeType":"YulLiteral","src":"23763:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"23746:3:66","nodeType":"YulIdentifier","src":"23746:3:66"},"nativeSrc":"23746:19:66","nodeType":"YulFunctionCall","src":"23746:19:66"}],"functionName":{"name":"and","nativeSrc":"23734:3:66","nodeType":"YulIdentifier","src":"23734:3:66"},"nativeSrc":"23734:32:66","nodeType":"YulFunctionCall","src":"23734:32:66"}],"functionName":{"name":"mstore","nativeSrc":"23716:6:66","nodeType":"YulIdentifier","src":"23716:6:66"},"nativeSrc":"23716:51:66","nodeType":"YulFunctionCall","src":"23716:51:66"},"nativeSrc":"23716:51:66","nodeType":"YulExpressionStatement","src":"23716:51:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23787:9:66","nodeType":"YulIdentifier","src":"23787:9:66"},{"kind":"number","nativeSrc":"23798:2:66","nodeType":"YulLiteral","src":"23798:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23783:3:66","nodeType":"YulIdentifier","src":"23783:3:66"},"nativeSrc":"23783:18:66","nodeType":"YulFunctionCall","src":"23783:18:66"},{"name":"value1","nativeSrc":"23803:6:66","nodeType":"YulIdentifier","src":"23803:6:66"}],"functionName":{"name":"mstore","nativeSrc":"23776:6:66","nodeType":"YulIdentifier","src":"23776:6:66"},"nativeSrc":"23776:34:66","nodeType":"YulFunctionCall","src":"23776:34:66"},"nativeSrc":"23776:34:66","nodeType":"YulExpressionStatement","src":"23776:34:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23830:9:66","nodeType":"YulIdentifier","src":"23830:9:66"},{"kind":"number","nativeSrc":"23841:2:66","nodeType":"YulLiteral","src":"23841:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"23826:3:66","nodeType":"YulIdentifier","src":"23826:3:66"},"nativeSrc":"23826:18:66","nodeType":"YulFunctionCall","src":"23826:18:66"},{"arguments":[{"name":"value2","nativeSrc":"23850:6:66","nodeType":"YulIdentifier","src":"23850:6:66"},{"kind":"number","nativeSrc":"23858:6:66","nodeType":"YulLiteral","src":"23858:6:66","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"23846:3:66","nodeType":"YulIdentifier","src":"23846:3:66"},"nativeSrc":"23846:19:66","nodeType":"YulFunctionCall","src":"23846:19:66"}],"functionName":{"name":"mstore","nativeSrc":"23819:6:66","nodeType":"YulIdentifier","src":"23819:6:66"},"nativeSrc":"23819:47:66","nodeType":"YulFunctionCall","src":"23819:47:66"},"nativeSrc":"23819:47:66","nodeType":"YulExpressionStatement","src":"23819:47:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23886:9:66","nodeType":"YulIdentifier","src":"23886:9:66"},{"kind":"number","nativeSrc":"23897:2:66","nodeType":"YulLiteral","src":"23897:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"23882:3:66","nodeType":"YulIdentifier","src":"23882:3:66"},"nativeSrc":"23882:18:66","nodeType":"YulFunctionCall","src":"23882:18:66"},{"kind":"number","nativeSrc":"23902:3:66","nodeType":"YulLiteral","src":"23902:3:66","type":"","value":"128"}],"functionName":{"name":"mstore","nativeSrc":"23875:6:66","nodeType":"YulIdentifier","src":"23875:6:66"},"nativeSrc":"23875:31:66","nodeType":"YulFunctionCall","src":"23875:31:66"},"nativeSrc":"23875:31:66","nodeType":"YulExpressionStatement","src":"23875:31:66"},{"nativeSrc":"23915:54:66","nodeType":"YulAssignment","src":"23915:54:66","value":{"arguments":[{"name":"value3","nativeSrc":"23941:6:66","nodeType":"YulIdentifier","src":"23941:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"23953:9:66","nodeType":"YulIdentifier","src":"23953:9:66"},{"kind":"number","nativeSrc":"23964:3:66","nodeType":"YulLiteral","src":"23964:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"23949:3:66","nodeType":"YulIdentifier","src":"23949:3:66"},"nativeSrc":"23949:19:66","nodeType":"YulFunctionCall","src":"23949:19:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"23923:17:66","nodeType":"YulIdentifier","src":"23923:17:66"},"nativeSrc":"23923:46:66","nodeType":"YulFunctionCall","src":"23923:46:66"},"variableNames":[{"name":"tail","nativeSrc":"23915:4:66","nodeType":"YulIdentifier","src":"23915:4:66"}]}]},"name":"abi_encode_tuple_t_address_t_bytes32_t_rational_0_by_1_t_bytes_memory_ptr__to_t_address_t_bytes32_t_uint16_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"23496:479:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23651:9:66","nodeType":"YulTypedName","src":"23651:9:66","type":""},{"name":"value3","nativeSrc":"23662:6:66","nodeType":"YulTypedName","src":"23662:6:66","type":""},{"name":"value2","nativeSrc":"23670:6:66","nodeType":"YulTypedName","src":"23670:6:66","type":""},{"name":"value1","nativeSrc":"23678:6:66","nodeType":"YulTypedName","src":"23678:6:66","type":""},{"name":"value0","nativeSrc":"23686:6:66","nodeType":"YulTypedName","src":"23686:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"23697:4:66","nodeType":"YulTypedName","src":"23697:4:66","type":""}],"src":"23496:479:66"},{"body":{"nativeSrc":"24107:136:66","nodeType":"YulBlock","src":"24107:136:66","statements":[{"nativeSrc":"24117:26:66","nodeType":"YulAssignment","src":"24117:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"24129:9:66","nodeType":"YulIdentifier","src":"24129:9:66"},{"kind":"number","nativeSrc":"24140:2:66","nodeType":"YulLiteral","src":"24140:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"24125:3:66","nodeType":"YulIdentifier","src":"24125:3:66"},"nativeSrc":"24125:18:66","nodeType":"YulFunctionCall","src":"24125:18:66"},"variableNames":[{"name":"tail","nativeSrc":"24117:4:66","nodeType":"YulIdentifier","src":"24117:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"24159:9:66","nodeType":"YulIdentifier","src":"24159:9:66"},{"arguments":[{"name":"value0","nativeSrc":"24174:6:66","nodeType":"YulIdentifier","src":"24174:6:66"},{"kind":"number","nativeSrc":"24182:10:66","nodeType":"YulLiteral","src":"24182:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"24170:3:66","nodeType":"YulIdentifier","src":"24170:3:66"},"nativeSrc":"24170:23:66","nodeType":"YulFunctionCall","src":"24170:23:66"}],"functionName":{"name":"mstore","nativeSrc":"24152:6:66","nodeType":"YulIdentifier","src":"24152:6:66"},"nativeSrc":"24152:42:66","nodeType":"YulFunctionCall","src":"24152:42:66"},"nativeSrc":"24152:42:66","nodeType":"YulExpressionStatement","src":"24152:42:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24214:9:66","nodeType":"YulIdentifier","src":"24214:9:66"},{"kind":"number","nativeSrc":"24225:2:66","nodeType":"YulLiteral","src":"24225:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24210:3:66","nodeType":"YulIdentifier","src":"24210:3:66"},"nativeSrc":"24210:18:66","nodeType":"YulFunctionCall","src":"24210:18:66"},{"name":"value1","nativeSrc":"24230:6:66","nodeType":"YulIdentifier","src":"24230:6:66"}],"functionName":{"name":"mstore","nativeSrc":"24203:6:66","nodeType":"YulIdentifier","src":"24203:6:66"},"nativeSrc":"24203:34:66","nodeType":"YulFunctionCall","src":"24203:34:66"},"nativeSrc":"24203:34:66","nodeType":"YulExpressionStatement","src":"24203:34:66"}]},"name":"abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed","nativeSrc":"23980:263:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24068:9:66","nodeType":"YulTypedName","src":"24068:9:66","type":""},{"name":"value1","nativeSrc":"24079:6:66","nodeType":"YulTypedName","src":"24079:6:66","type":""},{"name":"value0","nativeSrc":"24087:6:66","nodeType":"YulTypedName","src":"24087:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"24098:4:66","nodeType":"YulTypedName","src":"24098:4:66","type":""}],"src":"23980:263:66"},{"body":{"nativeSrc":"24405:188:66","nodeType":"YulBlock","src":"24405:188:66","statements":[{"nativeSrc":"24415:26:66","nodeType":"YulAssignment","src":"24415:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"24427:9:66","nodeType":"YulIdentifier","src":"24427:9:66"},{"kind":"number","nativeSrc":"24438:2:66","nodeType":"YulLiteral","src":"24438:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"24423:3:66","nodeType":"YulIdentifier","src":"24423:3:66"},"nativeSrc":"24423:18:66","nodeType":"YulFunctionCall","src":"24423:18:66"},"variableNames":[{"name":"tail","nativeSrc":"24415:4:66","nodeType":"YulIdentifier","src":"24415:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"24457:9:66","nodeType":"YulIdentifier","src":"24457:9:66"},{"arguments":[{"name":"value0","nativeSrc":"24472:6:66","nodeType":"YulIdentifier","src":"24472:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"24488:3:66","nodeType":"YulLiteral","src":"24488:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"24493:1:66","nodeType":"YulLiteral","src":"24493:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"24484:3:66","nodeType":"YulIdentifier","src":"24484:3:66"},"nativeSrc":"24484:11:66","nodeType":"YulFunctionCall","src":"24484:11:66"},{"kind":"number","nativeSrc":"24497:1:66","nodeType":"YulLiteral","src":"24497:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"24480:3:66","nodeType":"YulIdentifier","src":"24480:3:66"},"nativeSrc":"24480:19:66","nodeType":"YulFunctionCall","src":"24480:19:66"}],"functionName":{"name":"and","nativeSrc":"24468:3:66","nodeType":"YulIdentifier","src":"24468:3:66"},"nativeSrc":"24468:32:66","nodeType":"YulFunctionCall","src":"24468:32:66"}],"functionName":{"name":"mstore","nativeSrc":"24450:6:66","nodeType":"YulIdentifier","src":"24450:6:66"},"nativeSrc":"24450:51:66","nodeType":"YulFunctionCall","src":"24450:51:66"},"nativeSrc":"24450:51:66","nodeType":"YulExpressionStatement","src":"24450:51:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24521:9:66","nodeType":"YulIdentifier","src":"24521:9:66"},{"kind":"number","nativeSrc":"24532:2:66","nodeType":"YulLiteral","src":"24532:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24517:3:66","nodeType":"YulIdentifier","src":"24517:3:66"},"nativeSrc":"24517:18:66","nodeType":"YulFunctionCall","src":"24517:18:66"},{"name":"value1","nativeSrc":"24537:6:66","nodeType":"YulIdentifier","src":"24537:6:66"}],"functionName":{"name":"mstore","nativeSrc":"24510:6:66","nodeType":"YulIdentifier","src":"24510:6:66"},"nativeSrc":"24510:34:66","nodeType":"YulFunctionCall","src":"24510:34:66"},"nativeSrc":"24510:34:66","nodeType":"YulExpressionStatement","src":"24510:34:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24564:9:66","nodeType":"YulIdentifier","src":"24564:9:66"},{"kind":"number","nativeSrc":"24575:2:66","nodeType":"YulLiteral","src":"24575:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"24560:3:66","nodeType":"YulIdentifier","src":"24560:3:66"},"nativeSrc":"24560:18:66","nodeType":"YulFunctionCall","src":"24560:18:66"},{"name":"value2","nativeSrc":"24580:6:66","nodeType":"YulIdentifier","src":"24580:6:66"}],"functionName":{"name":"mstore","nativeSrc":"24553:6:66","nodeType":"YulIdentifier","src":"24553:6:66"},"nativeSrc":"24553:34:66","nodeType":"YulFunctionCall","src":"24553:34:66"},"nativeSrc":"24553:34:66","nodeType":"YulExpressionStatement","src":"24553:34:66"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"24248:345:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24358:9:66","nodeType":"YulTypedName","src":"24358:9:66","type":""},{"name":"value2","nativeSrc":"24369:6:66","nodeType":"YulTypedName","src":"24369:6:66","type":""},{"name":"value1","nativeSrc":"24377:6:66","nodeType":"YulTypedName","src":"24377:6:66","type":""},{"name":"value0","nativeSrc":"24385:6:66","nodeType":"YulTypedName","src":"24385:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"24396:4:66","nodeType":"YulTypedName","src":"24396:4:66","type":""}],"src":"24248:345:66"},{"body":{"nativeSrc":"24763:214:66","nodeType":"YulBlock","src":"24763:214:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"24780:9:66","nodeType":"YulIdentifier","src":"24780:9:66"},{"kind":"number","nativeSrc":"24791:2:66","nodeType":"YulLiteral","src":"24791:2:66","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"24773:6:66","nodeType":"YulIdentifier","src":"24773:6:66"},"nativeSrc":"24773:21:66","nodeType":"YulFunctionCall","src":"24773:21:66"},"nativeSrc":"24773:21:66","nodeType":"YulExpressionStatement","src":"24773:21:66"},{"nativeSrc":"24803:59:66","nodeType":"YulVariableDeclaration","src":"24803:59:66","value":{"arguments":[{"name":"value0","nativeSrc":"24835:6:66","nodeType":"YulIdentifier","src":"24835:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"24847:9:66","nodeType":"YulIdentifier","src":"24847:9:66"},{"kind":"number","nativeSrc":"24858:2:66","nodeType":"YulLiteral","src":"24858:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"24843:3:66","nodeType":"YulIdentifier","src":"24843:3:66"},"nativeSrc":"24843:18:66","nodeType":"YulFunctionCall","src":"24843:18:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"24817:17:66","nodeType":"YulIdentifier","src":"24817:17:66"},"nativeSrc":"24817:45:66","nodeType":"YulFunctionCall","src":"24817:45:66"},"variables":[{"name":"tail_1","nativeSrc":"24807:6:66","nodeType":"YulTypedName","src":"24807:6:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24882:9:66","nodeType":"YulIdentifier","src":"24882:9:66"},{"kind":"number","nativeSrc":"24893:2:66","nodeType":"YulLiteral","src":"24893:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24878:3:66","nodeType":"YulIdentifier","src":"24878:3:66"},"nativeSrc":"24878:18:66","nodeType":"YulFunctionCall","src":"24878:18:66"},{"arguments":[{"name":"tail_1","nativeSrc":"24902:6:66","nodeType":"YulIdentifier","src":"24902:6:66"},{"name":"headStart","nativeSrc":"24910:9:66","nodeType":"YulIdentifier","src":"24910:9:66"}],"functionName":{"name":"sub","nativeSrc":"24898:3:66","nodeType":"YulIdentifier","src":"24898:3:66"},"nativeSrc":"24898:22:66","nodeType":"YulFunctionCall","src":"24898:22:66"}],"functionName":{"name":"mstore","nativeSrc":"24871:6:66","nodeType":"YulIdentifier","src":"24871:6:66"},"nativeSrc":"24871:50:66","nodeType":"YulFunctionCall","src":"24871:50:66"},"nativeSrc":"24871:50:66","nodeType":"YulExpressionStatement","src":"24871:50:66"},{"nativeSrc":"24930:41:66","nodeType":"YulAssignment","src":"24930:41:66","value":{"arguments":[{"name":"value1","nativeSrc":"24956:6:66","nodeType":"YulIdentifier","src":"24956:6:66"},{"name":"tail_1","nativeSrc":"24964:6:66","nodeType":"YulIdentifier","src":"24964:6:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"24938:17:66","nodeType":"YulIdentifier","src":"24938:17:66"},"nativeSrc":"24938:33:66","nodeType":"YulFunctionCall","src":"24938:33:66"},"variableNames":[{"name":"tail","nativeSrc":"24930:4:66","nodeType":"YulIdentifier","src":"24930:4:66"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"24598:379:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24724:9:66","nodeType":"YulTypedName","src":"24724:9:66","type":""},{"name":"value1","nativeSrc":"24735:6:66","nodeType":"YulTypedName","src":"24735:6:66","type":""},{"name":"value0","nativeSrc":"24743:6:66","nodeType":"YulTypedName","src":"24743:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"24754:4:66","nodeType":"YulTypedName","src":"24754:4:66","type":""}],"src":"24598:379:66"},{"body":{"nativeSrc":"25060:167:66","nodeType":"YulBlock","src":"25060:167:66","statements":[{"body":{"nativeSrc":"25106:16:66","nodeType":"YulBlock","src":"25106:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"25115:1:66","nodeType":"YulLiteral","src":"25115:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"25118:1:66","nodeType":"YulLiteral","src":"25118:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"25108:6:66","nodeType":"YulIdentifier","src":"25108:6:66"},"nativeSrc":"25108:12:66","nodeType":"YulFunctionCall","src":"25108:12:66"},"nativeSrc":"25108:12:66","nodeType":"YulExpressionStatement","src":"25108:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"25081:7:66","nodeType":"YulIdentifier","src":"25081:7:66"},{"name":"headStart","nativeSrc":"25090:9:66","nodeType":"YulIdentifier","src":"25090:9:66"}],"functionName":{"name":"sub","nativeSrc":"25077:3:66","nodeType":"YulIdentifier","src":"25077:3:66"},"nativeSrc":"25077:23:66","nodeType":"YulFunctionCall","src":"25077:23:66"},{"kind":"number","nativeSrc":"25102:2:66","nodeType":"YulLiteral","src":"25102:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"25073:3:66","nodeType":"YulIdentifier","src":"25073:3:66"},"nativeSrc":"25073:32:66","nodeType":"YulFunctionCall","src":"25073:32:66"},"nativeSrc":"25070:52:66","nodeType":"YulIf","src":"25070:52:66"},{"nativeSrc":"25131:29:66","nodeType":"YulVariableDeclaration","src":"25131:29:66","value":{"arguments":[{"name":"headStart","nativeSrc":"25150:9:66","nodeType":"YulIdentifier","src":"25150:9:66"}],"functionName":{"name":"mload","nativeSrc":"25144:5:66","nodeType":"YulIdentifier","src":"25144:5:66"},"nativeSrc":"25144:16:66","nodeType":"YulFunctionCall","src":"25144:16:66"},"variables":[{"name":"value","nativeSrc":"25135:5:66","nodeType":"YulTypedName","src":"25135:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"25191:5:66","nodeType":"YulIdentifier","src":"25191:5:66"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"25169:21:66","nodeType":"YulIdentifier","src":"25169:21:66"},"nativeSrc":"25169:28:66","nodeType":"YulFunctionCall","src":"25169:28:66"},"nativeSrc":"25169:28:66","nodeType":"YulExpressionStatement","src":"25169:28:66"},{"nativeSrc":"25206:15:66","nodeType":"YulAssignment","src":"25206:15:66","value":{"name":"value","nativeSrc":"25216:5:66","nodeType":"YulIdentifier","src":"25216:5:66"},"variableNames":[{"name":"value0","nativeSrc":"25206:6:66","nodeType":"YulIdentifier","src":"25206:6:66"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"24982:245:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"25026:9:66","nodeType":"YulTypedName","src":"25026:9:66","type":""},{"name":"dataEnd","nativeSrc":"25037:7:66","nodeType":"YulTypedName","src":"25037:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"25049:6:66","nodeType":"YulTypedName","src":"25049:6:66","type":""}],"src":"24982:245:66"},{"body":{"nativeSrc":"25423:696:66","nodeType":"YulBlock","src":"25423:696:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"25440:9:66","nodeType":"YulIdentifier","src":"25440:9:66"},{"kind":"number","nativeSrc":"25451:2:66","nodeType":"YulLiteral","src":"25451:2:66","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"25433:6:66","nodeType":"YulIdentifier","src":"25433:6:66"},"nativeSrc":"25433:21:66","nodeType":"YulFunctionCall","src":"25433:21:66"},"nativeSrc":"25433:21:66","nodeType":"YulExpressionStatement","src":"25433:21:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25474:9:66","nodeType":"YulIdentifier","src":"25474:9:66"},{"kind":"number","nativeSrc":"25485:2:66","nodeType":"YulLiteral","src":"25485:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"25470:3:66","nodeType":"YulIdentifier","src":"25470:3:66"},"nativeSrc":"25470:18:66","nodeType":"YulFunctionCall","src":"25470:18:66"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"25500:6:66","nodeType":"YulIdentifier","src":"25500:6:66"}],"functionName":{"name":"mload","nativeSrc":"25494:5:66","nodeType":"YulIdentifier","src":"25494:5:66"},"nativeSrc":"25494:13:66","nodeType":"YulFunctionCall","src":"25494:13:66"},{"kind":"number","nativeSrc":"25509:10:66","nodeType":"YulLiteral","src":"25509:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"25490:3:66","nodeType":"YulIdentifier","src":"25490:3:66"},"nativeSrc":"25490:30:66","nodeType":"YulFunctionCall","src":"25490:30:66"}],"functionName":{"name":"mstore","nativeSrc":"25463:6:66","nodeType":"YulIdentifier","src":"25463:6:66"},"nativeSrc":"25463:58:66","nodeType":"YulFunctionCall","src":"25463:58:66"},"nativeSrc":"25463:58:66","nodeType":"YulExpressionStatement","src":"25463:58:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25541:9:66","nodeType":"YulIdentifier","src":"25541:9:66"},{"kind":"number","nativeSrc":"25552:2:66","nodeType":"YulLiteral","src":"25552:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"25537:3:66","nodeType":"YulIdentifier","src":"25537:3:66"},"nativeSrc":"25537:18:66","nodeType":"YulFunctionCall","src":"25537:18:66"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"25567:6:66","nodeType":"YulIdentifier","src":"25567:6:66"},{"kind":"number","nativeSrc":"25575:4:66","nodeType":"YulLiteral","src":"25575:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"25563:3:66","nodeType":"YulIdentifier","src":"25563:3:66"},"nativeSrc":"25563:17:66","nodeType":"YulFunctionCall","src":"25563:17:66"}],"functionName":{"name":"mload","nativeSrc":"25557:5:66","nodeType":"YulIdentifier","src":"25557:5:66"},"nativeSrc":"25557:24:66","nodeType":"YulFunctionCall","src":"25557:24:66"}],"functionName":{"name":"mstore","nativeSrc":"25530:6:66","nodeType":"YulIdentifier","src":"25530:6:66"},"nativeSrc":"25530:52:66","nodeType":"YulFunctionCall","src":"25530:52:66"},"nativeSrc":"25530:52:66","nodeType":"YulExpressionStatement","src":"25530:52:66"},{"nativeSrc":"25591:42:66","nodeType":"YulVariableDeclaration","src":"25591:42:66","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"25621:6:66","nodeType":"YulIdentifier","src":"25621:6:66"},{"kind":"number","nativeSrc":"25629:2:66","nodeType":"YulLiteral","src":"25629:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"25617:3:66","nodeType":"YulIdentifier","src":"25617:3:66"},"nativeSrc":"25617:15:66","nodeType":"YulFunctionCall","src":"25617:15:66"}],"functionName":{"name":"mload","nativeSrc":"25611:5:66","nodeType":"YulIdentifier","src":"25611:5:66"},"nativeSrc":"25611:22:66","nodeType":"YulFunctionCall","src":"25611:22:66"},"variables":[{"name":"memberValue0","nativeSrc":"25595:12:66","nodeType":"YulTypedName","src":"25595:12:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25653:9:66","nodeType":"YulIdentifier","src":"25653:9:66"},{"kind":"number","nativeSrc":"25664:3:66","nodeType":"YulLiteral","src":"25664:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"25649:3:66","nodeType":"YulIdentifier","src":"25649:3:66"},"nativeSrc":"25649:19:66","nodeType":"YulFunctionCall","src":"25649:19:66"},{"kind":"number","nativeSrc":"25670:4:66","nodeType":"YulLiteral","src":"25670:4:66","type":"","value":"0xa0"}],"functionName":{"name":"mstore","nativeSrc":"25642:6:66","nodeType":"YulIdentifier","src":"25642:6:66"},"nativeSrc":"25642:33:66","nodeType":"YulFunctionCall","src":"25642:33:66"},"nativeSrc":"25642:33:66","nodeType":"YulExpressionStatement","src":"25642:33:66"},{"nativeSrc":"25684:66:66","nodeType":"YulVariableDeclaration","src":"25684:66:66","value":{"arguments":[{"name":"memberValue0","nativeSrc":"25716:12:66","nodeType":"YulIdentifier","src":"25716:12:66"},{"arguments":[{"name":"headStart","nativeSrc":"25734:9:66","nodeType":"YulIdentifier","src":"25734:9:66"},{"kind":"number","nativeSrc":"25745:3:66","nodeType":"YulLiteral","src":"25745:3:66","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"25730:3:66","nodeType":"YulIdentifier","src":"25730:3:66"},"nativeSrc":"25730:19:66","nodeType":"YulFunctionCall","src":"25730:19:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"25698:17:66","nodeType":"YulIdentifier","src":"25698:17:66"},"nativeSrc":"25698:52:66","nodeType":"YulFunctionCall","src":"25698:52:66"},"variables":[{"name":"tail_1","nativeSrc":"25688:6:66","nodeType":"YulTypedName","src":"25688:6:66","type":""}]},{"nativeSrc":"25759:44:66","nodeType":"YulVariableDeclaration","src":"25759:44:66","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"25791:6:66","nodeType":"YulIdentifier","src":"25791:6:66"},{"kind":"number","nativeSrc":"25799:2:66","nodeType":"YulLiteral","src":"25799:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"25787:3:66","nodeType":"YulIdentifier","src":"25787:3:66"},"nativeSrc":"25787:15:66","nodeType":"YulFunctionCall","src":"25787:15:66"}],"functionName":{"name":"mload","nativeSrc":"25781:5:66","nodeType":"YulIdentifier","src":"25781:5:66"},"nativeSrc":"25781:22:66","nodeType":"YulFunctionCall","src":"25781:22:66"},"variables":[{"name":"memberValue0_1","nativeSrc":"25763:14:66","nodeType":"YulTypedName","src":"25763:14:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25823:9:66","nodeType":"YulIdentifier","src":"25823:9:66"},{"kind":"number","nativeSrc":"25834:4:66","nodeType":"YulLiteral","src":"25834:4:66","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"25819:3:66","nodeType":"YulIdentifier","src":"25819:3:66"},"nativeSrc":"25819:20:66","nodeType":"YulFunctionCall","src":"25819:20:66"},{"arguments":[{"arguments":[{"name":"tail_1","nativeSrc":"25849:6:66","nodeType":"YulIdentifier","src":"25849:6:66"},{"name":"headStart","nativeSrc":"25857:9:66","nodeType":"YulIdentifier","src":"25857:9:66"}],"functionName":{"name":"sub","nativeSrc":"25845:3:66","nodeType":"YulIdentifier","src":"25845:3:66"},"nativeSrc":"25845:22:66","nodeType":"YulFunctionCall","src":"25845:22:66"},{"arguments":[{"kind":"number","nativeSrc":"25873:2:66","nodeType":"YulLiteral","src":"25873:2:66","type":"","value":"63"}],"functionName":{"name":"not","nativeSrc":"25869:3:66","nodeType":"YulIdentifier","src":"25869:3:66"},"nativeSrc":"25869:7:66","nodeType":"YulFunctionCall","src":"25869:7:66"}],"functionName":{"name":"add","nativeSrc":"25841:3:66","nodeType":"YulIdentifier","src":"25841:3:66"},"nativeSrc":"25841:36:66","nodeType":"YulFunctionCall","src":"25841:36:66"}],"functionName":{"name":"mstore","nativeSrc":"25812:6:66","nodeType":"YulIdentifier","src":"25812:6:66"},"nativeSrc":"25812:66:66","nodeType":"YulFunctionCall","src":"25812:66:66"},"nativeSrc":"25812:66:66","nodeType":"YulExpressionStatement","src":"25812:66:66"},{"nativeSrc":"25887:55:66","nodeType":"YulVariableDeclaration","src":"25887:55:66","value":{"arguments":[{"name":"memberValue0_1","nativeSrc":"25919:14:66","nodeType":"YulIdentifier","src":"25919:14:66"},{"name":"tail_1","nativeSrc":"25935:6:66","nodeType":"YulIdentifier","src":"25935:6:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"25901:17:66","nodeType":"YulIdentifier","src":"25901:17:66"},"nativeSrc":"25901:41:66","nodeType":"YulFunctionCall","src":"25901:41:66"},"variables":[{"name":"tail_2","nativeSrc":"25891:6:66","nodeType":"YulTypedName","src":"25891:6:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25962:9:66","nodeType":"YulIdentifier","src":"25962:9:66"},{"kind":"number","nativeSrc":"25973:3:66","nodeType":"YulLiteral","src":"25973:3:66","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"25958:3:66","nodeType":"YulIdentifier","src":"25958:3:66"},"nativeSrc":"25958:19:66","nodeType":"YulFunctionCall","src":"25958:19:66"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"26003:6:66","nodeType":"YulIdentifier","src":"26003:6:66"},{"kind":"number","nativeSrc":"26011:3:66","nodeType":"YulLiteral","src":"26011:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"25999:3:66","nodeType":"YulIdentifier","src":"25999:3:66"},"nativeSrc":"25999:16:66","nodeType":"YulFunctionCall","src":"25999:16:66"}],"functionName":{"name":"mload","nativeSrc":"25993:5:66","nodeType":"YulIdentifier","src":"25993:5:66"},"nativeSrc":"25993:23:66","nodeType":"YulFunctionCall","src":"25993:23:66"}],"functionName":{"name":"iszero","nativeSrc":"25986:6:66","nodeType":"YulIdentifier","src":"25986:6:66"},"nativeSrc":"25986:31:66","nodeType":"YulFunctionCall","src":"25986:31:66"}],"functionName":{"name":"iszero","nativeSrc":"25979:6:66","nodeType":"YulIdentifier","src":"25979:6:66"},"nativeSrc":"25979:39:66","nodeType":"YulFunctionCall","src":"25979:39:66"}],"functionName":{"name":"mstore","nativeSrc":"25951:6:66","nodeType":"YulIdentifier","src":"25951:6:66"},"nativeSrc":"25951:68:66","nodeType":"YulFunctionCall","src":"25951:68:66"},"nativeSrc":"25951:68:66","nodeType":"YulExpressionStatement","src":"25951:68:66"},{"nativeSrc":"26028:14:66","nodeType":"YulAssignment","src":"26028:14:66","value":{"name":"tail_2","nativeSrc":"26036:6:66","nodeType":"YulIdentifier","src":"26036:6:66"},"variableNames":[{"name":"tail","nativeSrc":"26028:4:66","nodeType":"YulIdentifier","src":"26028:4:66"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"26062:9:66","nodeType":"YulIdentifier","src":"26062:9:66"},{"kind":"number","nativeSrc":"26073:4:66","nodeType":"YulLiteral","src":"26073:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"26058:3:66","nodeType":"YulIdentifier","src":"26058:3:66"},"nativeSrc":"26058:20:66","nodeType":"YulFunctionCall","src":"26058:20:66"},{"arguments":[{"name":"value1","nativeSrc":"26084:6:66","nodeType":"YulIdentifier","src":"26084:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"26100:3:66","nodeType":"YulLiteral","src":"26100:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"26105:1:66","nodeType":"YulLiteral","src":"26105:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"26096:3:66","nodeType":"YulIdentifier","src":"26096:3:66"},"nativeSrc":"26096:11:66","nodeType":"YulFunctionCall","src":"26096:11:66"},{"kind":"number","nativeSrc":"26109:1:66","nodeType":"YulLiteral","src":"26109:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"26092:3:66","nodeType":"YulIdentifier","src":"26092:3:66"},"nativeSrc":"26092:19:66","nodeType":"YulFunctionCall","src":"26092:19:66"}],"functionName":{"name":"and","nativeSrc":"26080:3:66","nodeType":"YulIdentifier","src":"26080:3:66"},"nativeSrc":"26080:32:66","nodeType":"YulFunctionCall","src":"26080:32:66"}],"functionName":{"name":"mstore","nativeSrc":"26051:6:66","nodeType":"YulIdentifier","src":"26051:6:66"},"nativeSrc":"26051:62:66","nodeType":"YulFunctionCall","src":"26051:62:66"},"nativeSrc":"26051:62:66","nodeType":"YulExpressionStatement","src":"26051:62:66"}]},"name":"abi_encode_tuple_t_struct$_MessagingParams_$20_memory_ptr_t_address__to_t_struct$_MessagingParams_$20_memory_ptr_t_address__fromStack_reversed","nativeSrc":"25232:887:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"25384:9:66","nodeType":"YulTypedName","src":"25384:9:66","type":""},{"name":"value1","nativeSrc":"25395:6:66","nodeType":"YulTypedName","src":"25395:6:66","type":""},{"name":"value0","nativeSrc":"25403:6:66","nodeType":"YulTypedName","src":"25403:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"25414:4:66","nodeType":"YulTypedName","src":"25414:4:66","type":""}],"src":"25232:887:66"},{"body":{"nativeSrc":"26204:308:66","nodeType":"YulBlock","src":"26204:308:66","statements":[{"body":{"nativeSrc":"26248:16:66","nodeType":"YulBlock","src":"26248:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"26257:1:66","nodeType":"YulLiteral","src":"26257:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"26260:1:66","nodeType":"YulLiteral","src":"26260:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"26250:6:66","nodeType":"YulIdentifier","src":"26250:6:66"},"nativeSrc":"26250:12:66","nodeType":"YulFunctionCall","src":"26250:12:66"},"nativeSrc":"26250:12:66","nodeType":"YulExpressionStatement","src":"26250:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"26225:3:66","nodeType":"YulIdentifier","src":"26225:3:66"},{"name":"headStart","nativeSrc":"26230:9:66","nodeType":"YulIdentifier","src":"26230:9:66"}],"functionName":{"name":"sub","nativeSrc":"26221:3:66","nodeType":"YulIdentifier","src":"26221:3:66"},"nativeSrc":"26221:19:66","nodeType":"YulFunctionCall","src":"26221:19:66"},{"kind":"number","nativeSrc":"26242:4:66","nodeType":"YulLiteral","src":"26242:4:66","type":"","value":"0x40"}],"functionName":{"name":"slt","nativeSrc":"26217:3:66","nodeType":"YulIdentifier","src":"26217:3:66"},"nativeSrc":"26217:30:66","nodeType":"YulFunctionCall","src":"26217:30:66"},"nativeSrc":"26214:50:66","nodeType":"YulIf","src":"26214:50:66"},{"nativeSrc":"26273:31:66","nodeType":"YulAssignment","src":"26273:31:66","value":{"arguments":[],"functionName":{"name":"allocate_memory_3874","nativeSrc":"26282:20:66","nodeType":"YulIdentifier","src":"26282:20:66"},"nativeSrc":"26282:22:66","nodeType":"YulFunctionCall","src":"26282:22:66"},"variableNames":[{"name":"value","nativeSrc":"26273:5:66","nodeType":"YulIdentifier","src":"26273:5:66"}]},{"nativeSrc":"26313:16:66","nodeType":"YulVariableDeclaration","src":"26313:16:66","value":{"kind":"number","nativeSrc":"26328:1:66","nodeType":"YulLiteral","src":"26328:1:66","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"26317:7:66","nodeType":"YulTypedName","src":"26317:7:66","type":""}]},{"nativeSrc":"26338:27:66","nodeType":"YulAssignment","src":"26338:27:66","value":{"arguments":[{"name":"headStart","nativeSrc":"26355:9:66","nodeType":"YulIdentifier","src":"26355:9:66"}],"functionName":{"name":"mload","nativeSrc":"26349:5:66","nodeType":"YulIdentifier","src":"26349:5:66"},"nativeSrc":"26349:16:66","nodeType":"YulFunctionCall","src":"26349:16:66"},"variableNames":[{"name":"value_1","nativeSrc":"26338:7:66","nodeType":"YulIdentifier","src":"26338:7:66"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"26381:5:66","nodeType":"YulIdentifier","src":"26381:5:66"},{"name":"value_1","nativeSrc":"26388:7:66","nodeType":"YulIdentifier","src":"26388:7:66"}],"functionName":{"name":"mstore","nativeSrc":"26374:6:66","nodeType":"YulIdentifier","src":"26374:6:66"},"nativeSrc":"26374:22:66","nodeType":"YulFunctionCall","src":"26374:22:66"},"nativeSrc":"26374:22:66","nodeType":"YulExpressionStatement","src":"26374:22:66"},{"nativeSrc":"26405:16:66","nodeType":"YulVariableDeclaration","src":"26405:16:66","value":{"kind":"number","nativeSrc":"26420:1:66","nodeType":"YulLiteral","src":"26420:1:66","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"26409:7:66","nodeType":"YulTypedName","src":"26409:7:66","type":""}]},{"nativeSrc":"26430:36:66","nodeType":"YulAssignment","src":"26430:36:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"26451:9:66","nodeType":"YulIdentifier","src":"26451:9:66"},{"kind":"number","nativeSrc":"26462:2:66","nodeType":"YulLiteral","src":"26462:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"26447:3:66","nodeType":"YulIdentifier","src":"26447:3:66"},"nativeSrc":"26447:18:66","nodeType":"YulFunctionCall","src":"26447:18:66"}],"functionName":{"name":"mload","nativeSrc":"26441:5:66","nodeType":"YulIdentifier","src":"26441:5:66"},"nativeSrc":"26441:25:66","nodeType":"YulFunctionCall","src":"26441:25:66"},"variableNames":[{"name":"value_2","nativeSrc":"26430:7:66","nodeType":"YulIdentifier","src":"26430:7:66"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"26486:5:66","nodeType":"YulIdentifier","src":"26486:5:66"},{"kind":"number","nativeSrc":"26493:2:66","nodeType":"YulLiteral","src":"26493:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"26482:3:66","nodeType":"YulIdentifier","src":"26482:3:66"},"nativeSrc":"26482:14:66","nodeType":"YulFunctionCall","src":"26482:14:66"},{"name":"value_2","nativeSrc":"26498:7:66","nodeType":"YulIdentifier","src":"26498:7:66"}],"functionName":{"name":"mstore","nativeSrc":"26475:6:66","nodeType":"YulIdentifier","src":"26475:6:66"},"nativeSrc":"26475:31:66","nodeType":"YulFunctionCall","src":"26475:31:66"},"nativeSrc":"26475:31:66","nodeType":"YulExpressionStatement","src":"26475:31:66"}]},"name":"abi_decode_struct_MessagingFee_fromMemory","nativeSrc":"26124:388:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"26175:9:66","nodeType":"YulTypedName","src":"26175:9:66","type":""},{"name":"end","nativeSrc":"26186:3:66","nodeType":"YulTypedName","src":"26186:3:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"26194:5:66","nodeType":"YulTypedName","src":"26194:5:66","type":""}],"src":"26124:388:66"},{"body":{"nativeSrc":"26626:148:66","nodeType":"YulBlock","src":"26626:148:66","statements":[{"body":{"nativeSrc":"26672:16:66","nodeType":"YulBlock","src":"26672:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"26681:1:66","nodeType":"YulLiteral","src":"26681:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"26684:1:66","nodeType":"YulLiteral","src":"26684:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"26674:6:66","nodeType":"YulIdentifier","src":"26674:6:66"},"nativeSrc":"26674:12:66","nodeType":"YulFunctionCall","src":"26674:12:66"},"nativeSrc":"26674:12:66","nodeType":"YulExpressionStatement","src":"26674:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"26647:7:66","nodeType":"YulIdentifier","src":"26647:7:66"},{"name":"headStart","nativeSrc":"26656:9:66","nodeType":"YulIdentifier","src":"26656:9:66"}],"functionName":{"name":"sub","nativeSrc":"26643:3:66","nodeType":"YulIdentifier","src":"26643:3:66"},"nativeSrc":"26643:23:66","nodeType":"YulFunctionCall","src":"26643:23:66"},{"kind":"number","nativeSrc":"26668:2:66","nodeType":"YulLiteral","src":"26668:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"26639:3:66","nodeType":"YulIdentifier","src":"26639:3:66"},"nativeSrc":"26639:32:66","nodeType":"YulFunctionCall","src":"26639:32:66"},"nativeSrc":"26636:52:66","nodeType":"YulIf","src":"26636:52:66"},{"nativeSrc":"26697:71:66","nodeType":"YulAssignment","src":"26697:71:66","value":{"arguments":[{"name":"headStart","nativeSrc":"26749:9:66","nodeType":"YulIdentifier","src":"26749:9:66"},{"name":"dataEnd","nativeSrc":"26760:7:66","nodeType":"YulIdentifier","src":"26760:7:66"}],"functionName":{"name":"abi_decode_struct_MessagingFee_fromMemory","nativeSrc":"26707:41:66","nodeType":"YulIdentifier","src":"26707:41:66"},"nativeSrc":"26707:61:66","nodeType":"YulFunctionCall","src":"26707:61:66"},"variableNames":[{"name":"value0","nativeSrc":"26697:6:66","nodeType":"YulIdentifier","src":"26697:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr_fromMemory","nativeSrc":"26517:257:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"26592:9:66","nodeType":"YulTypedName","src":"26592:9:66","type":""},{"name":"dataEnd","nativeSrc":"26603:7:66","nodeType":"YulTypedName","src":"26603:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"26615:6:66","nodeType":"YulTypedName","src":"26615:6:66","type":""}],"src":"26517:257:66"},{"body":{"nativeSrc":"26834:65:66","nodeType":"YulBlock","src":"26834:65:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"26851:1:66","nodeType":"YulLiteral","src":"26851:1:66","type":"","value":"0"},{"name":"ptr","nativeSrc":"26854:3:66","nodeType":"YulIdentifier","src":"26854:3:66"}],"functionName":{"name":"mstore","nativeSrc":"26844:6:66","nodeType":"YulIdentifier","src":"26844:6:66"},"nativeSrc":"26844:14:66","nodeType":"YulFunctionCall","src":"26844:14:66"},"nativeSrc":"26844:14:66","nodeType":"YulExpressionStatement","src":"26844:14:66"},{"nativeSrc":"26867:26:66","nodeType":"YulAssignment","src":"26867:26:66","value":{"arguments":[{"kind":"number","nativeSrc":"26885:1:66","nodeType":"YulLiteral","src":"26885:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"26888:4:66","nodeType":"YulLiteral","src":"26888:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"26875:9:66","nodeType":"YulIdentifier","src":"26875:9:66"},"nativeSrc":"26875:18:66","nodeType":"YulFunctionCall","src":"26875:18:66"},"variableNames":[{"name":"data","nativeSrc":"26867:4:66","nodeType":"YulIdentifier","src":"26867:4:66"}]}]},"name":"array_dataslot_bytes_storage","nativeSrc":"26779:120:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"26817:3:66","nodeType":"YulTypedName","src":"26817:3:66","type":""}],"returnVariables":[{"name":"data","nativeSrc":"26825:4:66","nodeType":"YulTypedName","src":"26825:4:66","type":""}],"src":"26779:120:66"},{"body":{"nativeSrc":"26984:437:66","nodeType":"YulBlock","src":"26984:437:66","statements":[{"body":{"nativeSrc":"27017:398:66","nodeType":"YulBlock","src":"27017:398:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"27038:1:66","nodeType":"YulLiteral","src":"27038:1:66","type":"","value":"0"},{"name":"array","nativeSrc":"27041:5:66","nodeType":"YulIdentifier","src":"27041:5:66"}],"functionName":{"name":"mstore","nativeSrc":"27031:6:66","nodeType":"YulIdentifier","src":"27031:6:66"},"nativeSrc":"27031:16:66","nodeType":"YulFunctionCall","src":"27031:16:66"},"nativeSrc":"27031:16:66","nodeType":"YulExpressionStatement","src":"27031:16:66"},{"nativeSrc":"27060:30:66","nodeType":"YulVariableDeclaration","src":"27060:30:66","value":{"arguments":[{"kind":"number","nativeSrc":"27082:1:66","nodeType":"YulLiteral","src":"27082:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"27085:4:66","nodeType":"YulLiteral","src":"27085:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"27072:9:66","nodeType":"YulIdentifier","src":"27072:9:66"},"nativeSrc":"27072:18:66","nodeType":"YulFunctionCall","src":"27072:18:66"},"variables":[{"name":"data","nativeSrc":"27064:4:66","nodeType":"YulTypedName","src":"27064:4:66","type":""}]},{"nativeSrc":"27103:57:66","nodeType":"YulVariableDeclaration","src":"27103:57:66","value":{"arguments":[{"name":"data","nativeSrc":"27126:4:66","nodeType":"YulIdentifier","src":"27126:4:66"},{"arguments":[{"kind":"number","nativeSrc":"27136:1:66","nodeType":"YulLiteral","src":"27136:1:66","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"27143:10:66","nodeType":"YulIdentifier","src":"27143:10:66"},{"kind":"number","nativeSrc":"27155:2:66","nodeType":"YulLiteral","src":"27155:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"27139:3:66","nodeType":"YulIdentifier","src":"27139:3:66"},"nativeSrc":"27139:19:66","nodeType":"YulFunctionCall","src":"27139:19:66"}],"functionName":{"name":"shr","nativeSrc":"27132:3:66","nodeType":"YulIdentifier","src":"27132:3:66"},"nativeSrc":"27132:27:66","nodeType":"YulFunctionCall","src":"27132:27:66"}],"functionName":{"name":"add","nativeSrc":"27122:3:66","nodeType":"YulIdentifier","src":"27122:3:66"},"nativeSrc":"27122:38:66","nodeType":"YulFunctionCall","src":"27122:38:66"},"variables":[{"name":"deleteStart","nativeSrc":"27107:11:66","nodeType":"YulTypedName","src":"27107:11:66","type":""}]},{"body":{"nativeSrc":"27197:23:66","nodeType":"YulBlock","src":"27197:23:66","statements":[{"nativeSrc":"27199:19:66","nodeType":"YulAssignment","src":"27199:19:66","value":{"name":"data","nativeSrc":"27214:4:66","nodeType":"YulIdentifier","src":"27214:4:66"},"variableNames":[{"name":"deleteStart","nativeSrc":"27199:11:66","nodeType":"YulIdentifier","src":"27199:11:66"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"27179:10:66","nodeType":"YulIdentifier","src":"27179:10:66"},{"kind":"number","nativeSrc":"27191:4:66","nodeType":"YulLiteral","src":"27191:4:66","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"27176:2:66","nodeType":"YulIdentifier","src":"27176:2:66"},"nativeSrc":"27176:20:66","nodeType":"YulFunctionCall","src":"27176:20:66"},"nativeSrc":"27173:47:66","nodeType":"YulIf","src":"27173:47:66"},{"nativeSrc":"27233:41:66","nodeType":"YulVariableDeclaration","src":"27233:41:66","value":{"arguments":[{"name":"data","nativeSrc":"27247:4:66","nodeType":"YulIdentifier","src":"27247:4:66"},{"arguments":[{"kind":"number","nativeSrc":"27257:1:66","nodeType":"YulLiteral","src":"27257:1:66","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"27264:3:66","nodeType":"YulIdentifier","src":"27264:3:66"},{"kind":"number","nativeSrc":"27269:2:66","nodeType":"YulLiteral","src":"27269:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"27260:3:66","nodeType":"YulIdentifier","src":"27260:3:66"},"nativeSrc":"27260:12:66","nodeType":"YulFunctionCall","src":"27260:12:66"}],"functionName":{"name":"shr","nativeSrc":"27253:3:66","nodeType":"YulIdentifier","src":"27253:3:66"},"nativeSrc":"27253:20:66","nodeType":"YulFunctionCall","src":"27253:20:66"}],"functionName":{"name":"add","nativeSrc":"27243:3:66","nodeType":"YulIdentifier","src":"27243:3:66"},"nativeSrc":"27243:31:66","nodeType":"YulFunctionCall","src":"27243:31:66"},"variables":[{"name":"_1","nativeSrc":"27237:2:66","nodeType":"YulTypedName","src":"27237:2:66","type":""}]},{"nativeSrc":"27287:24:66","nodeType":"YulVariableDeclaration","src":"27287:24:66","value":{"name":"deleteStart","nativeSrc":"27300:11:66","nodeType":"YulIdentifier","src":"27300:11:66"},"variables":[{"name":"start","nativeSrc":"27291:5:66","nodeType":"YulTypedName","src":"27291:5:66","type":""}]},{"body":{"nativeSrc":"27385:20:66","nodeType":"YulBlock","src":"27385:20:66","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"27394:5:66","nodeType":"YulIdentifier","src":"27394:5:66"},{"kind":"number","nativeSrc":"27401:1:66","nodeType":"YulLiteral","src":"27401:1:66","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"27387:6:66","nodeType":"YulIdentifier","src":"27387:6:66"},"nativeSrc":"27387:16:66","nodeType":"YulFunctionCall","src":"27387:16:66"},"nativeSrc":"27387:16:66","nodeType":"YulExpressionStatement","src":"27387:16:66"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"27335:5:66","nodeType":"YulIdentifier","src":"27335:5:66"},{"name":"_1","nativeSrc":"27342:2:66","nodeType":"YulIdentifier","src":"27342:2:66"}],"functionName":{"name":"lt","nativeSrc":"27332:2:66","nodeType":"YulIdentifier","src":"27332:2:66"},"nativeSrc":"27332:13:66","nodeType":"YulFunctionCall","src":"27332:13:66"},"nativeSrc":"27324:81:66","nodeType":"YulForLoop","post":{"nativeSrc":"27346:26:66","nodeType":"YulBlock","src":"27346:26:66","statements":[{"nativeSrc":"27348:22:66","nodeType":"YulAssignment","src":"27348:22:66","value":{"arguments":[{"name":"start","nativeSrc":"27361:5:66","nodeType":"YulIdentifier","src":"27361:5:66"},{"kind":"number","nativeSrc":"27368:1:66","nodeType":"YulLiteral","src":"27368:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"27357:3:66","nodeType":"YulIdentifier","src":"27357:3:66"},"nativeSrc":"27357:13:66","nodeType":"YulFunctionCall","src":"27357:13:66"},"variableNames":[{"name":"start","nativeSrc":"27348:5:66","nodeType":"YulIdentifier","src":"27348:5:66"}]}]},"pre":{"nativeSrc":"27328:3:66","nodeType":"YulBlock","src":"27328:3:66","statements":[]},"src":"27324:81:66"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"27000:3:66","nodeType":"YulIdentifier","src":"27000:3:66"},{"kind":"number","nativeSrc":"27005:2:66","nodeType":"YulLiteral","src":"27005:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"26997:2:66","nodeType":"YulIdentifier","src":"26997:2:66"},"nativeSrc":"26997:11:66","nodeType":"YulFunctionCall","src":"26997:11:66"},"nativeSrc":"26994:421:66","nodeType":"YulIf","src":"26994:421:66"}]},"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"26904:517:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"26956:5:66","nodeType":"YulTypedName","src":"26956:5:66","type":""},{"name":"len","nativeSrc":"26963:3:66","nodeType":"YulTypedName","src":"26963:3:66","type":""},{"name":"startIndex","nativeSrc":"26968:10:66","nodeType":"YulTypedName","src":"26968:10:66","type":""}],"src":"26904:517:66"},{"body":{"nativeSrc":"27511:81:66","nodeType":"YulBlock","src":"27511:81:66","statements":[{"nativeSrc":"27521:65:66","nodeType":"YulAssignment","src":"27521:65:66","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"27536:4:66","nodeType":"YulIdentifier","src":"27536:4:66"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"27554:1:66","nodeType":"YulLiteral","src":"27554:1:66","type":"","value":"3"},{"name":"len","nativeSrc":"27557:3:66","nodeType":"YulIdentifier","src":"27557:3:66"}],"functionName":{"name":"shl","nativeSrc":"27550:3:66","nodeType":"YulIdentifier","src":"27550:3:66"},"nativeSrc":"27550:11:66","nodeType":"YulFunctionCall","src":"27550:11:66"},{"arguments":[{"kind":"number","nativeSrc":"27567:1:66","nodeType":"YulLiteral","src":"27567:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"27563:3:66","nodeType":"YulIdentifier","src":"27563:3:66"},"nativeSrc":"27563:6:66","nodeType":"YulFunctionCall","src":"27563:6:66"}],"functionName":{"name":"shr","nativeSrc":"27546:3:66","nodeType":"YulIdentifier","src":"27546:3:66"},"nativeSrc":"27546:24:66","nodeType":"YulFunctionCall","src":"27546:24:66"}],"functionName":{"name":"not","nativeSrc":"27542:3:66","nodeType":"YulIdentifier","src":"27542:3:66"},"nativeSrc":"27542:29:66","nodeType":"YulFunctionCall","src":"27542:29:66"}],"functionName":{"name":"and","nativeSrc":"27532:3:66","nodeType":"YulIdentifier","src":"27532:3:66"},"nativeSrc":"27532:40:66","nodeType":"YulFunctionCall","src":"27532:40:66"},{"arguments":[{"kind":"number","nativeSrc":"27578:1:66","nodeType":"YulLiteral","src":"27578:1:66","type":"","value":"1"},{"name":"len","nativeSrc":"27581:3:66","nodeType":"YulIdentifier","src":"27581:3:66"}],"functionName":{"name":"shl","nativeSrc":"27574:3:66","nodeType":"YulIdentifier","src":"27574:3:66"},"nativeSrc":"27574:11:66","nodeType":"YulFunctionCall","src":"27574:11:66"}],"functionName":{"name":"or","nativeSrc":"27529:2:66","nodeType":"YulIdentifier","src":"27529:2:66"},"nativeSrc":"27529:57:66","nodeType":"YulFunctionCall","src":"27529:57:66"},"variableNames":[{"name":"used","nativeSrc":"27521:4:66","nodeType":"YulIdentifier","src":"27521:4:66"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"27426:166:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"27488:4:66","nodeType":"YulTypedName","src":"27488:4:66","type":""},{"name":"len","nativeSrc":"27494:3:66","nodeType":"YulTypedName","src":"27494:3:66","type":""}],"returnVariables":[{"name":"used","nativeSrc":"27502:4:66","nodeType":"YulTypedName","src":"27502:4:66","type":""}],"src":"27426:166:66"},{"body":{"nativeSrc":"27691:1201:66","nodeType":"YulBlock","src":"27691:1201:66","statements":[{"nativeSrc":"27701:24:66","nodeType":"YulVariableDeclaration","src":"27701:24:66","value":{"arguments":[{"name":"src","nativeSrc":"27721:3:66","nodeType":"YulIdentifier","src":"27721:3:66"}],"functionName":{"name":"mload","nativeSrc":"27715:5:66","nodeType":"YulIdentifier","src":"27715:5:66"},"nativeSrc":"27715:10:66","nodeType":"YulFunctionCall","src":"27715:10:66"},"variables":[{"name":"newLen","nativeSrc":"27705:6:66","nodeType":"YulTypedName","src":"27705:6:66","type":""}]},{"body":{"nativeSrc":"27768:22:66","nodeType":"YulBlock","src":"27768:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"27770:16:66","nodeType":"YulIdentifier","src":"27770:16:66"},"nativeSrc":"27770:18:66","nodeType":"YulFunctionCall","src":"27770:18:66"},"nativeSrc":"27770:18:66","nodeType":"YulExpressionStatement","src":"27770:18:66"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"27740:6:66","nodeType":"YulIdentifier","src":"27740:6:66"},{"kind":"number","nativeSrc":"27748:18:66","nodeType":"YulLiteral","src":"27748:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"27737:2:66","nodeType":"YulIdentifier","src":"27737:2:66"},"nativeSrc":"27737:30:66","nodeType":"YulFunctionCall","src":"27737:30:66"},"nativeSrc":"27734:56:66","nodeType":"YulIf","src":"27734:56:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"27842:4:66","nodeType":"YulIdentifier","src":"27842:4:66"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"27880:4:66","nodeType":"YulIdentifier","src":"27880:4:66"}],"functionName":{"name":"sload","nativeSrc":"27874:5:66","nodeType":"YulIdentifier","src":"27874:5:66"},"nativeSrc":"27874:11:66","nodeType":"YulFunctionCall","src":"27874:11:66"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"27848:25:66","nodeType":"YulIdentifier","src":"27848:25:66"},"nativeSrc":"27848:38:66","nodeType":"YulFunctionCall","src":"27848:38:66"},{"name":"newLen","nativeSrc":"27888:6:66","nodeType":"YulIdentifier","src":"27888:6:66"}],"functionName":{"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"27799:42:66","nodeType":"YulIdentifier","src":"27799:42:66"},"nativeSrc":"27799:96:66","nodeType":"YulFunctionCall","src":"27799:96:66"},"nativeSrc":"27799:96:66","nodeType":"YulExpressionStatement","src":"27799:96:66"},{"nativeSrc":"27904:18:66","nodeType":"YulVariableDeclaration","src":"27904:18:66","value":{"kind":"number","nativeSrc":"27921:1:66","nodeType":"YulLiteral","src":"27921:1:66","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"27908:9:66","nodeType":"YulTypedName","src":"27908:9:66","type":""}]},{"nativeSrc":"27931:17:66","nodeType":"YulAssignment","src":"27931:17:66","value":{"kind":"number","nativeSrc":"27944:4:66","nodeType":"YulLiteral","src":"27944:4:66","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"27931:9:66","nodeType":"YulIdentifier","src":"27931:9:66"}]},{"cases":[{"body":{"nativeSrc":"27994:641:66","nodeType":"YulBlock","src":"27994:641:66","statements":[{"nativeSrc":"28008:35:66","nodeType":"YulVariableDeclaration","src":"28008:35:66","value":{"arguments":[{"name":"newLen","nativeSrc":"28027:6:66","nodeType":"YulIdentifier","src":"28027:6:66"},{"arguments":[{"kind":"number","nativeSrc":"28039:2:66","nodeType":"YulLiteral","src":"28039:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"28035:3:66","nodeType":"YulIdentifier","src":"28035:3:66"},"nativeSrc":"28035:7:66","nodeType":"YulFunctionCall","src":"28035:7:66"}],"functionName":{"name":"and","nativeSrc":"28023:3:66","nodeType":"YulIdentifier","src":"28023:3:66"},"nativeSrc":"28023:20:66","nodeType":"YulFunctionCall","src":"28023:20:66"},"variables":[{"name":"loopEnd","nativeSrc":"28012:7:66","nodeType":"YulTypedName","src":"28012:7:66","type":""}]},{"nativeSrc":"28056:48:66","nodeType":"YulVariableDeclaration","src":"28056:48:66","value":{"arguments":[{"name":"slot","nativeSrc":"28099:4:66","nodeType":"YulIdentifier","src":"28099:4:66"}],"functionName":{"name":"array_dataslot_bytes_storage","nativeSrc":"28070:28:66","nodeType":"YulIdentifier","src":"28070:28:66"},"nativeSrc":"28070:34:66","nodeType":"YulFunctionCall","src":"28070:34:66"},"variables":[{"name":"dstPtr","nativeSrc":"28060:6:66","nodeType":"YulTypedName","src":"28060:6:66","type":""}]},{"nativeSrc":"28117:10:66","nodeType":"YulVariableDeclaration","src":"28117:10:66","value":{"kind":"number","nativeSrc":"28126:1:66","nodeType":"YulLiteral","src":"28126:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"28121:1:66","nodeType":"YulTypedName","src":"28121:1:66","type":""}]},{"body":{"nativeSrc":"28197:165:66","nodeType":"YulBlock","src":"28197:165:66","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"28222:6:66","nodeType":"YulIdentifier","src":"28222:6:66"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"28240:3:66","nodeType":"YulIdentifier","src":"28240:3:66"},{"name":"srcOffset","nativeSrc":"28245:9:66","nodeType":"YulIdentifier","src":"28245:9:66"}],"functionName":{"name":"add","nativeSrc":"28236:3:66","nodeType":"YulIdentifier","src":"28236:3:66"},"nativeSrc":"28236:19:66","nodeType":"YulFunctionCall","src":"28236:19:66"}],"functionName":{"name":"mload","nativeSrc":"28230:5:66","nodeType":"YulIdentifier","src":"28230:5:66"},"nativeSrc":"28230:26:66","nodeType":"YulFunctionCall","src":"28230:26:66"}],"functionName":{"name":"sstore","nativeSrc":"28215:6:66","nodeType":"YulIdentifier","src":"28215:6:66"},"nativeSrc":"28215:42:66","nodeType":"YulFunctionCall","src":"28215:42:66"},"nativeSrc":"28215:42:66","nodeType":"YulExpressionStatement","src":"28215:42:66"},{"nativeSrc":"28274:24:66","nodeType":"YulAssignment","src":"28274:24:66","value":{"arguments":[{"name":"dstPtr","nativeSrc":"28288:6:66","nodeType":"YulIdentifier","src":"28288:6:66"},{"kind":"number","nativeSrc":"28296:1:66","nodeType":"YulLiteral","src":"28296:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"28284:3:66","nodeType":"YulIdentifier","src":"28284:3:66"},"nativeSrc":"28284:14:66","nodeType":"YulFunctionCall","src":"28284:14:66"},"variableNames":[{"name":"dstPtr","nativeSrc":"28274:6:66","nodeType":"YulIdentifier","src":"28274:6:66"}]},{"nativeSrc":"28315:33:66","nodeType":"YulAssignment","src":"28315:33:66","value":{"arguments":[{"name":"srcOffset","nativeSrc":"28332:9:66","nodeType":"YulIdentifier","src":"28332:9:66"},{"kind":"number","nativeSrc":"28343:4:66","nodeType":"YulLiteral","src":"28343:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"28328:3:66","nodeType":"YulIdentifier","src":"28328:3:66"},"nativeSrc":"28328:20:66","nodeType":"YulFunctionCall","src":"28328:20:66"},"variableNames":[{"name":"srcOffset","nativeSrc":"28315:9:66","nodeType":"YulIdentifier","src":"28315:9:66"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"28151:1:66","nodeType":"YulIdentifier","src":"28151:1:66"},{"name":"loopEnd","nativeSrc":"28154:7:66","nodeType":"YulIdentifier","src":"28154:7:66"}],"functionName":{"name":"lt","nativeSrc":"28148:2:66","nodeType":"YulIdentifier","src":"28148:2:66"},"nativeSrc":"28148:14:66","nodeType":"YulFunctionCall","src":"28148:14:66"},"nativeSrc":"28140:222:66","nodeType":"YulForLoop","post":{"nativeSrc":"28163:21:66","nodeType":"YulBlock","src":"28163:21:66","statements":[{"nativeSrc":"28165:17:66","nodeType":"YulAssignment","src":"28165:17:66","value":{"arguments":[{"name":"i","nativeSrc":"28174:1:66","nodeType":"YulIdentifier","src":"28174:1:66"},{"kind":"number","nativeSrc":"28177:4:66","nodeType":"YulLiteral","src":"28177:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"28170:3:66","nodeType":"YulIdentifier","src":"28170:3:66"},"nativeSrc":"28170:12:66","nodeType":"YulFunctionCall","src":"28170:12:66"},"variableNames":[{"name":"i","nativeSrc":"28165:1:66","nodeType":"YulIdentifier","src":"28165:1:66"}]}]},"pre":{"nativeSrc":"28144:3:66","nodeType":"YulBlock","src":"28144:3:66","statements":[]},"src":"28140:222:66"},{"body":{"nativeSrc":"28410:166:66","nodeType":"YulBlock","src":"28410:166:66","statements":[{"nativeSrc":"28428:43:66","nodeType":"YulVariableDeclaration","src":"28428:43:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"28455:3:66","nodeType":"YulIdentifier","src":"28455:3:66"},{"name":"srcOffset","nativeSrc":"28460:9:66","nodeType":"YulIdentifier","src":"28460:9:66"}],"functionName":{"name":"add","nativeSrc":"28451:3:66","nodeType":"YulIdentifier","src":"28451:3:66"},"nativeSrc":"28451:19:66","nodeType":"YulFunctionCall","src":"28451:19:66"}],"functionName":{"name":"mload","nativeSrc":"28445:5:66","nodeType":"YulIdentifier","src":"28445:5:66"},"nativeSrc":"28445:26:66","nodeType":"YulFunctionCall","src":"28445:26:66"},"variables":[{"name":"lastValue","nativeSrc":"28432:9:66","nodeType":"YulTypedName","src":"28432:9:66","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"28495:6:66","nodeType":"YulIdentifier","src":"28495:6:66"},{"arguments":[{"name":"lastValue","nativeSrc":"28507:9:66","nodeType":"YulIdentifier","src":"28507:9:66"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"28534:1:66","nodeType":"YulLiteral","src":"28534:1:66","type":"","value":"3"},{"name":"newLen","nativeSrc":"28537:6:66","nodeType":"YulIdentifier","src":"28537:6:66"}],"functionName":{"name":"shl","nativeSrc":"28530:3:66","nodeType":"YulIdentifier","src":"28530:3:66"},"nativeSrc":"28530:14:66","nodeType":"YulFunctionCall","src":"28530:14:66"},{"kind":"number","nativeSrc":"28546:3:66","nodeType":"YulLiteral","src":"28546:3:66","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"28526:3:66","nodeType":"YulIdentifier","src":"28526:3:66"},"nativeSrc":"28526:24:66","nodeType":"YulFunctionCall","src":"28526:24:66"},{"arguments":[{"kind":"number","nativeSrc":"28556:1:66","nodeType":"YulLiteral","src":"28556:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"28552:3:66","nodeType":"YulIdentifier","src":"28552:3:66"},"nativeSrc":"28552:6:66","nodeType":"YulFunctionCall","src":"28552:6:66"}],"functionName":{"name":"shr","nativeSrc":"28522:3:66","nodeType":"YulIdentifier","src":"28522:3:66"},"nativeSrc":"28522:37:66","nodeType":"YulFunctionCall","src":"28522:37:66"}],"functionName":{"name":"not","nativeSrc":"28518:3:66","nodeType":"YulIdentifier","src":"28518:3:66"},"nativeSrc":"28518:42:66","nodeType":"YulFunctionCall","src":"28518:42:66"}],"functionName":{"name":"and","nativeSrc":"28503:3:66","nodeType":"YulIdentifier","src":"28503:3:66"},"nativeSrc":"28503:58:66","nodeType":"YulFunctionCall","src":"28503:58:66"}],"functionName":{"name":"sstore","nativeSrc":"28488:6:66","nodeType":"YulIdentifier","src":"28488:6:66"},"nativeSrc":"28488:74:66","nodeType":"YulFunctionCall","src":"28488:74:66"},"nativeSrc":"28488:74:66","nodeType":"YulExpressionStatement","src":"28488:74:66"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"28381:7:66","nodeType":"YulIdentifier","src":"28381:7:66"},{"name":"newLen","nativeSrc":"28390:6:66","nodeType":"YulIdentifier","src":"28390:6:66"}],"functionName":{"name":"lt","nativeSrc":"28378:2:66","nodeType":"YulIdentifier","src":"28378:2:66"},"nativeSrc":"28378:19:66","nodeType":"YulFunctionCall","src":"28378:19:66"},"nativeSrc":"28375:201:66","nodeType":"YulIf","src":"28375:201:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"28596:4:66","nodeType":"YulIdentifier","src":"28596:4:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"28610:1:66","nodeType":"YulLiteral","src":"28610:1:66","type":"","value":"1"},{"name":"newLen","nativeSrc":"28613:6:66","nodeType":"YulIdentifier","src":"28613:6:66"}],"functionName":{"name":"shl","nativeSrc":"28606:3:66","nodeType":"YulIdentifier","src":"28606:3:66"},"nativeSrc":"28606:14:66","nodeType":"YulFunctionCall","src":"28606:14:66"},{"kind":"number","nativeSrc":"28622:1:66","nodeType":"YulLiteral","src":"28622:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"28602:3:66","nodeType":"YulIdentifier","src":"28602:3:66"},"nativeSrc":"28602:22:66","nodeType":"YulFunctionCall","src":"28602:22:66"}],"functionName":{"name":"sstore","nativeSrc":"28589:6:66","nodeType":"YulIdentifier","src":"28589:6:66"},"nativeSrc":"28589:36:66","nodeType":"YulFunctionCall","src":"28589:36:66"},"nativeSrc":"28589:36:66","nodeType":"YulExpressionStatement","src":"28589:36:66"}]},"nativeSrc":"27987:648:66","nodeType":"YulCase","src":"27987:648:66","value":{"kind":"number","nativeSrc":"27992:1:66","nodeType":"YulLiteral","src":"27992:1:66","type":"","value":"1"}},{"body":{"nativeSrc":"28652:234:66","nodeType":"YulBlock","src":"28652:234:66","statements":[{"nativeSrc":"28666:14:66","nodeType":"YulVariableDeclaration","src":"28666:14:66","value":{"kind":"number","nativeSrc":"28679:1:66","nodeType":"YulLiteral","src":"28679:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"28670:5:66","nodeType":"YulTypedName","src":"28670:5:66","type":""}]},{"body":{"nativeSrc":"28715:67:66","nodeType":"YulBlock","src":"28715:67:66","statements":[{"nativeSrc":"28733:35:66","nodeType":"YulAssignment","src":"28733:35:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"28752:3:66","nodeType":"YulIdentifier","src":"28752:3:66"},{"name":"srcOffset","nativeSrc":"28757:9:66","nodeType":"YulIdentifier","src":"28757:9:66"}],"functionName":{"name":"add","nativeSrc":"28748:3:66","nodeType":"YulIdentifier","src":"28748:3:66"},"nativeSrc":"28748:19:66","nodeType":"YulFunctionCall","src":"28748:19:66"}],"functionName":{"name":"mload","nativeSrc":"28742:5:66","nodeType":"YulIdentifier","src":"28742:5:66"},"nativeSrc":"28742:26:66","nodeType":"YulFunctionCall","src":"28742:26:66"},"variableNames":[{"name":"value","nativeSrc":"28733:5:66","nodeType":"YulIdentifier","src":"28733:5:66"}]}]},"condition":{"name":"newLen","nativeSrc":"28696:6:66","nodeType":"YulIdentifier","src":"28696:6:66"},"nativeSrc":"28693:89:66","nodeType":"YulIf","src":"28693:89:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"28802:4:66","nodeType":"YulIdentifier","src":"28802:4:66"},{"arguments":[{"name":"value","nativeSrc":"28861:5:66","nodeType":"YulIdentifier","src":"28861:5:66"},{"name":"newLen","nativeSrc":"28868:6:66","nodeType":"YulIdentifier","src":"28868:6:66"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"28808:52:66","nodeType":"YulIdentifier","src":"28808:52:66"},"nativeSrc":"28808:67:66","nodeType":"YulFunctionCall","src":"28808:67:66"}],"functionName":{"name":"sstore","nativeSrc":"28795:6:66","nodeType":"YulIdentifier","src":"28795:6:66"},"nativeSrc":"28795:81:66","nodeType":"YulFunctionCall","src":"28795:81:66"},"nativeSrc":"28795:81:66","nodeType":"YulExpressionStatement","src":"28795:81:66"}]},"nativeSrc":"28644:242:66","nodeType":"YulCase","src":"28644:242:66","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"27967:6:66","nodeType":"YulIdentifier","src":"27967:6:66"},{"kind":"number","nativeSrc":"27975:2:66","nodeType":"YulLiteral","src":"27975:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"27964:2:66","nodeType":"YulIdentifier","src":"27964:2:66"},"nativeSrc":"27964:14:66","nodeType":"YulFunctionCall","src":"27964:14:66"},"nativeSrc":"27957:929:66","nodeType":"YulSwitch","src":"27957:929:66"}]},"name":"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage","nativeSrc":"27597:1295:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"27676:4:66","nodeType":"YulTypedName","src":"27676:4:66","type":""},{"name":"src","nativeSrc":"27682:3:66","nodeType":"YulTypedName","src":"27682:3:66","type":""}],"src":"27597:1295:66"},{"body":{"nativeSrc":"29122:874:66","nodeType":"YulBlock","src":"29122:874:66","statements":[{"nativeSrc":"29132:32:66","nodeType":"YulVariableDeclaration","src":"29132:32:66","value":{"arguments":[{"name":"headStart","nativeSrc":"29150:9:66","nodeType":"YulIdentifier","src":"29150:9:66"},{"kind":"number","nativeSrc":"29161:2:66","nodeType":"YulLiteral","src":"29161:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29146:3:66","nodeType":"YulIdentifier","src":"29146:3:66"},"nativeSrc":"29146:18:66","nodeType":"YulFunctionCall","src":"29146:18:66"},"variables":[{"name":"tail_1","nativeSrc":"29136:6:66","nodeType":"YulTypedName","src":"29136:6:66","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"29180:9:66","nodeType":"YulIdentifier","src":"29180:9:66"},{"kind":"number","nativeSrc":"29191:2:66","nodeType":"YulLiteral","src":"29191:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"29173:6:66","nodeType":"YulIdentifier","src":"29173:6:66"},"nativeSrc":"29173:21:66","nodeType":"YulFunctionCall","src":"29173:21:66"},"nativeSrc":"29173:21:66","nodeType":"YulExpressionStatement","src":"29173:21:66"},{"nativeSrc":"29203:17:66","nodeType":"YulVariableDeclaration","src":"29203:17:66","value":{"name":"tail_1","nativeSrc":"29214:6:66","nodeType":"YulIdentifier","src":"29214:6:66"},"variables":[{"name":"pos","nativeSrc":"29207:3:66","nodeType":"YulTypedName","src":"29207:3:66","type":""}]},{"nativeSrc":"29229:27:66","nodeType":"YulVariableDeclaration","src":"29229:27:66","value":{"arguments":[{"name":"value0","nativeSrc":"29249:6:66","nodeType":"YulIdentifier","src":"29249:6:66"}],"functionName":{"name":"mload","nativeSrc":"29243:5:66","nodeType":"YulIdentifier","src":"29243:5:66"},"nativeSrc":"29243:13:66","nodeType":"YulFunctionCall","src":"29243:13:66"},"variables":[{"name":"length","nativeSrc":"29233:6:66","nodeType":"YulTypedName","src":"29233:6:66","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"29272:6:66","nodeType":"YulIdentifier","src":"29272:6:66"},{"name":"length","nativeSrc":"29280:6:66","nodeType":"YulIdentifier","src":"29280:6:66"}],"functionName":{"name":"mstore","nativeSrc":"29265:6:66","nodeType":"YulIdentifier","src":"29265:6:66"},"nativeSrc":"29265:22:66","nodeType":"YulFunctionCall","src":"29265:22:66"},"nativeSrc":"29265:22:66","nodeType":"YulExpressionStatement","src":"29265:22:66"},{"nativeSrc":"29296:25:66","nodeType":"YulAssignment","src":"29296:25:66","value":{"arguments":[{"name":"headStart","nativeSrc":"29307:9:66","nodeType":"YulIdentifier","src":"29307:9:66"},{"kind":"number","nativeSrc":"29318:2:66","nodeType":"YulLiteral","src":"29318:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"29303:3:66","nodeType":"YulIdentifier","src":"29303:3:66"},"nativeSrc":"29303:18:66","nodeType":"YulFunctionCall","src":"29303:18:66"},"variableNames":[{"name":"pos","nativeSrc":"29296:3:66","nodeType":"YulIdentifier","src":"29296:3:66"}]},{"nativeSrc":"29330:53:66","nodeType":"YulVariableDeclaration","src":"29330:53:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"29352:9:66","nodeType":"YulIdentifier","src":"29352:9:66"},{"arguments":[{"kind":"number","nativeSrc":"29367:1:66","nodeType":"YulLiteral","src":"29367:1:66","type":"","value":"5"},{"name":"length","nativeSrc":"29370:6:66","nodeType":"YulIdentifier","src":"29370:6:66"}],"functionName":{"name":"shl","nativeSrc":"29363:3:66","nodeType":"YulIdentifier","src":"29363:3:66"},"nativeSrc":"29363:14:66","nodeType":"YulFunctionCall","src":"29363:14:66"}],"functionName":{"name":"add","nativeSrc":"29348:3:66","nodeType":"YulIdentifier","src":"29348:3:66"},"nativeSrc":"29348:30:66","nodeType":"YulFunctionCall","src":"29348:30:66"},{"kind":"number","nativeSrc":"29380:2:66","nodeType":"YulLiteral","src":"29380:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"29344:3:66","nodeType":"YulIdentifier","src":"29344:3:66"},"nativeSrc":"29344:39:66","nodeType":"YulFunctionCall","src":"29344:39:66"},"variables":[{"name":"tail_2","nativeSrc":"29334:6:66","nodeType":"YulTypedName","src":"29334:6:66","type":""}]},{"nativeSrc":"29392:29:66","nodeType":"YulVariableDeclaration","src":"29392:29:66","value":{"arguments":[{"name":"value0","nativeSrc":"29410:6:66","nodeType":"YulIdentifier","src":"29410:6:66"},{"kind":"number","nativeSrc":"29418:2:66","nodeType":"YulLiteral","src":"29418:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29406:3:66","nodeType":"YulIdentifier","src":"29406:3:66"},"nativeSrc":"29406:15:66","nodeType":"YulFunctionCall","src":"29406:15:66"},"variables":[{"name":"srcPtr","nativeSrc":"29396:6:66","nodeType":"YulTypedName","src":"29396:6:66","type":""}]},{"nativeSrc":"29430:10:66","nodeType":"YulVariableDeclaration","src":"29430:10:66","value":{"kind":"number","nativeSrc":"29439:1:66","nodeType":"YulLiteral","src":"29439:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"29434:1:66","nodeType":"YulTypedName","src":"29434:1:66","type":""}]},{"body":{"nativeSrc":"29498:469:66","nodeType":"YulBlock","src":"29498:469:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"29519:3:66","nodeType":"YulIdentifier","src":"29519:3:66"},{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"29532:6:66","nodeType":"YulIdentifier","src":"29532:6:66"},{"name":"headStart","nativeSrc":"29540:9:66","nodeType":"YulIdentifier","src":"29540:9:66"}],"functionName":{"name":"sub","nativeSrc":"29528:3:66","nodeType":"YulIdentifier","src":"29528:3:66"},"nativeSrc":"29528:22:66","nodeType":"YulFunctionCall","src":"29528:22:66"},{"arguments":[{"kind":"number","nativeSrc":"29556:2:66","nodeType":"YulLiteral","src":"29556:2:66","type":"","value":"63"}],"functionName":{"name":"not","nativeSrc":"29552:3:66","nodeType":"YulIdentifier","src":"29552:3:66"},"nativeSrc":"29552:7:66","nodeType":"YulFunctionCall","src":"29552:7:66"}],"functionName":{"name":"add","nativeSrc":"29524:3:66","nodeType":"YulIdentifier","src":"29524:3:66"},"nativeSrc":"29524:36:66","nodeType":"YulFunctionCall","src":"29524:36:66"}],"functionName":{"name":"mstore","nativeSrc":"29512:6:66","nodeType":"YulIdentifier","src":"29512:6:66"},"nativeSrc":"29512:49:66","nodeType":"YulFunctionCall","src":"29512:49:66"},"nativeSrc":"29512:49:66","nodeType":"YulExpressionStatement","src":"29512:49:66"},{"nativeSrc":"29574:23:66","nodeType":"YulVariableDeclaration","src":"29574:23:66","value":{"arguments":[{"name":"srcPtr","nativeSrc":"29590:6:66","nodeType":"YulIdentifier","src":"29590:6:66"}],"functionName":{"name":"mload","nativeSrc":"29584:5:66","nodeType":"YulIdentifier","src":"29584:5:66"},"nativeSrc":"29584:13:66","nodeType":"YulFunctionCall","src":"29584:13:66"},"variables":[{"name":"_1","nativeSrc":"29578:2:66","nodeType":"YulTypedName","src":"29578:2:66","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nativeSrc":"29617:6:66","nodeType":"YulIdentifier","src":"29617:6:66"},{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"29635:2:66","nodeType":"YulIdentifier","src":"29635:2:66"}],"functionName":{"name":"mload","nativeSrc":"29629:5:66","nodeType":"YulIdentifier","src":"29629:5:66"},"nativeSrc":"29629:9:66","nodeType":"YulFunctionCall","src":"29629:9:66"},{"kind":"number","nativeSrc":"29640:10:66","nodeType":"YulLiteral","src":"29640:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"29625:3:66","nodeType":"YulIdentifier","src":"29625:3:66"},"nativeSrc":"29625:26:66","nodeType":"YulFunctionCall","src":"29625:26:66"}],"functionName":{"name":"mstore","nativeSrc":"29610:6:66","nodeType":"YulIdentifier","src":"29610:6:66"},"nativeSrc":"29610:42:66","nodeType":"YulFunctionCall","src":"29610:42:66"},"nativeSrc":"29610:42:66","nodeType":"YulExpressionStatement","src":"29610:42:66"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"29676:6:66","nodeType":"YulIdentifier","src":"29676:6:66"},{"kind":"number","nativeSrc":"29684:2:66","nodeType":"YulLiteral","src":"29684:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29672:3:66","nodeType":"YulIdentifier","src":"29672:3:66"},"nativeSrc":"29672:15:66","nodeType":"YulFunctionCall","src":"29672:15:66"},{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"29703:2:66","nodeType":"YulIdentifier","src":"29703:2:66"},{"kind":"number","nativeSrc":"29707:2:66","nodeType":"YulLiteral","src":"29707:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29699:3:66","nodeType":"YulIdentifier","src":"29699:3:66"},"nativeSrc":"29699:11:66","nodeType":"YulFunctionCall","src":"29699:11:66"}],"functionName":{"name":"mload","nativeSrc":"29693:5:66","nodeType":"YulIdentifier","src":"29693:5:66"},"nativeSrc":"29693:18:66","nodeType":"YulFunctionCall","src":"29693:18:66"},{"kind":"number","nativeSrc":"29713:6:66","nodeType":"YulLiteral","src":"29713:6:66","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"29689:3:66","nodeType":"YulIdentifier","src":"29689:3:66"},"nativeSrc":"29689:31:66","nodeType":"YulFunctionCall","src":"29689:31:66"}],"functionName":{"name":"mstore","nativeSrc":"29665:6:66","nodeType":"YulIdentifier","src":"29665:6:66"},"nativeSrc":"29665:56:66","nodeType":"YulFunctionCall","src":"29665:56:66"},"nativeSrc":"29665:56:66","nodeType":"YulExpressionStatement","src":"29665:56:66"},{"nativeSrc":"29734:38:66","nodeType":"YulVariableDeclaration","src":"29734:38:66","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"29764:2:66","nodeType":"YulIdentifier","src":"29764:2:66"},{"kind":"number","nativeSrc":"29768:2:66","nodeType":"YulLiteral","src":"29768:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"29760:3:66","nodeType":"YulIdentifier","src":"29760:3:66"},"nativeSrc":"29760:11:66","nodeType":"YulFunctionCall","src":"29760:11:66"}],"functionName":{"name":"mload","nativeSrc":"29754:5:66","nodeType":"YulIdentifier","src":"29754:5:66"},"nativeSrc":"29754:18:66","nodeType":"YulFunctionCall","src":"29754:18:66"},"variables":[{"name":"memberValue0","nativeSrc":"29738:12:66","nodeType":"YulTypedName","src":"29738:12:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"29796:6:66","nodeType":"YulIdentifier","src":"29796:6:66"},{"kind":"number","nativeSrc":"29804:2:66","nodeType":"YulLiteral","src":"29804:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"29792:3:66","nodeType":"YulIdentifier","src":"29792:3:66"},"nativeSrc":"29792:15:66","nodeType":"YulFunctionCall","src":"29792:15:66"},{"kind":"number","nativeSrc":"29809:4:66","nodeType":"YulLiteral","src":"29809:4:66","type":"","value":"0x60"}],"functionName":{"name":"mstore","nativeSrc":"29785:6:66","nodeType":"YulIdentifier","src":"29785:6:66"},"nativeSrc":"29785:29:66","nodeType":"YulFunctionCall","src":"29785:29:66"},"nativeSrc":"29785:29:66","nodeType":"YulExpressionStatement","src":"29785:29:66"},{"nativeSrc":"29827:60:66","nodeType":"YulAssignment","src":"29827:60:66","value":{"arguments":[{"name":"memberValue0","nativeSrc":"29855:12:66","nodeType":"YulIdentifier","src":"29855:12:66"},{"arguments":[{"name":"tail_2","nativeSrc":"29873:6:66","nodeType":"YulIdentifier","src":"29873:6:66"},{"kind":"number","nativeSrc":"29881:4:66","nodeType":"YulLiteral","src":"29881:4:66","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"29869:3:66","nodeType":"YulIdentifier","src":"29869:3:66"},"nativeSrc":"29869:17:66","nodeType":"YulFunctionCall","src":"29869:17:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"29837:17:66","nodeType":"YulIdentifier","src":"29837:17:66"},"nativeSrc":"29837:50:66","nodeType":"YulFunctionCall","src":"29837:50:66"},"variableNames":[{"name":"tail_2","nativeSrc":"29827:6:66","nodeType":"YulIdentifier","src":"29827:6:66"}]},{"nativeSrc":"29900:25:66","nodeType":"YulAssignment","src":"29900:25:66","value":{"arguments":[{"name":"srcPtr","nativeSrc":"29914:6:66","nodeType":"YulIdentifier","src":"29914:6:66"},{"kind":"number","nativeSrc":"29922:2:66","nodeType":"YulLiteral","src":"29922:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29910:3:66","nodeType":"YulIdentifier","src":"29910:3:66"},"nativeSrc":"29910:15:66","nodeType":"YulFunctionCall","src":"29910:15:66"},"variableNames":[{"name":"srcPtr","nativeSrc":"29900:6:66","nodeType":"YulIdentifier","src":"29900:6:66"}]},{"nativeSrc":"29938:19:66","nodeType":"YulAssignment","src":"29938:19:66","value":{"arguments":[{"name":"pos","nativeSrc":"29949:3:66","nodeType":"YulIdentifier","src":"29949:3:66"},{"kind":"number","nativeSrc":"29954:2:66","nodeType":"YulLiteral","src":"29954:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29945:3:66","nodeType":"YulIdentifier","src":"29945:3:66"},"nativeSrc":"29945:12:66","nodeType":"YulFunctionCall","src":"29945:12:66"},"variableNames":[{"name":"pos","nativeSrc":"29938:3:66","nodeType":"YulIdentifier","src":"29938:3:66"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"29460:1:66","nodeType":"YulIdentifier","src":"29460:1:66"},{"name":"length","nativeSrc":"29463:6:66","nodeType":"YulIdentifier","src":"29463:6:66"}],"functionName":{"name":"lt","nativeSrc":"29457:2:66","nodeType":"YulIdentifier","src":"29457:2:66"},"nativeSrc":"29457:13:66","nodeType":"YulFunctionCall","src":"29457:13:66"},"nativeSrc":"29449:518:66","nodeType":"YulForLoop","post":{"nativeSrc":"29471:18:66","nodeType":"YulBlock","src":"29471:18:66","statements":[{"nativeSrc":"29473:14:66","nodeType":"YulAssignment","src":"29473:14:66","value":{"arguments":[{"name":"i","nativeSrc":"29482:1:66","nodeType":"YulIdentifier","src":"29482:1:66"},{"kind":"number","nativeSrc":"29485:1:66","nodeType":"YulLiteral","src":"29485:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"29478:3:66","nodeType":"YulIdentifier","src":"29478:3:66"},"nativeSrc":"29478:9:66","nodeType":"YulFunctionCall","src":"29478:9:66"},"variableNames":[{"name":"i","nativeSrc":"29473:1:66","nodeType":"YulIdentifier","src":"29473:1:66"}]}]},"pre":{"nativeSrc":"29453:3:66","nodeType":"YulBlock","src":"29453:3:66","statements":[]},"src":"29449:518:66"},{"nativeSrc":"29976:14:66","nodeType":"YulAssignment","src":"29976:14:66","value":{"name":"tail_2","nativeSrc":"29984:6:66","nodeType":"YulIdentifier","src":"29984:6:66"},"variableNames":[{"name":"tail","nativeSrc":"29976:4:66","nodeType":"YulIdentifier","src":"29976:4:66"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"28897:1099:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"29091:9:66","nodeType":"YulTypedName","src":"29091:9:66","type":""},{"name":"value0","nativeSrc":"29102:6:66","nodeType":"YulTypedName","src":"29102:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"29113:4:66","nodeType":"YulTypedName","src":"29113:4:66","type":""}],"src":"28897:1099:66"},{"body":{"nativeSrc":"30099:389:66","nodeType":"YulBlock","src":"30099:389:66","statements":[{"nativeSrc":"30109:42:66","nodeType":"YulVariableDeclaration","src":"30109:42:66","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"30127:7:66","nodeType":"YulIdentifier","src":"30127:7:66"},{"name":"headStart","nativeSrc":"30136:9:66","nodeType":"YulIdentifier","src":"30136:9:66"}],"functionName":{"name":"sub","nativeSrc":"30123:3:66","nodeType":"YulIdentifier","src":"30123:3:66"},"nativeSrc":"30123:23:66","nodeType":"YulFunctionCall","src":"30123:23:66"},{"kind":"number","nativeSrc":"30148:2:66","nodeType":"YulLiteral","src":"30148:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"30119:3:66","nodeType":"YulIdentifier","src":"30119:3:66"},"nativeSrc":"30119:32:66","nodeType":"YulFunctionCall","src":"30119:32:66"},"variables":[{"name":"_1","nativeSrc":"30113:2:66","nodeType":"YulTypedName","src":"30113:2:66","type":""}]},{"body":{"nativeSrc":"30166:16:66","nodeType":"YulBlock","src":"30166:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"30175:1:66","nodeType":"YulLiteral","src":"30175:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"30178:1:66","nodeType":"YulLiteral","src":"30178:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"30168:6:66","nodeType":"YulIdentifier","src":"30168:6:66"},"nativeSrc":"30168:12:66","nodeType":"YulFunctionCall","src":"30168:12:66"},"nativeSrc":"30168:12:66","nodeType":"YulExpressionStatement","src":"30168:12:66"}]},"condition":{"name":"_1","nativeSrc":"30163:2:66","nodeType":"YulIdentifier","src":"30163:2:66"},"nativeSrc":"30160:22:66","nodeType":"YulIf","src":"30160:22:66"},{"nativeSrc":"30191:7:66","nodeType":"YulAssignment","src":"30191:7:66","value":{"kind":"number","nativeSrc":"30197:1:66","nodeType":"YulLiteral","src":"30197:1:66","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"30191:2:66","nodeType":"YulIdentifier","src":"30191:2:66"}]},{"nativeSrc":"30207:35:66","nodeType":"YulVariableDeclaration","src":"30207:35:66","value":{"arguments":[],"functionName":{"name":"allocate_memory_3874","nativeSrc":"30220:20:66","nodeType":"YulIdentifier","src":"30220:20:66"},"nativeSrc":"30220:22:66","nodeType":"YulFunctionCall","src":"30220:22:66"},"variables":[{"name":"value","nativeSrc":"30211:5:66","nodeType":"YulTypedName","src":"30211:5:66","type":""}]},{"nativeSrc":"30251:16:66","nodeType":"YulVariableDeclaration","src":"30251:16:66","value":{"kind":"number","nativeSrc":"30266:1:66","nodeType":"YulLiteral","src":"30266:1:66","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"30255:7:66","nodeType":"YulTypedName","src":"30255:7:66","type":""}]},{"nativeSrc":"30276:34:66","nodeType":"YulAssignment","src":"30276:34:66","value":{"arguments":[{"name":"headStart","nativeSrc":"30300:9:66","nodeType":"YulIdentifier","src":"30300:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"30287:12:66","nodeType":"YulIdentifier","src":"30287:12:66"},"nativeSrc":"30287:23:66","nodeType":"YulFunctionCall","src":"30287:23:66"},"variableNames":[{"name":"value_1","nativeSrc":"30276:7:66","nodeType":"YulIdentifier","src":"30276:7:66"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"30326:5:66","nodeType":"YulIdentifier","src":"30326:5:66"},{"name":"value_1","nativeSrc":"30333:7:66","nodeType":"YulIdentifier","src":"30333:7:66"}],"functionName":{"name":"mstore","nativeSrc":"30319:6:66","nodeType":"YulIdentifier","src":"30319:6:66"},"nativeSrc":"30319:22:66","nodeType":"YulFunctionCall","src":"30319:22:66"},"nativeSrc":"30319:22:66","nodeType":"YulExpressionStatement","src":"30319:22:66"},{"nativeSrc":"30350:16:66","nodeType":"YulVariableDeclaration","src":"30350:16:66","value":{"kind":"number","nativeSrc":"30365:1:66","nodeType":"YulLiteral","src":"30365:1:66","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"30354:7:66","nodeType":"YulTypedName","src":"30354:7:66","type":""}]},{"nativeSrc":"30375:43:66","nodeType":"YulAssignment","src":"30375:43:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"30403:9:66","nodeType":"YulIdentifier","src":"30403:9:66"},{"kind":"number","nativeSrc":"30414:2:66","nodeType":"YulLiteral","src":"30414:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"30399:3:66","nodeType":"YulIdentifier","src":"30399:3:66"},"nativeSrc":"30399:18:66","nodeType":"YulFunctionCall","src":"30399:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"30386:12:66","nodeType":"YulIdentifier","src":"30386:12:66"},"nativeSrc":"30386:32:66","nodeType":"YulFunctionCall","src":"30386:32:66"},"variableNames":[{"name":"value_2","nativeSrc":"30375:7:66","nodeType":"YulIdentifier","src":"30375:7:66"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"30438:5:66","nodeType":"YulIdentifier","src":"30438:5:66"},{"kind":"number","nativeSrc":"30445:2:66","nodeType":"YulLiteral","src":"30445:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"30434:3:66","nodeType":"YulIdentifier","src":"30434:3:66"},"nativeSrc":"30434:14:66","nodeType":"YulFunctionCall","src":"30434:14:66"},{"name":"value_2","nativeSrc":"30450:7:66","nodeType":"YulIdentifier","src":"30450:7:66"}],"functionName":{"name":"mstore","nativeSrc":"30427:6:66","nodeType":"YulIdentifier","src":"30427:6:66"},"nativeSrc":"30427:31:66","nodeType":"YulFunctionCall","src":"30427:31:66"},"nativeSrc":"30427:31:66","nodeType":"YulExpressionStatement","src":"30427:31:66"},{"nativeSrc":"30467:15:66","nodeType":"YulAssignment","src":"30467:15:66","value":{"name":"value","nativeSrc":"30477:5:66","nodeType":"YulIdentifier","src":"30477:5:66"},"variableNames":[{"name":"value0","nativeSrc":"30467:6:66","nodeType":"YulIdentifier","src":"30467:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr","nativeSrc":"30001:487:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"30065:9:66","nodeType":"YulTypedName","src":"30065:9:66","type":""},{"name":"dataEnd","nativeSrc":"30076:7:66","nodeType":"YulTypedName","src":"30076:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"30088:6:66","nodeType":"YulTypedName","src":"30088:6:66","type":""}],"src":"30001:487:66"},{"body":{"nativeSrc":"30648:179:66","nodeType":"YulBlock","src":"30648:179:66","statements":[{"nativeSrc":"30658:26:66","nodeType":"YulAssignment","src":"30658:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"30670:9:66","nodeType":"YulIdentifier","src":"30670:9:66"},{"kind":"number","nativeSrc":"30681:2:66","nodeType":"YulLiteral","src":"30681:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"30666:3:66","nodeType":"YulIdentifier","src":"30666:3:66"},"nativeSrc":"30666:18:66","nodeType":"YulFunctionCall","src":"30666:18:66"},"variableNames":[{"name":"tail","nativeSrc":"30658:4:66","nodeType":"YulIdentifier","src":"30658:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"30700:9:66","nodeType":"YulIdentifier","src":"30700:9:66"},{"arguments":[{"name":"value0","nativeSrc":"30715:6:66","nodeType":"YulIdentifier","src":"30715:6:66"},{"kind":"number","nativeSrc":"30723:10:66","nodeType":"YulLiteral","src":"30723:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"30711:3:66","nodeType":"YulIdentifier","src":"30711:3:66"},"nativeSrc":"30711:23:66","nodeType":"YulFunctionCall","src":"30711:23:66"}],"functionName":{"name":"mstore","nativeSrc":"30693:6:66","nodeType":"YulIdentifier","src":"30693:6:66"},"nativeSrc":"30693:42:66","nodeType":"YulFunctionCall","src":"30693:42:66"},"nativeSrc":"30693:42:66","nodeType":"YulExpressionStatement","src":"30693:42:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"30755:9:66","nodeType":"YulIdentifier","src":"30755:9:66"},{"kind":"number","nativeSrc":"30766:2:66","nodeType":"YulLiteral","src":"30766:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"30751:3:66","nodeType":"YulIdentifier","src":"30751:3:66"},"nativeSrc":"30751:18:66","nodeType":"YulFunctionCall","src":"30751:18:66"},{"name":"value1","nativeSrc":"30771:6:66","nodeType":"YulIdentifier","src":"30771:6:66"}],"functionName":{"name":"mstore","nativeSrc":"30744:6:66","nodeType":"YulIdentifier","src":"30744:6:66"},"nativeSrc":"30744:34:66","nodeType":"YulFunctionCall","src":"30744:34:66"},"nativeSrc":"30744:34:66","nodeType":"YulExpressionStatement","src":"30744:34:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"30798:9:66","nodeType":"YulIdentifier","src":"30798:9:66"},{"kind":"number","nativeSrc":"30809:2:66","nodeType":"YulLiteral","src":"30809:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"30794:3:66","nodeType":"YulIdentifier","src":"30794:3:66"},"nativeSrc":"30794:18:66","nodeType":"YulFunctionCall","src":"30794:18:66"},{"name":"value2","nativeSrc":"30814:6:66","nodeType":"YulIdentifier","src":"30814:6:66"}],"functionName":{"name":"mstore","nativeSrc":"30787:6:66","nodeType":"YulIdentifier","src":"30787:6:66"},"nativeSrc":"30787:34:66","nodeType":"YulFunctionCall","src":"30787:34:66"},"nativeSrc":"30787:34:66","nodeType":"YulExpressionStatement","src":"30787:34:66"}]},"name":"abi_encode_tuple_t_uint32_t_uint256_t_uint256__to_t_uint32_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"30493:334:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"30601:9:66","nodeType":"YulTypedName","src":"30601:9:66","type":""},{"name":"value2","nativeSrc":"30612:6:66","nodeType":"YulTypedName","src":"30612:6:66","type":""},{"name":"value1","nativeSrc":"30620:6:66","nodeType":"YulTypedName","src":"30620:6:66","type":""},{"name":"value0","nativeSrc":"30628:6:66","nodeType":"YulTypedName","src":"30628:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"30639:4:66","nodeType":"YulTypedName","src":"30639:4:66","type":""}],"src":"30493:334:66"},{"body":{"nativeSrc":"30864:95:66","nodeType":"YulBlock","src":"30864:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"30881:1:66","nodeType":"YulLiteral","src":"30881:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"30888:3:66","nodeType":"YulLiteral","src":"30888:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"30893:10:66","nodeType":"YulLiteral","src":"30893:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"30884:3:66","nodeType":"YulIdentifier","src":"30884:3:66"},"nativeSrc":"30884:20:66","nodeType":"YulFunctionCall","src":"30884:20:66"}],"functionName":{"name":"mstore","nativeSrc":"30874:6:66","nodeType":"YulIdentifier","src":"30874:6:66"},"nativeSrc":"30874:31:66","nodeType":"YulFunctionCall","src":"30874:31:66"},"nativeSrc":"30874:31:66","nodeType":"YulExpressionStatement","src":"30874:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"30921:1:66","nodeType":"YulLiteral","src":"30921:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"30924:4:66","nodeType":"YulLiteral","src":"30924:4:66","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"30914:6:66","nodeType":"YulIdentifier","src":"30914:6:66"},"nativeSrc":"30914:15:66","nodeType":"YulFunctionCall","src":"30914:15:66"},"nativeSrc":"30914:15:66","nodeType":"YulExpressionStatement","src":"30914:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"30945:1:66","nodeType":"YulLiteral","src":"30945:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"30948:4:66","nodeType":"YulLiteral","src":"30948:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"30938:6:66","nodeType":"YulIdentifier","src":"30938:6:66"},"nativeSrc":"30938:15:66","nodeType":"YulFunctionCall","src":"30938:15:66"},"nativeSrc":"30938:15:66","nodeType":"YulExpressionStatement","src":"30938:15:66"}]},"name":"panic_error_0x11","nativeSrc":"30832:127:66","nodeType":"YulFunctionDefinition","src":"30832:127:66"},{"body":{"nativeSrc":"31010:171:66","nodeType":"YulBlock","src":"31010:171:66","statements":[{"body":{"nativeSrc":"31041:111:66","nodeType":"YulBlock","src":"31041:111:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"31062:1:66","nodeType":"YulLiteral","src":"31062:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"31069:3:66","nodeType":"YulLiteral","src":"31069:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"31074:10:66","nodeType":"YulLiteral","src":"31074:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"31065:3:66","nodeType":"YulIdentifier","src":"31065:3:66"},"nativeSrc":"31065:20:66","nodeType":"YulFunctionCall","src":"31065:20:66"}],"functionName":{"name":"mstore","nativeSrc":"31055:6:66","nodeType":"YulIdentifier","src":"31055:6:66"},"nativeSrc":"31055:31:66","nodeType":"YulFunctionCall","src":"31055:31:66"},"nativeSrc":"31055:31:66","nodeType":"YulExpressionStatement","src":"31055:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"31106:1:66","nodeType":"YulLiteral","src":"31106:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"31109:4:66","nodeType":"YulLiteral","src":"31109:4:66","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"31099:6:66","nodeType":"YulIdentifier","src":"31099:6:66"},"nativeSrc":"31099:15:66","nodeType":"YulFunctionCall","src":"31099:15:66"},"nativeSrc":"31099:15:66","nodeType":"YulExpressionStatement","src":"31099:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"31134:1:66","nodeType":"YulLiteral","src":"31134:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"31137:4:66","nodeType":"YulLiteral","src":"31137:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"31127:6:66","nodeType":"YulIdentifier","src":"31127:6:66"},"nativeSrc":"31127:15:66","nodeType":"YulFunctionCall","src":"31127:15:66"},"nativeSrc":"31127:15:66","nodeType":"YulExpressionStatement","src":"31127:15:66"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"31030:1:66","nodeType":"YulIdentifier","src":"31030:1:66"}],"functionName":{"name":"iszero","nativeSrc":"31023:6:66","nodeType":"YulIdentifier","src":"31023:6:66"},"nativeSrc":"31023:9:66","nodeType":"YulFunctionCall","src":"31023:9:66"},"nativeSrc":"31020:132:66","nodeType":"YulIf","src":"31020:132:66"},{"nativeSrc":"31161:14:66","nodeType":"YulAssignment","src":"31161:14:66","value":{"arguments":[{"name":"x","nativeSrc":"31170:1:66","nodeType":"YulIdentifier","src":"31170:1:66"},{"name":"y","nativeSrc":"31173:1:66","nodeType":"YulIdentifier","src":"31173:1:66"}],"functionName":{"name":"div","nativeSrc":"31166:3:66","nodeType":"YulIdentifier","src":"31166:3:66"},"nativeSrc":"31166:9:66","nodeType":"YulFunctionCall","src":"31166:9:66"},"variableNames":[{"name":"r","nativeSrc":"31161:1:66","nodeType":"YulIdentifier","src":"31161:1:66"}]}]},"name":"checked_div_t_uint256","nativeSrc":"30964:217:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"30995:1:66","nodeType":"YulTypedName","src":"30995:1:66","type":""},{"name":"y","nativeSrc":"30998:1:66","nodeType":"YulTypedName","src":"30998:1:66","type":""}],"returnVariables":[{"name":"r","nativeSrc":"31004:1:66","nodeType":"YulTypedName","src":"31004:1:66","type":""}],"src":"30964:217:66"},{"body":{"nativeSrc":"31238:116:66","nodeType":"YulBlock","src":"31238:116:66","statements":[{"nativeSrc":"31248:20:66","nodeType":"YulAssignment","src":"31248:20:66","value":{"arguments":[{"name":"x","nativeSrc":"31263:1:66","nodeType":"YulIdentifier","src":"31263:1:66"},{"name":"y","nativeSrc":"31266:1:66","nodeType":"YulIdentifier","src":"31266:1:66"}],"functionName":{"name":"mul","nativeSrc":"31259:3:66","nodeType":"YulIdentifier","src":"31259:3:66"},"nativeSrc":"31259:9:66","nodeType":"YulFunctionCall","src":"31259:9:66"},"variableNames":[{"name":"product","nativeSrc":"31248:7:66","nodeType":"YulIdentifier","src":"31248:7:66"}]},{"body":{"nativeSrc":"31326:22:66","nodeType":"YulBlock","src":"31326:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"31328:16:66","nodeType":"YulIdentifier","src":"31328:16:66"},"nativeSrc":"31328:18:66","nodeType":"YulFunctionCall","src":"31328:18:66"},"nativeSrc":"31328:18:66","nodeType":"YulExpressionStatement","src":"31328:18:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"31297:1:66","nodeType":"YulIdentifier","src":"31297:1:66"}],"functionName":{"name":"iszero","nativeSrc":"31290:6:66","nodeType":"YulIdentifier","src":"31290:6:66"},"nativeSrc":"31290:9:66","nodeType":"YulFunctionCall","src":"31290:9:66"},{"arguments":[{"name":"y","nativeSrc":"31304:1:66","nodeType":"YulIdentifier","src":"31304:1:66"},{"arguments":[{"name":"product","nativeSrc":"31311:7:66","nodeType":"YulIdentifier","src":"31311:7:66"},{"name":"x","nativeSrc":"31320:1:66","nodeType":"YulIdentifier","src":"31320:1:66"}],"functionName":{"name":"div","nativeSrc":"31307:3:66","nodeType":"YulIdentifier","src":"31307:3:66"},"nativeSrc":"31307:15:66","nodeType":"YulFunctionCall","src":"31307:15:66"}],"functionName":{"name":"eq","nativeSrc":"31301:2:66","nodeType":"YulIdentifier","src":"31301:2:66"},"nativeSrc":"31301:22:66","nodeType":"YulFunctionCall","src":"31301:22:66"}],"functionName":{"name":"or","nativeSrc":"31287:2:66","nodeType":"YulIdentifier","src":"31287:2:66"},"nativeSrc":"31287:37:66","nodeType":"YulFunctionCall","src":"31287:37:66"}],"functionName":{"name":"iszero","nativeSrc":"31280:6:66","nodeType":"YulIdentifier","src":"31280:6:66"},"nativeSrc":"31280:45:66","nodeType":"YulFunctionCall","src":"31280:45:66"},"nativeSrc":"31277:71:66","nodeType":"YulIf","src":"31277:71:66"}]},"name":"checked_mul_t_uint256","nativeSrc":"31186:168:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"31217:1:66","nodeType":"YulTypedName","src":"31217:1:66","type":""},{"name":"y","nativeSrc":"31220:1:66","nodeType":"YulTypedName","src":"31220:1:66","type":""}],"returnVariables":[{"name":"product","nativeSrc":"31226:7:66","nodeType":"YulTypedName","src":"31226:7:66","type":""}],"src":"31186:168:66"},{"body":{"nativeSrc":"31460:154:66","nodeType":"YulBlock","src":"31460:154:66","statements":[{"nativeSrc":"31470:28:66","nodeType":"YulAssignment","src":"31470:28:66","value":{"arguments":[{"name":"array","nativeSrc":"31492:5:66","nodeType":"YulIdentifier","src":"31492:5:66"}],"functionName":{"name":"calldataload","nativeSrc":"31479:12:66","nodeType":"YulIdentifier","src":"31479:12:66"},"nativeSrc":"31479:19:66","nodeType":"YulFunctionCall","src":"31479:19:66"},"variableNames":[{"name":"value","nativeSrc":"31470:5:66","nodeType":"YulIdentifier","src":"31470:5:66"}]},{"body":{"nativeSrc":"31530:78:66","nodeType":"YulBlock","src":"31530:78:66","statements":[{"nativeSrc":"31544:54:66","nodeType":"YulAssignment","src":"31544:54:66","value":{"arguments":[{"name":"value","nativeSrc":"31557:5:66","nodeType":"YulIdentifier","src":"31557:5:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"31572:1:66","nodeType":"YulLiteral","src":"31572:1:66","type":"","value":"3"},{"arguments":[{"kind":"number","nativeSrc":"31579:2:66","nodeType":"YulLiteral","src":"31579:2:66","type":"","value":"32"},{"name":"len","nativeSrc":"31583:3:66","nodeType":"YulIdentifier","src":"31583:3:66"}],"functionName":{"name":"sub","nativeSrc":"31575:3:66","nodeType":"YulIdentifier","src":"31575:3:66"},"nativeSrc":"31575:12:66","nodeType":"YulFunctionCall","src":"31575:12:66"}],"functionName":{"name":"shl","nativeSrc":"31568:3:66","nodeType":"YulIdentifier","src":"31568:3:66"},"nativeSrc":"31568:20:66","nodeType":"YulFunctionCall","src":"31568:20:66"},{"arguments":[{"kind":"number","nativeSrc":"31594:1:66","nodeType":"YulLiteral","src":"31594:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"31590:3:66","nodeType":"YulIdentifier","src":"31590:3:66"},"nativeSrc":"31590:6:66","nodeType":"YulFunctionCall","src":"31590:6:66"}],"functionName":{"name":"shl","nativeSrc":"31564:3:66","nodeType":"YulIdentifier","src":"31564:3:66"},"nativeSrc":"31564:33:66","nodeType":"YulFunctionCall","src":"31564:33:66"}],"functionName":{"name":"and","nativeSrc":"31553:3:66","nodeType":"YulIdentifier","src":"31553:3:66"},"nativeSrc":"31553:45:66","nodeType":"YulFunctionCall","src":"31553:45:66"},"variableNames":[{"name":"value","nativeSrc":"31544:5:66","nodeType":"YulIdentifier","src":"31544:5:66"}]}]},"condition":{"arguments":[{"name":"len","nativeSrc":"31513:3:66","nodeType":"YulIdentifier","src":"31513:3:66"},{"kind":"number","nativeSrc":"31518:2:66","nodeType":"YulLiteral","src":"31518:2:66","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"31510:2:66","nodeType":"YulIdentifier","src":"31510:2:66"},"nativeSrc":"31510:11:66","nodeType":"YulFunctionCall","src":"31510:11:66"},"nativeSrc":"31507:101:66","nodeType":"YulIf","src":"31507:101:66"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes32","nativeSrc":"31359:255:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"31435:5:66","nodeType":"YulTypedName","src":"31435:5:66","type":""},{"name":"len","nativeSrc":"31442:3:66","nodeType":"YulTypedName","src":"31442:3:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"31450:5:66","nodeType":"YulTypedName","src":"31450:5:66","type":""}],"src":"31359:255:66"},{"body":{"nativeSrc":"31719:262:66","nodeType":"YulBlock","src":"31719:262:66","statements":[{"nativeSrc":"31729:29:66","nodeType":"YulVariableDeclaration","src":"31729:29:66","value":{"arguments":[{"name":"array","nativeSrc":"31752:5:66","nodeType":"YulIdentifier","src":"31752:5:66"}],"functionName":{"name":"calldataload","nativeSrc":"31739:12:66","nodeType":"YulIdentifier","src":"31739:12:66"},"nativeSrc":"31739:19:66","nodeType":"YulFunctionCall","src":"31739:19:66"},"variables":[{"name":"_1","nativeSrc":"31733:2:66","nodeType":"YulTypedName","src":"31733:2:66","type":""}]},{"nativeSrc":"31767:46:66","nodeType":"YulAssignment","src":"31767:46:66","value":{"arguments":[{"name":"_1","nativeSrc":"31780:2:66","nodeType":"YulIdentifier","src":"31780:2:66"},{"arguments":[{"kind":"number","nativeSrc":"31788:3:66","nodeType":"YulLiteral","src":"31788:3:66","type":"","value":"192"},{"kind":"number","nativeSrc":"31793:18:66","nodeType":"YulLiteral","src":"31793:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"31784:3:66","nodeType":"YulIdentifier","src":"31784:3:66"},"nativeSrc":"31784:28:66","nodeType":"YulFunctionCall","src":"31784:28:66"}],"functionName":{"name":"and","nativeSrc":"31776:3:66","nodeType":"YulIdentifier","src":"31776:3:66"},"nativeSrc":"31776:37:66","nodeType":"YulFunctionCall","src":"31776:37:66"},"variableNames":[{"name":"value","nativeSrc":"31767:5:66","nodeType":"YulIdentifier","src":"31767:5:66"}]},{"body":{"nativeSrc":"31844:131:66","nodeType":"YulBlock","src":"31844:131:66","statements":[{"nativeSrc":"31858:107:66","nodeType":"YulAssignment","src":"31858:107:66","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"31875:2:66","nodeType":"YulIdentifier","src":"31875:2:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"31887:1:66","nodeType":"YulLiteral","src":"31887:1:66","type":"","value":"3"},{"arguments":[{"kind":"number","nativeSrc":"31894:1:66","nodeType":"YulLiteral","src":"31894:1:66","type":"","value":"8"},{"name":"len","nativeSrc":"31897:3:66","nodeType":"YulIdentifier","src":"31897:3:66"}],"functionName":{"name":"sub","nativeSrc":"31890:3:66","nodeType":"YulIdentifier","src":"31890:3:66"},"nativeSrc":"31890:11:66","nodeType":"YulFunctionCall","src":"31890:11:66"}],"functionName":{"name":"shl","nativeSrc":"31883:3:66","nodeType":"YulIdentifier","src":"31883:3:66"},"nativeSrc":"31883:19:66","nodeType":"YulFunctionCall","src":"31883:19:66"},{"arguments":[{"kind":"number","nativeSrc":"31908:3:66","nodeType":"YulLiteral","src":"31908:3:66","type":"","value":"192"},{"kind":"number","nativeSrc":"31913:18:66","nodeType":"YulLiteral","src":"31913:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"31904:3:66","nodeType":"YulIdentifier","src":"31904:3:66"},"nativeSrc":"31904:28:66","nodeType":"YulFunctionCall","src":"31904:28:66"}],"functionName":{"name":"shl","nativeSrc":"31879:3:66","nodeType":"YulIdentifier","src":"31879:3:66"},"nativeSrc":"31879:54:66","nodeType":"YulFunctionCall","src":"31879:54:66"}],"functionName":{"name":"and","nativeSrc":"31871:3:66","nodeType":"YulIdentifier","src":"31871:3:66"},"nativeSrc":"31871:63:66","nodeType":"YulFunctionCall","src":"31871:63:66"},{"arguments":[{"kind":"number","nativeSrc":"31940:3:66","nodeType":"YulLiteral","src":"31940:3:66","type":"","value":"192"},{"kind":"number","nativeSrc":"31945:18:66","nodeType":"YulLiteral","src":"31945:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"31936:3:66","nodeType":"YulIdentifier","src":"31936:3:66"},"nativeSrc":"31936:28:66","nodeType":"YulFunctionCall","src":"31936:28:66"}],"functionName":{"name":"and","nativeSrc":"31867:3:66","nodeType":"YulIdentifier","src":"31867:3:66"},"nativeSrc":"31867:98:66","nodeType":"YulFunctionCall","src":"31867:98:66"},"variableNames":[{"name":"value","nativeSrc":"31858:5:66","nodeType":"YulIdentifier","src":"31858:5:66"}]}]},"condition":{"arguments":[{"name":"len","nativeSrc":"31828:3:66","nodeType":"YulIdentifier","src":"31828:3:66"},{"kind":"number","nativeSrc":"31833:1:66","nodeType":"YulLiteral","src":"31833:1:66","type":"","value":"8"}],"functionName":{"name":"lt","nativeSrc":"31825:2:66","nodeType":"YulIdentifier","src":"31825:2:66"},"nativeSrc":"31825:10:66","nodeType":"YulFunctionCall","src":"31825:10:66"},"nativeSrc":"31822:153:66","nodeType":"YulIf","src":"31822:153:66"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes8","nativeSrc":"31619:362:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"31694:5:66","nodeType":"YulTypedName","src":"31694:5:66","type":""},{"name":"len","nativeSrc":"31701:3:66","nodeType":"YulTypedName","src":"31701:3:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"31709:5:66","nodeType":"YulTypedName","src":"31709:5:66","type":""}],"src":"31619:362:66"},{"body":{"nativeSrc":"32203:351:66","nodeType":"YulBlock","src":"32203:351:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"32220:3:66","nodeType":"YulIdentifier","src":"32220:3:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"32233:3:66","nodeType":"YulLiteral","src":"32233:3:66","type":"","value":"192"},{"name":"value0","nativeSrc":"32238:6:66","nodeType":"YulIdentifier","src":"32238:6:66"}],"functionName":{"name":"shl","nativeSrc":"32229:3:66","nodeType":"YulIdentifier","src":"32229:3:66"},"nativeSrc":"32229:16:66","nodeType":"YulFunctionCall","src":"32229:16:66"},{"arguments":[{"kind":"number","nativeSrc":"32251:3:66","nodeType":"YulLiteral","src":"32251:3:66","type":"","value":"192"},{"kind":"number","nativeSrc":"32256:18:66","nodeType":"YulLiteral","src":"32256:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"32247:3:66","nodeType":"YulIdentifier","src":"32247:3:66"},"nativeSrc":"32247:28:66","nodeType":"YulFunctionCall","src":"32247:28:66"}],"functionName":{"name":"and","nativeSrc":"32225:3:66","nodeType":"YulIdentifier","src":"32225:3:66"},"nativeSrc":"32225:51:66","nodeType":"YulFunctionCall","src":"32225:51:66"}],"functionName":{"name":"mstore","nativeSrc":"32213:6:66","nodeType":"YulIdentifier","src":"32213:6:66"},"nativeSrc":"32213:64:66","nodeType":"YulFunctionCall","src":"32213:64:66"},"nativeSrc":"32213:64:66","nodeType":"YulExpressionStatement","src":"32213:64:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"32297:3:66","nodeType":"YulIdentifier","src":"32297:3:66"},{"kind":"number","nativeSrc":"32302:1:66","nodeType":"YulLiteral","src":"32302:1:66","type":"","value":"8"}],"functionName":{"name":"add","nativeSrc":"32293:3:66","nodeType":"YulIdentifier","src":"32293:3:66"},"nativeSrc":"32293:11:66","nodeType":"YulFunctionCall","src":"32293:11:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"32314:3:66","nodeType":"YulLiteral","src":"32314:3:66","type":"","value":"224"},{"name":"value1","nativeSrc":"32319:6:66","nodeType":"YulIdentifier","src":"32319:6:66"}],"functionName":{"name":"shl","nativeSrc":"32310:3:66","nodeType":"YulIdentifier","src":"32310:3:66"},"nativeSrc":"32310:16:66","nodeType":"YulFunctionCall","src":"32310:16:66"},{"arguments":[{"kind":"number","nativeSrc":"32332:3:66","nodeType":"YulLiteral","src":"32332:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"32337:10:66","nodeType":"YulLiteral","src":"32337:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"32328:3:66","nodeType":"YulIdentifier","src":"32328:3:66"},"nativeSrc":"32328:20:66","nodeType":"YulFunctionCall","src":"32328:20:66"}],"functionName":{"name":"and","nativeSrc":"32306:3:66","nodeType":"YulIdentifier","src":"32306:3:66"},"nativeSrc":"32306:43:66","nodeType":"YulFunctionCall","src":"32306:43:66"}],"functionName":{"name":"mstore","nativeSrc":"32286:6:66","nodeType":"YulIdentifier","src":"32286:6:66"},"nativeSrc":"32286:64:66","nodeType":"YulFunctionCall","src":"32286:64:66"},"nativeSrc":"32286:64:66","nodeType":"YulExpressionStatement","src":"32286:64:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"32370:3:66","nodeType":"YulIdentifier","src":"32370:3:66"},{"kind":"number","nativeSrc":"32375:2:66","nodeType":"YulLiteral","src":"32375:2:66","type":"","value":"12"}],"functionName":{"name":"add","nativeSrc":"32366:3:66","nodeType":"YulIdentifier","src":"32366:3:66"},"nativeSrc":"32366:12:66","nodeType":"YulFunctionCall","src":"32366:12:66"},{"name":"value2","nativeSrc":"32380:6:66","nodeType":"YulIdentifier","src":"32380:6:66"}],"functionName":{"name":"mstore","nativeSrc":"32359:6:66","nodeType":"YulIdentifier","src":"32359:6:66"},"nativeSrc":"32359:28:66","nodeType":"YulFunctionCall","src":"32359:28:66"},"nativeSrc":"32359:28:66","nodeType":"YulExpressionStatement","src":"32359:28:66"},{"nativeSrc":"32396:27:66","nodeType":"YulVariableDeclaration","src":"32396:27:66","value":{"arguments":[{"name":"value3","nativeSrc":"32416:6:66","nodeType":"YulIdentifier","src":"32416:6:66"}],"functionName":{"name":"mload","nativeSrc":"32410:5:66","nodeType":"YulIdentifier","src":"32410:5:66"},"nativeSrc":"32410:13:66","nodeType":"YulFunctionCall","src":"32410:13:66"},"variables":[{"name":"length","nativeSrc":"32400:6:66","nodeType":"YulTypedName","src":"32400:6:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value3","nativeSrc":"32471:6:66","nodeType":"YulIdentifier","src":"32471:6:66"},{"kind":"number","nativeSrc":"32479:4:66","nodeType":"YulLiteral","src":"32479:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"32467:3:66","nodeType":"YulIdentifier","src":"32467:3:66"},"nativeSrc":"32467:17:66","nodeType":"YulFunctionCall","src":"32467:17:66"},{"arguments":[{"name":"pos","nativeSrc":"32490:3:66","nodeType":"YulIdentifier","src":"32490:3:66"},{"kind":"number","nativeSrc":"32495:2:66","nodeType":"YulLiteral","src":"32495:2:66","type":"","value":"44"}],"functionName":{"name":"add","nativeSrc":"32486:3:66","nodeType":"YulIdentifier","src":"32486:3:66"},"nativeSrc":"32486:12:66","nodeType":"YulFunctionCall","src":"32486:12:66"},{"name":"length","nativeSrc":"32500:6:66","nodeType":"YulIdentifier","src":"32500:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"32432:34:66","nodeType":"YulIdentifier","src":"32432:34:66"},"nativeSrc":"32432:75:66","nodeType":"YulFunctionCall","src":"32432:75:66"},"nativeSrc":"32432:75:66","nodeType":"YulExpressionStatement","src":"32432:75:66"},{"nativeSrc":"32516:32:66","nodeType":"YulAssignment","src":"32516:32:66","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"32531:3:66","nodeType":"YulIdentifier","src":"32531:3:66"},{"name":"length","nativeSrc":"32536:6:66","nodeType":"YulIdentifier","src":"32536:6:66"}],"functionName":{"name":"add","nativeSrc":"32527:3:66","nodeType":"YulIdentifier","src":"32527:3:66"},"nativeSrc":"32527:16:66","nodeType":"YulFunctionCall","src":"32527:16:66"},{"kind":"number","nativeSrc":"32545:2:66","nodeType":"YulLiteral","src":"32545:2:66","type":"","value":"44"}],"functionName":{"name":"add","nativeSrc":"32523:3:66","nodeType":"YulIdentifier","src":"32523:3:66"},"nativeSrc":"32523:25:66","nodeType":"YulFunctionCall","src":"32523:25:66"},"variableNames":[{"name":"end","nativeSrc":"32516:3:66","nodeType":"YulIdentifier","src":"32516:3:66"}]}]},"name":"abi_encode_tuple_packed_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__to_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"31986:568:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"32155:3:66","nodeType":"YulTypedName","src":"32155:3:66","type":""},{"name":"value3","nativeSrc":"32160:6:66","nodeType":"YulTypedName","src":"32160:6:66","type":""},{"name":"value2","nativeSrc":"32168:6:66","nodeType":"YulTypedName","src":"32168:6:66","type":""},{"name":"value1","nativeSrc":"32176:6:66","nodeType":"YulTypedName","src":"32176:6:66","type":""},{"name":"value0","nativeSrc":"32184:6:66","nodeType":"YulTypedName","src":"32184:6:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"32195:3:66","nodeType":"YulTypedName","src":"32195:3:66","type":""}],"src":"31986:568:66"},{"body":{"nativeSrc":"32607:77:66","nodeType":"YulBlock","src":"32607:77:66","statements":[{"nativeSrc":"32617:16:66","nodeType":"YulAssignment","src":"32617:16:66","value":{"arguments":[{"name":"x","nativeSrc":"32628:1:66","nodeType":"YulIdentifier","src":"32628:1:66"},{"name":"y","nativeSrc":"32631:1:66","nodeType":"YulIdentifier","src":"32631:1:66"}],"functionName":{"name":"add","nativeSrc":"32624:3:66","nodeType":"YulIdentifier","src":"32624:3:66"},"nativeSrc":"32624:9:66","nodeType":"YulFunctionCall","src":"32624:9:66"},"variableNames":[{"name":"sum","nativeSrc":"32617:3:66","nodeType":"YulIdentifier","src":"32617:3:66"}]},{"body":{"nativeSrc":"32656:22:66","nodeType":"YulBlock","src":"32656:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"32658:16:66","nodeType":"YulIdentifier","src":"32658:16:66"},"nativeSrc":"32658:18:66","nodeType":"YulFunctionCall","src":"32658:18:66"},"nativeSrc":"32658:18:66","nodeType":"YulExpressionStatement","src":"32658:18:66"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"32648:1:66","nodeType":"YulIdentifier","src":"32648:1:66"},{"name":"sum","nativeSrc":"32651:3:66","nodeType":"YulIdentifier","src":"32651:3:66"}],"functionName":{"name":"gt","nativeSrc":"32645:2:66","nodeType":"YulIdentifier","src":"32645:2:66"},"nativeSrc":"32645:10:66","nodeType":"YulFunctionCall","src":"32645:10:66"},"nativeSrc":"32642:36:66","nodeType":"YulIf","src":"32642:36:66"}]},"name":"checked_add_t_uint256","nativeSrc":"32559:125:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"32590:1:66","nodeType":"YulTypedName","src":"32590:1:66","type":""},{"name":"y","nativeSrc":"32593:1:66","nodeType":"YulTypedName","src":"32593:1:66","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"32599:3:66","nodeType":"YulTypedName","src":"32599:3:66","type":""}],"src":"32559:125:66"},{"body":{"nativeSrc":"32834:145:66","nodeType":"YulBlock","src":"32834:145:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"32851:3:66","nodeType":"YulIdentifier","src":"32851:3:66"},{"name":"value0","nativeSrc":"32856:6:66","nodeType":"YulIdentifier","src":"32856:6:66"}],"functionName":{"name":"mstore","nativeSrc":"32844:6:66","nodeType":"YulIdentifier","src":"32844:6:66"},"nativeSrc":"32844:19:66","nodeType":"YulFunctionCall","src":"32844:19:66"},"nativeSrc":"32844:19:66","nodeType":"YulExpressionStatement","src":"32844:19:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"32883:3:66","nodeType":"YulIdentifier","src":"32883:3:66"},{"kind":"number","nativeSrc":"32888:2:66","nodeType":"YulLiteral","src":"32888:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"32879:3:66","nodeType":"YulIdentifier","src":"32879:3:66"},"nativeSrc":"32879:12:66","nodeType":"YulFunctionCall","src":"32879:12:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"32901:3:66","nodeType":"YulLiteral","src":"32901:3:66","type":"","value":"192"},{"name":"value1","nativeSrc":"32906:6:66","nodeType":"YulIdentifier","src":"32906:6:66"}],"functionName":{"name":"shl","nativeSrc":"32897:3:66","nodeType":"YulIdentifier","src":"32897:3:66"},"nativeSrc":"32897:16:66","nodeType":"YulFunctionCall","src":"32897:16:66"},{"arguments":[{"kind":"number","nativeSrc":"32919:3:66","nodeType":"YulLiteral","src":"32919:3:66","type":"","value":"192"},{"kind":"number","nativeSrc":"32924:18:66","nodeType":"YulLiteral","src":"32924:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"32915:3:66","nodeType":"YulIdentifier","src":"32915:3:66"},"nativeSrc":"32915:28:66","nodeType":"YulFunctionCall","src":"32915:28:66"}],"functionName":{"name":"and","nativeSrc":"32893:3:66","nodeType":"YulIdentifier","src":"32893:3:66"},"nativeSrc":"32893:51:66","nodeType":"YulFunctionCall","src":"32893:51:66"}],"functionName":{"name":"mstore","nativeSrc":"32872:6:66","nodeType":"YulIdentifier","src":"32872:6:66"},"nativeSrc":"32872:73:66","nodeType":"YulFunctionCall","src":"32872:73:66"},"nativeSrc":"32872:73:66","nodeType":"YulExpressionStatement","src":"32872:73:66"},{"nativeSrc":"32954:19:66","nodeType":"YulAssignment","src":"32954:19:66","value":{"arguments":[{"name":"pos","nativeSrc":"32965:3:66","nodeType":"YulIdentifier","src":"32965:3:66"},{"kind":"number","nativeSrc":"32970:2:66","nodeType":"YulLiteral","src":"32970:2:66","type":"","value":"40"}],"functionName":{"name":"add","nativeSrc":"32961:3:66","nodeType":"YulIdentifier","src":"32961:3:66"},"nativeSrc":"32961:12:66","nodeType":"YulFunctionCall","src":"32961:12:66"},"variableNames":[{"name":"end","nativeSrc":"32954:3:66","nodeType":"YulIdentifier","src":"32954:3:66"}]}]},"name":"abi_encode_tuple_packed_t_bytes32_t_uint64__to_t_bytes32_t_uint64__nonPadded_inplace_fromStack_reversed","nativeSrc":"32689:290:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"32802:3:66","nodeType":"YulTypedName","src":"32802:3:66","type":""},{"name":"value1","nativeSrc":"32807:6:66","nodeType":"YulTypedName","src":"32807:6:66","type":""},{"name":"value0","nativeSrc":"32815:6:66","nodeType":"YulTypedName","src":"32815:6:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"32826:3:66","nodeType":"YulTypedName","src":"32826:3:66","type":""}],"src":"32689:290:66"},{"body":{"nativeSrc":"33203:313:66","nodeType":"YulBlock","src":"33203:313:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"33220:3:66","nodeType":"YulIdentifier","src":"33220:3:66"},{"name":"value0","nativeSrc":"33225:6:66","nodeType":"YulIdentifier","src":"33225:6:66"}],"functionName":{"name":"mstore","nativeSrc":"33213:6:66","nodeType":"YulIdentifier","src":"33213:6:66"},"nativeSrc":"33213:19:66","nodeType":"YulFunctionCall","src":"33213:19:66"},"nativeSrc":"33213:19:66","nodeType":"YulExpressionStatement","src":"33213:19:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"33252:3:66","nodeType":"YulIdentifier","src":"33252:3:66"},{"kind":"number","nativeSrc":"33257:2:66","nodeType":"YulLiteral","src":"33257:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"33248:3:66","nodeType":"YulIdentifier","src":"33248:3:66"},"nativeSrc":"33248:12:66","nodeType":"YulFunctionCall","src":"33248:12:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"33270:3:66","nodeType":"YulLiteral","src":"33270:3:66","type":"","value":"192"},{"name":"value1","nativeSrc":"33275:6:66","nodeType":"YulIdentifier","src":"33275:6:66"}],"functionName":{"name":"shl","nativeSrc":"33266:3:66","nodeType":"YulIdentifier","src":"33266:3:66"},"nativeSrc":"33266:16:66","nodeType":"YulFunctionCall","src":"33266:16:66"},{"arguments":[{"kind":"number","nativeSrc":"33288:3:66","nodeType":"YulLiteral","src":"33288:3:66","type":"","value":"192"},{"kind":"number","nativeSrc":"33293:18:66","nodeType":"YulLiteral","src":"33293:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"33284:3:66","nodeType":"YulIdentifier","src":"33284:3:66"},"nativeSrc":"33284:28:66","nodeType":"YulFunctionCall","src":"33284:28:66"}],"functionName":{"name":"and","nativeSrc":"33262:3:66","nodeType":"YulIdentifier","src":"33262:3:66"},"nativeSrc":"33262:51:66","nodeType":"YulFunctionCall","src":"33262:51:66"}],"functionName":{"name":"mstore","nativeSrc":"33241:6:66","nodeType":"YulIdentifier","src":"33241:6:66"},"nativeSrc":"33241:73:66","nodeType":"YulFunctionCall","src":"33241:73:66"},"nativeSrc":"33241:73:66","nodeType":"YulExpressionStatement","src":"33241:73:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"33334:3:66","nodeType":"YulIdentifier","src":"33334:3:66"},{"kind":"number","nativeSrc":"33339:2:66","nodeType":"YulLiteral","src":"33339:2:66","type":"","value":"40"}],"functionName":{"name":"add","nativeSrc":"33330:3:66","nodeType":"YulIdentifier","src":"33330:3:66"},"nativeSrc":"33330:12:66","nodeType":"YulFunctionCall","src":"33330:12:66"},{"name":"value2","nativeSrc":"33344:6:66","nodeType":"YulIdentifier","src":"33344:6:66"}],"functionName":{"name":"mstore","nativeSrc":"33323:6:66","nodeType":"YulIdentifier","src":"33323:6:66"},"nativeSrc":"33323:28:66","nodeType":"YulFunctionCall","src":"33323:28:66"},"nativeSrc":"33323:28:66","nodeType":"YulExpressionStatement","src":"33323:28:66"},{"nativeSrc":"33360:27:66","nodeType":"YulVariableDeclaration","src":"33360:27:66","value":{"arguments":[{"name":"value3","nativeSrc":"33380:6:66","nodeType":"YulIdentifier","src":"33380:6:66"}],"functionName":{"name":"mload","nativeSrc":"33374:5:66","nodeType":"YulIdentifier","src":"33374:5:66"},"nativeSrc":"33374:13:66","nodeType":"YulFunctionCall","src":"33374:13:66"},"variables":[{"name":"length","nativeSrc":"33364:6:66","nodeType":"YulTypedName","src":"33364:6:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value3","nativeSrc":"33435:6:66","nodeType":"YulIdentifier","src":"33435:6:66"},{"kind":"number","nativeSrc":"33443:2:66","nodeType":"YulLiteral","src":"33443:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"33431:3:66","nodeType":"YulIdentifier","src":"33431:3:66"},"nativeSrc":"33431:15:66","nodeType":"YulFunctionCall","src":"33431:15:66"},{"arguments":[{"name":"pos","nativeSrc":"33452:3:66","nodeType":"YulIdentifier","src":"33452:3:66"},{"kind":"number","nativeSrc":"33457:2:66","nodeType":"YulLiteral","src":"33457:2:66","type":"","value":"72"}],"functionName":{"name":"add","nativeSrc":"33448:3:66","nodeType":"YulIdentifier","src":"33448:3:66"},"nativeSrc":"33448:12:66","nodeType":"YulFunctionCall","src":"33448:12:66"},{"name":"length","nativeSrc":"33462:6:66","nodeType":"YulIdentifier","src":"33462:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"33396:34:66","nodeType":"YulIdentifier","src":"33396:34:66"},"nativeSrc":"33396:73:66","nodeType":"YulFunctionCall","src":"33396:73:66"},"nativeSrc":"33396:73:66","nodeType":"YulExpressionStatement","src":"33396:73:66"},{"nativeSrc":"33478:32:66","nodeType":"YulAssignment","src":"33478:32:66","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"33493:3:66","nodeType":"YulIdentifier","src":"33493:3:66"},{"name":"length","nativeSrc":"33498:6:66","nodeType":"YulIdentifier","src":"33498:6:66"}],"functionName":{"name":"add","nativeSrc":"33489:3:66","nodeType":"YulIdentifier","src":"33489:3:66"},"nativeSrc":"33489:16:66","nodeType":"YulFunctionCall","src":"33489:16:66"},{"kind":"number","nativeSrc":"33507:2:66","nodeType":"YulLiteral","src":"33507:2:66","type":"","value":"72"}],"functionName":{"name":"add","nativeSrc":"33485:3:66","nodeType":"YulIdentifier","src":"33485:3:66"},"nativeSrc":"33485:25:66","nodeType":"YulFunctionCall","src":"33485:25:66"},"variableNames":[{"name":"end","nativeSrc":"33478:3:66","nodeType":"YulIdentifier","src":"33478:3:66"}]}]},"name":"abi_encode_tuple_packed_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"32984:532:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"33155:3:66","nodeType":"YulTypedName","src":"33155:3:66","type":""},{"name":"value3","nativeSrc":"33160:6:66","nodeType":"YulTypedName","src":"33160:6:66","type":""},{"name":"value2","nativeSrc":"33168:6:66","nodeType":"YulTypedName","src":"33168:6:66","type":""},{"name":"value1","nativeSrc":"33176:6:66","nodeType":"YulTypedName","src":"33176:6:66","type":""},{"name":"value0","nativeSrc":"33184:6:66","nodeType":"YulTypedName","src":"33184:6:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"33195:3:66","nodeType":"YulTypedName","src":"33195:3:66","type":""}],"src":"32984:532:66"},{"body":{"nativeSrc":"33634:447:66","nodeType":"YulBlock","src":"33634:447:66","statements":[{"nativeSrc":"33644:43:66","nodeType":"YulVariableDeclaration","src":"33644:43:66","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"33662:7:66","nodeType":"YulIdentifier","src":"33662:7:66"},{"name":"headStart","nativeSrc":"33671:9:66","nodeType":"YulIdentifier","src":"33671:9:66"}],"functionName":{"name":"sub","nativeSrc":"33658:3:66","nodeType":"YulIdentifier","src":"33658:3:66"},"nativeSrc":"33658:23:66","nodeType":"YulFunctionCall","src":"33658:23:66"},{"kind":"number","nativeSrc":"33683:3:66","nodeType":"YulLiteral","src":"33683:3:66","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"33654:3:66","nodeType":"YulIdentifier","src":"33654:3:66"},"nativeSrc":"33654:33:66","nodeType":"YulFunctionCall","src":"33654:33:66"},"variables":[{"name":"_1","nativeSrc":"33648:2:66","nodeType":"YulTypedName","src":"33648:2:66","type":""}]},{"body":{"nativeSrc":"33702:16:66","nodeType":"YulBlock","src":"33702:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"33711:1:66","nodeType":"YulLiteral","src":"33711:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"33714:1:66","nodeType":"YulLiteral","src":"33714:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"33704:6:66","nodeType":"YulIdentifier","src":"33704:6:66"},"nativeSrc":"33704:12:66","nodeType":"YulFunctionCall","src":"33704:12:66"},"nativeSrc":"33704:12:66","nodeType":"YulExpressionStatement","src":"33704:12:66"}]},"condition":{"name":"_1","nativeSrc":"33699:2:66","nodeType":"YulIdentifier","src":"33699:2:66"},"nativeSrc":"33696:22:66","nodeType":"YulIf","src":"33696:22:66"},{"nativeSrc":"33727:7:66","nodeType":"YulAssignment","src":"33727:7:66","value":{"kind":"number","nativeSrc":"33733:1:66","nodeType":"YulLiteral","src":"33733:1:66","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"33727:2:66","nodeType":"YulIdentifier","src":"33727:2:66"}]},{"nativeSrc":"33743:35:66","nodeType":"YulVariableDeclaration","src":"33743:35:66","value":{"arguments":[],"functionName":{"name":"allocate_memory_3873","nativeSrc":"33756:20:66","nodeType":"YulIdentifier","src":"33756:20:66"},"nativeSrc":"33756:22:66","nodeType":"YulFunctionCall","src":"33756:22:66"},"variables":[{"name":"value","nativeSrc":"33747:5:66","nodeType":"YulTypedName","src":"33747:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"33794:5:66","nodeType":"YulIdentifier","src":"33794:5:66"},{"arguments":[{"name":"headStart","nativeSrc":"33807:9:66","nodeType":"YulIdentifier","src":"33807:9:66"}],"functionName":{"name":"mload","nativeSrc":"33801:5:66","nodeType":"YulIdentifier","src":"33801:5:66"},"nativeSrc":"33801:16:66","nodeType":"YulFunctionCall","src":"33801:16:66"}],"functionName":{"name":"mstore","nativeSrc":"33787:6:66","nodeType":"YulIdentifier","src":"33787:6:66"},"nativeSrc":"33787:31:66","nodeType":"YulFunctionCall","src":"33787:31:66"},"nativeSrc":"33787:31:66","nodeType":"YulExpressionStatement","src":"33787:31:66"},{"nativeSrc":"33827:40:66","nodeType":"YulVariableDeclaration","src":"33827:40:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"33852:9:66","nodeType":"YulIdentifier","src":"33852:9:66"},{"kind":"number","nativeSrc":"33863:2:66","nodeType":"YulLiteral","src":"33863:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"33848:3:66","nodeType":"YulIdentifier","src":"33848:3:66"},"nativeSrc":"33848:18:66","nodeType":"YulFunctionCall","src":"33848:18:66"}],"functionName":{"name":"mload","nativeSrc":"33842:5:66","nodeType":"YulIdentifier","src":"33842:5:66"},"nativeSrc":"33842:25:66","nodeType":"YulFunctionCall","src":"33842:25:66"},"variables":[{"name":"value_1","nativeSrc":"33831:7:66","nodeType":"YulTypedName","src":"33831:7:66","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"33900:7:66","nodeType":"YulIdentifier","src":"33900:7:66"}],"functionName":{"name":"validator_revert_uint64","nativeSrc":"33876:23:66","nodeType":"YulIdentifier","src":"33876:23:66"},"nativeSrc":"33876:32:66","nodeType":"YulFunctionCall","src":"33876:32:66"},"nativeSrc":"33876:32:66","nodeType":"YulExpressionStatement","src":"33876:32:66"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"33928:5:66","nodeType":"YulIdentifier","src":"33928:5:66"},{"kind":"number","nativeSrc":"33935:2:66","nodeType":"YulLiteral","src":"33935:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"33924:3:66","nodeType":"YulIdentifier","src":"33924:3:66"},"nativeSrc":"33924:14:66","nodeType":"YulFunctionCall","src":"33924:14:66"},{"name":"value_1","nativeSrc":"33940:7:66","nodeType":"YulIdentifier","src":"33940:7:66"}],"functionName":{"name":"mstore","nativeSrc":"33917:6:66","nodeType":"YulIdentifier","src":"33917:6:66"},"nativeSrc":"33917:31:66","nodeType":"YulFunctionCall","src":"33917:31:66"},"nativeSrc":"33917:31:66","nodeType":"YulExpressionStatement","src":"33917:31:66"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"33968:5:66","nodeType":"YulIdentifier","src":"33968:5:66"},{"kind":"number","nativeSrc":"33975:2:66","nodeType":"YulLiteral","src":"33975:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"33964:3:66","nodeType":"YulIdentifier","src":"33964:3:66"},"nativeSrc":"33964:14:66","nodeType":"YulFunctionCall","src":"33964:14:66"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"34026:9:66","nodeType":"YulIdentifier","src":"34026:9:66"},{"kind":"number","nativeSrc":"34037:2:66","nodeType":"YulLiteral","src":"34037:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"34022:3:66","nodeType":"YulIdentifier","src":"34022:3:66"},"nativeSrc":"34022:18:66","nodeType":"YulFunctionCall","src":"34022:18:66"},{"name":"dataEnd","nativeSrc":"34042:7:66","nodeType":"YulIdentifier","src":"34042:7:66"}],"functionName":{"name":"abi_decode_struct_MessagingFee_fromMemory","nativeSrc":"33980:41:66","nodeType":"YulIdentifier","src":"33980:41:66"},"nativeSrc":"33980:70:66","nodeType":"YulFunctionCall","src":"33980:70:66"}],"functionName":{"name":"mstore","nativeSrc":"33957:6:66","nodeType":"YulIdentifier","src":"33957:6:66"},"nativeSrc":"33957:94:66","nodeType":"YulFunctionCall","src":"33957:94:66"},"nativeSrc":"33957:94:66","nodeType":"YulExpressionStatement","src":"33957:94:66"},{"nativeSrc":"34060:15:66","nodeType":"YulAssignment","src":"34060:15:66","value":{"name":"value","nativeSrc":"34070:5:66","nodeType":"YulIdentifier","src":"34070:5:66"},"variableNames":[{"name":"value0","nativeSrc":"34060:6:66","nodeType":"YulIdentifier","src":"34060:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_fromMemory","nativeSrc":"33521:560:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"33600:9:66","nodeType":"YulTypedName","src":"33600:9:66","type":""},{"name":"dataEnd","nativeSrc":"33611:7:66","nodeType":"YulTypedName","src":"33611:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"33623:6:66","nodeType":"YulTypedName","src":"33623:6:66","type":""}],"src":"33521:560:66"},{"body":{"nativeSrc":"34243:214:66","nodeType":"YulBlock","src":"34243:214:66","statements":[{"nativeSrc":"34253:26:66","nodeType":"YulAssignment","src":"34253:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"34265:9:66","nodeType":"YulIdentifier","src":"34265:9:66"},{"kind":"number","nativeSrc":"34276:2:66","nodeType":"YulLiteral","src":"34276:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"34261:3:66","nodeType":"YulIdentifier","src":"34261:3:66"},"nativeSrc":"34261:18:66","nodeType":"YulFunctionCall","src":"34261:18:66"},"variableNames":[{"name":"tail","nativeSrc":"34253:4:66","nodeType":"YulIdentifier","src":"34253:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"34295:9:66","nodeType":"YulIdentifier","src":"34295:9:66"},{"arguments":[{"name":"value0","nativeSrc":"34310:6:66","nodeType":"YulIdentifier","src":"34310:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"34326:3:66","nodeType":"YulLiteral","src":"34326:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"34331:1:66","nodeType":"YulLiteral","src":"34331:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"34322:3:66","nodeType":"YulIdentifier","src":"34322:3:66"},"nativeSrc":"34322:11:66","nodeType":"YulFunctionCall","src":"34322:11:66"},{"kind":"number","nativeSrc":"34335:1:66","nodeType":"YulLiteral","src":"34335:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"34318:3:66","nodeType":"YulIdentifier","src":"34318:3:66"},"nativeSrc":"34318:19:66","nodeType":"YulFunctionCall","src":"34318:19:66"}],"functionName":{"name":"and","nativeSrc":"34306:3:66","nodeType":"YulIdentifier","src":"34306:3:66"},"nativeSrc":"34306:32:66","nodeType":"YulFunctionCall","src":"34306:32:66"}],"functionName":{"name":"mstore","nativeSrc":"34288:6:66","nodeType":"YulIdentifier","src":"34288:6:66"},"nativeSrc":"34288:51:66","nodeType":"YulFunctionCall","src":"34288:51:66"},"nativeSrc":"34288:51:66","nodeType":"YulExpressionStatement","src":"34288:51:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"34359:9:66","nodeType":"YulIdentifier","src":"34359:9:66"},{"kind":"number","nativeSrc":"34370:2:66","nodeType":"YulLiteral","src":"34370:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"34355:3:66","nodeType":"YulIdentifier","src":"34355:3:66"},"nativeSrc":"34355:18:66","nodeType":"YulFunctionCall","src":"34355:18:66"},{"arguments":[{"name":"value1","nativeSrc":"34379:6:66","nodeType":"YulIdentifier","src":"34379:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"34395:3:66","nodeType":"YulLiteral","src":"34395:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"34400:1:66","nodeType":"YulLiteral","src":"34400:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"34391:3:66","nodeType":"YulIdentifier","src":"34391:3:66"},"nativeSrc":"34391:11:66","nodeType":"YulFunctionCall","src":"34391:11:66"},{"kind":"number","nativeSrc":"34404:1:66","nodeType":"YulLiteral","src":"34404:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"34387:3:66","nodeType":"YulIdentifier","src":"34387:3:66"},"nativeSrc":"34387:19:66","nodeType":"YulFunctionCall","src":"34387:19:66"}],"functionName":{"name":"and","nativeSrc":"34375:3:66","nodeType":"YulIdentifier","src":"34375:3:66"},"nativeSrc":"34375:32:66","nodeType":"YulFunctionCall","src":"34375:32:66"}],"functionName":{"name":"mstore","nativeSrc":"34348:6:66","nodeType":"YulIdentifier","src":"34348:6:66"},"nativeSrc":"34348:60:66","nodeType":"YulFunctionCall","src":"34348:60:66"},"nativeSrc":"34348:60:66","nodeType":"YulExpressionStatement","src":"34348:60:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"34428:9:66","nodeType":"YulIdentifier","src":"34428:9:66"},{"kind":"number","nativeSrc":"34439:2:66","nodeType":"YulLiteral","src":"34439:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"34424:3:66","nodeType":"YulIdentifier","src":"34424:3:66"},"nativeSrc":"34424:18:66","nodeType":"YulFunctionCall","src":"34424:18:66"},{"name":"value2","nativeSrc":"34444:6:66","nodeType":"YulIdentifier","src":"34444:6:66"}],"functionName":{"name":"mstore","nativeSrc":"34417:6:66","nodeType":"YulIdentifier","src":"34417:6:66"},"nativeSrc":"34417:34:66","nodeType":"YulFunctionCall","src":"34417:34:66"},"nativeSrc":"34417:34:66","nodeType":"YulExpressionStatement","src":"34417:34:66"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"34086:371:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"34196:9:66","nodeType":"YulTypedName","src":"34196:9:66","type":""},{"name":"value2","nativeSrc":"34207:6:66","nodeType":"YulTypedName","src":"34207:6:66","type":""},{"name":"value1","nativeSrc":"34215:6:66","nodeType":"YulTypedName","src":"34215:6:66","type":""},{"name":"value0","nativeSrc":"34223:6:66","nodeType":"YulTypedName","src":"34223:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"34234:4:66","nodeType":"YulTypedName","src":"34234:4:66","type":""}],"src":"34086:371:66"}]},"contents":"{\n    { }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_struct_SendParam_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 224) { revert(0, 0) }\n        value := offset\n    }\n    function abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_struct_SendParam_calldata(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_struct_OFTLimit(value, pos)\n    {\n        mstore(pos, mload(value))\n        mstore(add(pos, 0x20), mload(add(value, 0x20)))\n    }\n    function abi_encode_tuple_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 160)\n        abi_encode_struct_OFTLimit(value0, headStart)\n        mstore(add(headStart, 64), 160)\n        let pos := tail_1\n        let length := mload(value1)\n        mstore(tail_1, length)\n        pos := add(headStart, 192)\n        let tail_2 := add(add(headStart, shl(5, length)), 192)\n        let srcPtr := add(value1, 0x20)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(191)))\n            let _1 := mload(srcPtr)\n            mstore(tail_2, mload(_1))\n            let memberValue0 := mload(add(_1, 0x20))\n            mstore(add(tail_2, 0x20), 64)\n            tail_2 := abi_encode_string(memberValue0, add(tail_2, 64))\n            srcPtr := add(srcPtr, 0x20)\n            pos := add(pos, 0x20)\n        }\n        tail := tail_2\n        abi_encode_struct_OFTLimit(value2, add(headStart, 96))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_struct_Origin_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 96) { revert(0, 0) }\n        value := offset\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes32t_bytes_calldata_ptrt_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        value0 := abi_decode_struct_Origin_calldata(headStart, dataEnd)\n        let value := 0\n        value := calldataload(add(headStart, 96))\n        value1 := value\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let value_1 := calldataload(add(headStart, 160))\n        validator_revert_address(value_1)\n        value4 := value_1\n        let offset_1 := calldataload(add(headStart, 192))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        let value5_1, value6_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value5 := value5_1\n        value6 := value6_1\n    }\n    function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffff))\n    }\n    function abi_encode_tuple_t_bytes4_t_uint64__to_t_bytes4_t_uint64__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint64_t_uint64__to_t_uint64_t_uint64__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint32t_bytes32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint32(headStart)\n        let value := 0\n        value := calldataload(add(headStart, 32))\n        value1 := value\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_struct_SendParam_calldata(add(headStart, offset), dataEnd)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_bool(value)\n        value1 := value\n    }\n    function abi_encode_tuple_t_struct$_MessagingFee_$33_memory_ptr__to_t_struct$_MessagingFee_$33_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        abi_encode_struct_OFTLimit(value0, headStart)\n    }\n    function abi_decode_uint16(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint32t_uint16(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint32(headStart)\n        value1 := abi_decode_uint16(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_contract$_ILayerZeroEndpointV2_$202__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes_calldata_ptrt_address(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_struct_Origin_calldata(headStart, dataEnd)\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let value := calldataload(add(headStart, 128))\n        validator_revert_address(value)\n        value3 := value\n    }\n    function abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_decode_tuple_t_uint32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint32(headStart)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_uint32t_uint16t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_uint32(headStart)\n        value1 := abi_decode_uint16(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_struct$_MessagingFee_$33_calldata_ptrt_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 128) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_struct_SendParam_calldata(add(headStart, offset), dataEnd)\n        if slt(add(_1, not(31)), 64) { revert(0, 0) }\n        value1 := add(headStart, 32)\n        let value := calldataload(add(headStart, 96))\n        validator_revert_address(value)\n        value2 := value\n    }\n    function abi_encode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, mload(value0))\n        mstore(add(headStart, 0x20), and(mload(add(value0, 0x20)), 0xffffffffffffffff))\n        let memberValue0 := mload(add(value0, 0x40))\n        abi_encode_struct_OFTLimit(memberValue0, add(headStart, 0x40))\n        abi_encode_struct_OFTLimit(value1, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_struct$_Origin_$40_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_struct_Origin_calldata(headStart, dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := mload(headStart)\n        value0 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_uint32_t_bytes32__to_t_uint32_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function allocate_memory_3873() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x60)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function allocate_memory_3874() -> memPtr\n    {\n        memPtr := mload(0x40)\n        let newFreePtr := add(memPtr, 0x40)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(0x40, newFreePtr)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), not(31)), 0x20)\n    }\n    function convert_array_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr(value, length) -> converted\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let _1 := shl(5, length)\n        let dst := allocate_memory(add(_1, 0x20))\n        let array := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(value, _1)\n        if gt(srcEnd, calldatasize()) { revert(0, 0) }\n        let src := value\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            let innerOffset := calldataload(src)\n            if gt(innerOffset, 0xffffffffffffffff) { revert(0, 0) }\n            let _2 := add(value, innerOffset)\n            if slt(sub(calldatasize(), _2), 0x60) { revert(0, 0) }\n            let value_1 := allocate_memory_3873()\n            mstore(value_1, abi_decode_uint32(_2))\n            mstore(add(value_1, 0x20), abi_decode_uint16(add(_2, 0x20)))\n            let offset := calldataload(add(_2, 64))\n            if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n            let _3 := add(_2, offset)\n            if iszero(slt(add(_3, 0x1f), calldatasize())) { revert(0, 0) }\n            let length_1 := calldataload(_3)\n            let array_1 := allocate_memory(array_allocation_size_bytes(length_1))\n            mstore(array_1, length_1)\n            if gt(add(add(_3, length_1), 0x20), calldatasize()) { revert(0, 0) }\n            calldatacopy(add(array_1, 0x20), add(_3, 0x20), length_1)\n            mstore(add(add(array_1, length_1), 0x20), 0)\n            mstore(add(value_1, 64), array_1)\n            mstore(dst, value_1)\n            dst := add(dst, 0x20)\n        }\n        converted := array\n    }\n    function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n    {\n        if gt(startIndex, endIndex) { revert(0, 0) }\n        if gt(endIndex, length) { revert(0, 0) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_calldata_ptr_slice__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        calldatacopy(end_1, value1, value2)\n        let _1 := add(end_1, value2)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_bytes_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 32))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function access_calldata_tail_t_struct$_InboundPacket_$2486_calldata_ptr(base_ref, ptr_to_tail) -> addr\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(318)))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function validator_revert_uint64(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_encode_tuple_t_struct$_Origin_$40_calldata_ptr_t_bytes32_t_bytes_calldata_ptr_t_address_t_bytes_calldata_ptr__to_t_struct$_Origin_$40_memory_ptr_t_bytes32_t_bytes_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(abi_decode_uint32(value0), 0xffffffff))\n        let value := 0\n        value := calldataload(add(value0, 0x20))\n        mstore(add(headStart, 0x20), value)\n        let value_1 := calldataload(add(value0, 0x40))\n        validator_revert_uint64(value_1)\n        mstore(add(headStart, 0x40), and(value_1, 0xffffffffffffffff))\n        mstore(add(headStart, 96), value1)\n        mstore(add(headStart, 128), 224)\n        let tail_1 := abi_encode_bytes_calldata(value2, value3, add(headStart, 224))\n        mstore(add(headStart, 160), and(value4, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 192), sub(tail_1, headStart))\n        tail := abi_encode_bytes_calldata(value5, value6, tail_1)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := mload(_1)\n        let array := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory_with_cleanup(add(_1, 32), add(array, 32), length)\n        value0 := array\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\n    }\n    function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint64(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_bytes32_t_rational_0_by_1_t_bytes_memory_ptr__to_t_address_t_bytes32_t_uint16_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffff))\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_string(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_string(value1, tail_1)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_struct$_MessagingParams_$20_memory_ptr_t_address__to_t_struct$_MessagingParams_$20_memory_ptr_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        mstore(add(headStart, 64), and(mload(value0), 0xffffffff))\n        mstore(add(headStart, 96), mload(add(value0, 0x20)))\n        let memberValue0 := mload(add(value0, 64))\n        mstore(add(headStart, 128), 0xa0)\n        let tail_1 := abi_encode_string(memberValue0, add(headStart, 224))\n        let memberValue0_1 := mload(add(value0, 96))\n        mstore(add(headStart, 0xa0), add(sub(tail_1, headStart), not(63)))\n        let tail_2 := abi_encode_string(memberValue0_1, tail_1)\n        mstore(add(headStart, 192), iszero(iszero(mload(add(value0, 128)))))\n        tail := tail_2\n        mstore(add(headStart, 0x20), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_struct_MessagingFee_fromMemory(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0x40) { revert(0, 0) }\n        value := allocate_memory_3874()\n        let value_1 := 0\n        value_1 := mload(headStart)\n        mstore(value, value_1)\n        let value_2 := 0\n        value_2 := mload(add(headStart, 32))\n        mstore(add(value, 32), value_2)\n    }\n    function abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_struct_MessagingFee_fromMemory(headStart, dataEnd)\n    }\n    function array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_bytes_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_bytes_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, shl(5, length)), 64)\n        let srcPtr := add(value0, 32)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(63)))\n            let _1 := mload(srcPtr)\n            mstore(tail_2, and(mload(_1), 0xffffffff))\n            mstore(add(tail_2, 32), and(mload(add(_1, 32)), 0xffff))\n            let memberValue0 := mload(add(_1, 64))\n            mstore(add(tail_2, 64), 0x60)\n            tail_2 := abi_encode_string(memberValue0, add(tail_2, 0x60))\n            srcPtr := add(srcPtr, 32)\n            pos := add(pos, 32)\n        }\n        tail := tail_2\n    }\n    function abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr(headStart, dataEnd) -> value0\n    {\n        let _1 := slt(sub(dataEnd, headStart), 64)\n        if _1 { revert(0, 0) }\n        _1 := 0\n        let value := allocate_memory_3874()\n        let value_1 := 0\n        value_1 := calldataload(headStart)\n        mstore(value, value_1)\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 32))\n        mstore(add(value, 32), value_2)\n        value0 := value\n    }\n    function abi_encode_tuple_t_uint32_t_uint256_t_uint256__to_t_uint32_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes32(array, len) -> value\n    {\n        value := calldataload(array)\n        if lt(len, 32)\n        {\n            value := and(value, shl(shl(3, sub(32, len)), not(0)))\n        }\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes8(array, len) -> value\n    {\n        let _1 := calldataload(array)\n        value := and(_1, shl(192, 0xffffffffffffffff))\n        if lt(len, 8)\n        {\n            value := and(and(_1, shl(shl(3, sub(8, len)), shl(192, 0xffffffffffffffff))), shl(192, 0xffffffffffffffff))\n        }\n    }\n    function abi_encode_tuple_packed_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__to_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, and(shl(192, value0), shl(192, 0xffffffffffffffff)))\n        mstore(add(pos, 8), and(shl(224, value1), shl(224, 0xffffffff)))\n        mstore(add(pos, 12), value2)\n        let length := mload(value3)\n        copy_memory_to_memory_with_cleanup(add(value3, 0x20), add(pos, 44), length)\n        end := add(add(pos, length), 44)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_uint64__to_t_bytes32_t_uint64__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), and(shl(192, value1), shl(192, 0xffffffffffffffff)))\n        end := add(pos, 40)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), and(shl(192, value1), shl(192, 0xffffffffffffffff)))\n        mstore(add(pos, 40), value2)\n        let length := mload(value3)\n        copy_memory_to_memory_with_cleanup(add(value3, 32), add(pos, 72), length)\n        end := add(add(pos, length), 72)\n    }\n    function abi_decode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := slt(sub(dataEnd, headStart), 128)\n        if _1 { revert(0, 0) }\n        _1 := 0\n        let value := allocate_memory_3873()\n        mstore(value, mload(headStart))\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_uint64(value_1)\n        mstore(add(value, 32), value_1)\n        mstore(add(value, 64), abi_decode_struct_MessagingFee_fromMemory(add(headStart, 64), dataEnd))\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n    }\n}","id":66,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"1386":[{"length":32,"start":1288},{"length":32,"start":2680},{"length":32,"start":4314},{"length":32,"start":4945},{"length":32,"start":5820},{"length":32,"start":7813},{"length":32,"start":8127},{"length":32,"start":8310}],"2778":[{"length":32,"start":1609},{"length":32,"start":6932},{"length":32,"start":7049},{"length":32,"start":7565}]},"linkReferences":{},"object":"60806040526004361061025c5760003560e01c8063715018a611610144578063bb0b6a53116100b6578063d045a0dc1161007a578063d045a0dc14610780578063d424388514610793578063dd62ed3e146107b3578063f2fde38b146107f9578063fc0c546a1461048c578063ff7bd03d1461081957600080fd5b8063bb0b6a53146106df578063bc70b3541461070c578063bd815db01461072c578063c7c7f5b31461073f578063ca5eb5e11461076057600080fd5b806395d89b411161010857806395d89b4114610622578063963efcaa146106375780639f68b9641461066b578063a9059cbb1461067f578063b731ea0a1461069f578063b98bd070146106bf57600080fd5b8063715018a6146105805780637d25a05e1461059557806382413eac146105d0578063857749b0146105f05780638da5cb5b1461060457600080fd5b806323b872dd116101dd57806352ae2879116101a157806352ae28791461048c5780635535d4611461049f5780635a0dfe4d146104bf5780635e280f11146104f65780636fc1b31e1461052a57806370a082311461054a57600080fd5b806323b872dd146103dd578063313ce567146103fd5780633400288b1461041f5780633b6f743b1461043f57806340c10f191461046c57600080fd5b8063134d4f2511610224578063134d4f2514610338578063156a0d0f1461036057806317442b701461038757806318160ddd146103a95780631f5e1334146103c857600080fd5b806306fdde0314610261578063095ea7b31461028c5780630d35b415146102bc578063111ecdad146102eb57806313137d6514610323575b600080fd5b34801561026d57600080fd5b50610276610839565b60405161028391906121ee565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004612216565b6108cb565b6040519015158152602001610283565b3480156102c857600080fd5b506102dc6102d736600461225a565b6108e5565b6040516102839392919061228e565b3480156102f757600080fd5b5060045461030b906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b610336610331366004612385565b610a76565b005b34801561034457600080fd5b5061034d600281565b60405161ffff9091168152602001610283565b34801561036c57600080fd5b506040805162b9270b60e21b81526001602082015201610283565b34801561039357600080fd5b5060408051600181526002602082015201610283565b3480156103b557600080fd5b506007545b604051908152602001610283565b3480156103d457600080fd5b5061034d600181565b3480156103e957600080fd5b506102ac6103f8366004612426565b610b36565b34801561040957600080fd5b5060125b60405160ff9091168152602001610283565b34801561042b57600080fd5b5061033661043a366004612480565b610b5c565b34801561044b57600080fd5b5061045f61045a3660046124aa565b610b72565b60405161028391906124fb565b34801561047857600080fd5b50610336610487366004612216565b610bd9565b34801561049857600080fd5b503061030b565b3480156104ab57600080fd5b506102766104ba366004612524565b610beb565b3480156104cb57600080fd5b506102ac6104da366004612480565b63ffffffff919091166000908152600160205260409020541490565b34801561050257600080fd5b5061030b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561053657600080fd5b50610336610545366004612557565b610c90565b34801561055657600080fd5b506103ba610565366004612557565b6001600160a01b031660009081526005602052604090205490565b34801561058c57600080fd5b50610336610ced565b3480156105a157600080fd5b506105b86105b0366004612480565b600092915050565b6040516001600160401b039091168152602001610283565b3480156105dc57600080fd5b506102ac6105eb366004612574565b610d01565b3480156105fc57600080fd5b50600661040d565b34801561061057600080fd5b506000546001600160a01b031661030b565b34801561062e57600080fd5b50610276610d16565b34801561064357600080fd5b506103ba7f000000000000000000000000000000000000000000000000000000000000000081565b34801561067757600080fd5b5060006102ac565b34801561068b57600080fd5b506102ac61069a366004612216565b610d25565b3480156106ab57600080fd5b5060025461030b906001600160a01b031681565b3480156106cb57600080fd5b506103366106da36600461261e565b610d33565b3480156106eb57600080fd5b506103ba6106fa36600461265f565b60016020526000908152604090205481565b34801561071857600080fd5b5061027661072736600461267a565b610d4d565b61033661073a36600461261e565b610ef5565b61075261074d3660046126da565b61107f565b604051610283929190612747565b34801561076c57600080fd5b5061033661077b366004612557565b6110b3565b61033661078e366004612385565b611139565b34801561079f57600080fd5b506103366107ae366004612557565b611168565b3480156107bf57600080fd5b506103ba6107ce366004612799565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561080557600080fd5b50610336610814366004612557565b6111be565b34801561082557600080fd5b506102ac6108343660046127c7565b6111fc565b606060088054610848906127e3565b80601f0160208091040260200160405190810160405280929190818152602001828054610874906127e3565b80156108c15780601f10610896576101008083540402835291602001916108c1565b820191906000526020600020905b8154815290600101906020018083116108a457829003601f168201915b5050505050905090565b6000336108d9818585611232565b60019150505b92915050565b60408051808201909152600080825260208201526060610918604051806040016040528060008152602001600081525090565b600080306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097d9190612817565b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109de9190612834565b60408051808201825284815260208082018490528251600080825291810190935290975091925090610a33565b604080518082019091526000815260606020820152815260200190600190039081610a0b5790505b509350600080610a58604089013560608a0135610a5360208c018c61265f565b611244565b60408051808201909152918252602082015296989597505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610ac6576040516391ac5e4f60e01b81523360048201526024015b60405180910390fd5b60208701803590610ae090610adb908a61265f565b611280565b14610b1e57610af2602088018861265f565b60405163309afaf360e21b815263ffffffff909116600482015260208801356024820152604401610abd565b610b2d878787878787876112bc565b50505050505050565b600033610b44858285611423565b610b4f8585856114a2565b60019150505b9392505050565b610b64611501565b610b6e828261152e565b5050565b60408051808201909152600080825260208201526000610ba260408501356060860135610a53602088018861265f565b915050600080610bb28684611583565b9092509050610bcf610bc7602088018861265f565b8383886116a6565b9695505050505050565b610be1611501565b610b6e8282611787565b600360209081526000928352604080842090915290825290208054610c0f906127e3565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3b906127e3565b8015610c885780601f10610c5d57610100808354040283529160200191610c88565b820191906000526020600020905b815481529060010190602001808311610c6b57829003601f168201915b505050505081565b610c98611501565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610cf5611501565b610cff60006117bd565b565b6001600160a01b03811630145b949350505050565b606060098054610848906127e3565b6000336108d98185856114a2565b610d3b611501565b610b6e610d488284612904565b61180d565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610d81906127e3565b80601f0160208091040260200160405190810160405280929190818152602001828054610dad906127e3565b8015610dfa5780601f10610dcf57610100808354040283529160200191610dfa565b820191906000526020600020905b815481529060010190602001808311610ddd57829003601f168201915b505050505090508051600003610e4a5783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610d0e9350505050565b6000839003610e5a579050610d0e565b60028310610ed857610ea184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061191492505050565b80610eaf8460028188612a2d565b604051602001610ec193929190612a57565b604051602081830303815290604052915050610d0e565b8383604051639a6d49cd60e01b8152600401610abd929190612aa8565b60005b81811015610ffe5736838383818110610f1357610f13612abc565b9050602002810190610f259190612ad2565b9050610f58610f37602083018361265f565b602083013563ffffffff919091166000908152600160205260409020541490565b610f625750610ff6565b3063d045a0dc60c08301358360a0810135610f81610100830183612af3565b610f92610100890160e08a01612557565b610fa06101208a018a612af3565b6040518963ffffffff1660e01b8152600401610fc29796959493929190612b4e565b6000604051808303818588803b158015610fdb57600080fd5b505af1158015610fef573d6000803e3d6000fd5b5050505050505b600101610ef8565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa15801561103d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110659190810190612bd4565b604051638351eea760e01b8152600401610abd91906121ee565b611087612157565b60408051808201909152600080825260208201526110a6858585611940565b915091505b935093915050565b6110bb611501565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561111e57600080fd5b505af1158015611132573d6000803e3d6000fd5b5050505050565b3330146111595760405163029a949d60e31b815260040160405180910390fd5b610b2d87878787878787610b1e565b611170611501565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610ce2565b6111c6611501565b6001600160a01b0381166111f057604051631e4fbdf760e01b815260006004820152602401610abd565b6111f9816117bd565b50565b6000602082018035906001908390611214908661265f565b63ffffffff1681526020810191909152604001600020541492915050565b61123f8383836001611a3b565b505050565b60008061125085611b10565b9150819050838110156110ab576040516371c4efed60e01b81526004810182905260248101859052604401610abd565b63ffffffff8116600090815260016020526040812054806108df5760405163f6ff4fb760e01b815263ffffffff84166004820152602401610abd565b60006112ce6112cb8787611b47565b90565b905060006112fa826112e86112e38a8a611b5f565b611b82565b6112f560208d018d61265f565b611bb7565b905060288611156113c157600061133761131a60608c0160408d01612c41565b61132760208d018d61265f565b846113328c8c611bdf565b611c2a565b604051633e5ac80960e11b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061138d9086908d906000908790600401612c5e565b600060405180830381600087803b1580156113a757600080fd5b505af11580156113bb573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c6113fa60208d018d61265f565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b6001600160a01b0383811660009081526006602090815260408083209386168352929052205460001981101561149c578181101561148d57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610abd565b61149c84848484036000611a3b565b50505050565b6001600160a01b0383166114cc57604051634b637e8f60e11b815260006004820152602401610abd565b6001600160a01b0382166114f65760405163ec442f0560e01b815260006004820152602401610abd565b61123f838383611c5c565b6000546001600160a01b03163314610cff5760405163118cdaa760e01b8152336004820152602401610abd565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b60608060006115e0856020013561159986611d86565b6115a660a0890189612af3565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611db292505050565b90935090506000816115f35760016115f6565b60025b9050611616611608602088018861265f565b8261072760808a018a612af3565b6004549093506001600160a01b0316801561169c5760405163043a78eb60e01b81526001600160a01b0382169063043a78eb906116599088908890600401612c8f565b602060405180830381865afa158015611676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169a9190612cb4565b505b5050509250929050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff16815260200161170989611280565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b815260040161173e929190612cd1565b6040805180830381865afa15801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190612d7b565b95945050505050565b6001600160a01b0382166117b15760405163ec442f0560e01b815260006004820152602401610abd565b610b6e60008383611c5c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b81518110156118e45761183f82828151811061182e5761182e612abc565b602002602001015160400151611914565b81818151811061185157611851612abc565b6020026020010151604001516003600084848151811061187357611873612abc565b60200260200101516000015163ffffffff1663ffffffff16815260200190815260200160002060008484815181106118ad576118ad612abc565b60200260200101516020015161ffff1661ffff16815260200190815260200160002090816118db9190612dde565b50600101611810565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610ce29190612e9c565b600281015161ffff8116600314610b6e5781604051639a6d49cd60e01b8152600401610abd91906121ee565b611948612157565b604080518082019091526000808252602082015260008061197f33604089013560608a013561197a60208c018c61265f565b611e2c565b915091506000806119908984611583565b90925090506119bc6119a560208b018b61265f565b83836119b6368d90038d018d612f2c565b8b611e52565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90611a0a908d018d61265f565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b6001600160a01b038416611a655760405163e602df0560e01b815260006004820152602401610abd565b6001600160a01b038316611a8f57604051634a1406b160e11b815260006004820152602401610abd565b6001600160a01b038085166000908152600660209081526040808320938716835292905220829055801561149c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611b0291815260200190565b60405180910390a350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000611b3d8184612f75565b6108df9190612f97565b6000611b566020828486612a2d565b610b5591612fae565b6000611b6f602860208486612a2d565b611b7891612fcc565b60c01c9392505050565b60006108df7f00000000000000000000000000000000000000000000000000000000000000006001600160401b038416612f97565b60006001600160a01b038416611bcd5761dead93505b611bd78484611787565b509092915050565b6060611bee8260288186612a2d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611c439493929190613004565b6040516020818303038152906040529050949350505050565b6001600160a01b038316611c87578060076000828254611c7c9190613053565b90915550611cf99050565b6001600160a01b03831660009081526005602052604090205481811015611cda5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610abd565b6001600160a01b03841660009081526005602052604090209082900390555b6001600160a01b038216611d1557600780548290039055611d34565b6001600160a01b03821660009081526005602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d7991815260200190565b60405180910390a3505050565b60006108df7f000000000000000000000000000000000000000000000000000000000000000083612f75565b8051606090151580611dfb578484604051602001611de792919091825260c01b6001600160c01b031916602082015260280190565b604051602081830303815290604052611e22565b84843385604051602001611e129493929190613066565b6040516020818303038152906040525b9150935093915050565b600080611e3a858585611244565b9092509050611e498683611f5d565b94509492505050565b611e5a612157565b6000611e698460000151611f93565b602085015190915015611e8357611e838460200151611fbb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff168152602001611ed38c611280565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611f0f929190612cd1565b60806040518083038185885af1158015611f2d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f5291906130a9565b979650505050505050565b6001600160a01b038216611f8757604051634b637e8f60e11b815260006004820152602401610abd565b610b6e82600083611c5c565b6000813414611fb7576040516304fb820960e51b8152346004820152602401610abd565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561201b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203f9190612817565b90506001600160a01b038116612068576040516329b99a9560e11b815260040160405180910390fd5b6040805133602482018190527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381811660448501526064808501889052855180860390910181526084909401909452602080840180516001600160e01b03166323b872dd60e01b1781528451610b6e96881695899361149c93889360009283929091839182885af180612109576040513d6000823e3d81fd5b50506000513d9150811561212157806001141561212e565b6001600160a01b0384163b155b1561149c57604051635274afe760e01b81526001600160a01b0385166004820152602401610abd565b60405180606001604052806000801916815260200160006001600160401b03168152602001612199604051806040016040528060008152602001600081525090565b905290565b60005b838110156121b95781810151838201526020016121a1565b50506000910152565b600081518084526121da81602086016020860161219e565b601f01601f19169290920160200192915050565b602081526000610b5560208301846121c2565b6001600160a01b03811681146111f957600080fd5b6000806040838503121561222957600080fd5b823561223481612201565b946020939093013593505050565b600060e0828403121561225457600080fd5b50919050565b60006020828403121561226c57600080fd5b81356001600160401b0381111561228257600080fd5b610d0e84828501612242565b8351815260208085015190820152600060a0820160a0604084015280855180835260c08501915060c08160051b86010192506020870160005b8281101561230f5760bf1987860301845281518051865260208101519050604060208701526122f960408701826121c2565b95505060209384019391909101906001016122c7565b5050855160608601525050602084015160808401529050610d0e565b60006060828403121561225457600080fd5b60008083601f84011261234f57600080fd5b5081356001600160401b0381111561236657600080fd5b60208301915083602082850101111561237e57600080fd5b9250929050565b600080600080600080600060e0888a0312156123a057600080fd5b6123aa898961232b565b96506060880135955060808801356001600160401b038111156123cc57600080fd5b6123d88a828b0161233d565b90965094505060a08801356123ec81612201565b925060c08801356001600160401b0381111561240757600080fd5b6124138a828b0161233d565b989b979a50959850939692959293505050565b60008060006060848603121561243b57600080fd5b833561244681612201565b9250602084013561245681612201565b929592945050506040919091013590565b803563ffffffff8116811461247b57600080fd5b919050565b6000806040838503121561249357600080fd5b61223483612467565b80151581146111f957600080fd5b600080604083850312156124bd57600080fd5b82356001600160401b038111156124d357600080fd5b6124df85828601612242565b92505060208301356124f08161249c565b809150509250929050565b8151815260208083015190820152604081016108df565b803561ffff8116811461247b57600080fd5b6000806040838503121561253757600080fd5b61254083612467565b915061254e60208401612512565b90509250929050565b60006020828403121561256957600080fd5b8135610b5581612201565b60008060008060a0858703121561258a57600080fd5b612594868661232b565b935060608501356001600160401b038111156125af57600080fd5b6125bb8782880161233d565b90945092505060808501356125cf81612201565b939692955090935050565b60008083601f8401126125ec57600080fd5b5081356001600160401b0381111561260357600080fd5b6020830191508360208260051b850101111561237e57600080fd5b6000806020838503121561263157600080fd5b82356001600160401b0381111561264757600080fd5b612653858286016125da565b90969095509350505050565b60006020828403121561267157600080fd5b610b5582612467565b6000806000806060858703121561269057600080fd5b61269985612467565b93506126a760208601612512565b925060408501356001600160401b038111156126c257600080fd5b6126ce8782880161233d565b95989497509550505050565b600080600083850360808112156126f057600080fd5b84356001600160401b0381111561270657600080fd5b61271287828801612242565b9450506040601f198201121561272757600080fd5b50602084019150606084013561273c81612201565b809150509250925092565b600060c082019050835182526001600160401b0360208501511660208301526040840151612782604084018280518252602090810151910152565b5082516080830152602083015160a0830152610b55565b600080604083850312156127ac57600080fd5b82356127b781612201565b915060208301356124f081612201565b6000606082840312156127d957600080fd5b610b55838361232b565b600181811c908216806127f757607f821691505b60208210810361225457634e487b7160e01b600052602260045260246000fd5b60006020828403121561282957600080fd5b8151610b5581612201565b60006020828403121561284657600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156128855761288561284d565b60405290565b604080519081016001600160401b03811182821017156128855761288561284d565b604051601f8201601f191681016001600160401b03811182821017156128d5576128d561284d565b604052919050565b60006001600160401b038211156128f6576128f661284d565b50601f01601f191660200190565b60006001600160401b0383111561291d5761291d61284d565b8260051b61292d602082016128ad565b8481529083019060208101903683111561294657600080fd5b845b83811015612a235780356001600160401b0381111561296657600080fd5b8601606036829003121561297957600080fd5b612981612863565b61298a82612467565b815261299860208301612512565b602082015260408201356001600160401b038111156129b657600080fd5b919091019036601f8301126129ca57600080fd5b81356129dd6129d8826128dd565b6128ad565b8181523660208386010111156129f257600080fd5b8160208501602083013760006020838301015280604084015250508085525050602083019250602081019050612948565b5095945050505050565b60008085851115612a3d57600080fd5b83861115612a4a57600080fd5b5050820193919092039150565b60008451612a6981846020890161219e565b8201838582376000930192835250909392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610d0e602083018486612a7f565b634e487b7160e01b600052603260045260246000fd5b6000823561013e19833603018112612ae957600080fd5b9190910192915050565b6000808335601e19843603018112612b0a57600080fd5b8301803591506001600160401b03821115612b2457600080fd5b60200191503681900382131561237e57600080fd5b6001600160401b03811681146111f957600080fd5b63ffffffff612b5c89612467565b1681526020888101359082015260006040890135612b7981612b39565b6001600160401b03811660408401525087606083015260e06080830152612ba460e083018789612a7f565b6001600160a01b03861660a084015282810360c0840152612bc6818587612a7f565b9a9950505050505050505050565b600060208284031215612be657600080fd5b81516001600160401b03811115612bfc57600080fd5b8201601f81018413612c0d57600080fd5b8051612c1b6129d8826128dd565b818152856020838501011115612c3057600080fd5b61177e82602083016020860161219e565b600060208284031215612c5357600080fd5b8135610b5581612b39565b60018060a01b038516815283602082015261ffff83166040820152608060608201526000610bcf60808301846121c2565b604081526000612ca260408301856121c2565b828103602084015261177e81856121c2565b600060208284031215612cc657600080fd5b8151610b558161249c565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152612d0760e08401826121c2565b90506060850151603f198483030160a0850152612d2482826121c2565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b600060408284031215612d5c57600080fd5b612d6461288b565b825181526020928301519281019290925250919050565b600060408284031215612d8d57600080fd5b610b558383612d4a565b601f82111561123f57806000526020600020601f840160051c81016020851015612dbe5750805b601f840160051c820191505b818110156111325760008155600101612dca565b81516001600160401b03811115612df757612df761284d565b612e0b81612e0584546127e3565b84612d97565b6020601f821160018114612e3f5760008315612e275750848201515b600019600385901b1c1916600184901b178455611132565b600084815260208120601f198516915b82811015612e6f5787850151825560209485019460019092019101612e4f565b5084821015612e8d5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015612f2057603f19878603018452815163ffffffff815116865261ffff60208201511660208701526040810151905060606040870152612f0a60608701826121c2565b9550506020938401939190910190600101612ec4565b50929695505050505050565b60006040828403128015612f3f57600080fd5b50612f4861288b565b823581526020928301359281019290925250919050565b634e487b7160e01b600052601160045260246000fd5b600082612f9257634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176108df576108df612f5f565b803560208310156108df57600019602084900360031b1b1692915050565b80356001600160c01b03198116906008841015612ffd576001600160c01b0319600885900360031b81901b82161691505b5092915050565b6001600160401b0360c01b8560c01b16815263ffffffff60e01b8460e01b16600882015282600c8201526000825161304381602c85016020870161219e565b91909101602c0195945050505050565b808201808211156108df576108df612f5f565b8481526001600160401b0360c01b8460c01b1660208201528260288201526000825161309981604885016020870161219e565b9190910160480195945050505050565b600060808284031280156130bc57600080fd5b506130c5612863565b8251815260208301516130d781612b39565b60208201526130e98460408501612d4a565b6040820152939250505056fea2646970667358221220249a01a82551afec10cfede2963b31e237841ec17fd08d2bce558d917ff0204964736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x25C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x144 JUMPI DUP1 PUSH4 0xBB0B6A53 GT PUSH2 0xB6 JUMPI DUP1 PUSH4 0xD045A0DC GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xD045A0DC EQ PUSH2 0x780 JUMPI DUP1 PUSH4 0xD4243885 EQ PUSH2 0x793 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x7B3 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x7F9 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0xFF7BD03D EQ PUSH2 0x819 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBB0B6A53 EQ PUSH2 0x6DF JUMPI DUP1 PUSH4 0xBC70B354 EQ PUSH2 0x70C JUMPI DUP1 PUSH4 0xBD815DB0 EQ PUSH2 0x72C JUMPI DUP1 PUSH4 0xC7C7F5B3 EQ PUSH2 0x73F JUMPI DUP1 PUSH4 0xCA5EB5E1 EQ PUSH2 0x760 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x108 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x622 JUMPI DUP1 PUSH4 0x963EFCAA EQ PUSH2 0x637 JUMPI DUP1 PUSH4 0x9F68B964 EQ PUSH2 0x66B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x67F JUMPI DUP1 PUSH4 0xB731EA0A EQ PUSH2 0x69F JUMPI DUP1 PUSH4 0xB98BD070 EQ PUSH2 0x6BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x7D25A05E EQ PUSH2 0x595 JUMPI DUP1 PUSH4 0x82413EAC EQ PUSH2 0x5D0 JUMPI DUP1 PUSH4 0x857749B0 EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x52AE2879 GT PUSH2 0x1A1 JUMPI DUP1 PUSH4 0x52AE2879 EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0x5535D461 EQ PUSH2 0x49F JUMPI DUP1 PUSH4 0x5A0DFE4D EQ PUSH2 0x4BF JUMPI DUP1 PUSH4 0x5E280F11 EQ PUSH2 0x4F6 JUMPI DUP1 PUSH4 0x6FC1B31E EQ PUSH2 0x52A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x54A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3DD JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3FD JUMPI DUP1 PUSH4 0x3400288B EQ PUSH2 0x41F JUMPI DUP1 PUSH4 0x3B6F743B EQ PUSH2 0x43F JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x134D4F25 GT PUSH2 0x224 JUMPI DUP1 PUSH4 0x134D4F25 EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x156A0D0F EQ PUSH2 0x360 JUMPI DUP1 PUSH4 0x17442B70 EQ PUSH2 0x387 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3A9 JUMPI DUP1 PUSH4 0x1F5E1334 EQ PUSH2 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0xD35B415 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x111ECDAD EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x13137D65 EQ PUSH2 0x323 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x276 PUSH2 0x839 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP2 SWAP1 PUSH2 0x21EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x2A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2216 JUMP JUMPDEST PUSH2 0x8CB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DC PUSH2 0x2D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x225A JUMP JUMPDEST PUSH2 0x8E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x228E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD PUSH2 0x30B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST PUSH2 0x336 PUSH2 0x331 CALLDATASIZE PUSH1 0x4 PUSH2 0x2385 JUMP JUMPDEST PUSH2 0xA76 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x34D PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH3 0xB9270B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x283 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x393 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x283 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x7 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x34D PUSH1 0x1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x3F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2426 JUMP JUMPDEST PUSH2 0xB36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x12 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x43A CALLDATASIZE PUSH1 0x4 PUSH2 0x2480 JUMP JUMPDEST PUSH2 0xB5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x45F PUSH2 0x45A CALLDATASIZE PUSH1 0x4 PUSH2 0x24AA JUMP JUMPDEST PUSH2 0xB72 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP2 SWAP1 PUSH2 0x24FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x487 CALLDATASIZE PUSH1 0x4 PUSH2 0x2216 JUMP JUMPDEST PUSH2 0xBD9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADDRESS PUSH2 0x30B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x276 PUSH2 0x4BA CALLDATASIZE PUSH1 0x4 PUSH2 0x2524 JUMP JUMPDEST PUSH2 0xBEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x4DA CALLDATASIZE PUSH1 0x4 PUSH2 0x2480 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x545 CALLDATASIZE PUSH1 0x4 PUSH2 0x2557 JUMP JUMPDEST PUSH2 0xC90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BA PUSH2 0x565 CALLDATASIZE PUSH1 0x4 PUSH2 0x2557 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0xCED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5B8 PUSH2 0x5B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2480 JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x283 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x5EB CALLDATASIZE PUSH1 0x4 PUSH2 0x2574 JUMP JUMPDEST PUSH2 0xD01 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 PUSH2 0x40D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x610 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x30B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x276 PUSH2 0xD16 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BA PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x2AC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x69A CALLDATASIZE PUSH1 0x4 PUSH2 0x2216 JUMP JUMPDEST PUSH2 0xD25 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x30B SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x6DA CALLDATASIZE PUSH1 0x4 PUSH2 0x261E JUMP JUMPDEST PUSH2 0xD33 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BA PUSH2 0x6FA CALLDATASIZE PUSH1 0x4 PUSH2 0x265F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x276 PUSH2 0x727 CALLDATASIZE PUSH1 0x4 PUSH2 0x267A JUMP JUMPDEST PUSH2 0xD4D JUMP JUMPDEST PUSH2 0x336 PUSH2 0x73A CALLDATASIZE PUSH1 0x4 PUSH2 0x261E JUMP JUMPDEST PUSH2 0xEF5 JUMP JUMPDEST PUSH2 0x752 PUSH2 0x74D CALLDATASIZE PUSH1 0x4 PUSH2 0x26DA JUMP JUMPDEST PUSH2 0x107F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP3 SWAP2 SWAP1 PUSH2 0x2747 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x77B CALLDATASIZE PUSH1 0x4 PUSH2 0x2557 JUMP JUMPDEST PUSH2 0x10B3 JUMP JUMPDEST PUSH2 0x336 PUSH2 0x78E CALLDATASIZE PUSH1 0x4 PUSH2 0x2385 JUMP JUMPDEST PUSH2 0x1139 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x7AE CALLDATASIZE PUSH1 0x4 PUSH2 0x2557 JUMP JUMPDEST PUSH2 0x1168 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3BA PUSH2 0x7CE CALLDATASIZE PUSH1 0x4 PUSH2 0x2799 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x336 PUSH2 0x814 CALLDATASIZE PUSH1 0x4 PUSH2 0x2557 JUMP JUMPDEST PUSH2 0x11BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AC PUSH2 0x834 CALLDATASIZE PUSH1 0x4 PUSH2 0x27C7 JUMP JUMPDEST PUSH2 0x11FC JUMP JUMPDEST PUSH1 0x60 PUSH1 0x8 DUP1 SLOAD PUSH2 0x848 SWAP1 PUSH2 0x27E3 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x874 SWAP1 PUSH2 0x27E3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8C1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x896 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8C1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8A4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x8D9 DUP2 DUP6 DUP6 PUSH2 0x1232 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH2 0x918 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x959 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x97D SWAP2 SWAP1 PUSH2 0x2817 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9DE SWAP2 SWAP1 PUSH2 0x2834 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP2 DUP2 ADD SWAP1 SWAP4 MSTORE SWAP1 SWAP8 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0xA33 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA0B JUMPI SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 DUP1 PUSH2 0xA58 PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP11 ADD CALLDATALOAD PUSH2 0xA53 PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x265F JUMP JUMPDEST PUSH2 0x1244 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP7 SWAP9 SWAP6 SWAP8 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAC6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x91AC5E4F PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP8 ADD DUP1 CALLDATALOAD SWAP1 PUSH2 0xAE0 SWAP1 PUSH2 0xADB SWAP1 DUP11 PUSH2 0x265F JUMP JUMPDEST PUSH2 0x1280 JUMP JUMPDEST EQ PUSH2 0xB1E JUMPI PUSH2 0xAF2 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x265F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x309AFAF3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xABD JUMP JUMPDEST PUSH2 0xB2D DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x12BC JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0xB44 DUP6 DUP3 DUP6 PUSH2 0x1423 JUMP JUMPDEST PUSH2 0xB4F DUP6 DUP6 DUP6 PUSH2 0x14A2 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB64 PUSH2 0x1501 JUMP JUMPDEST PUSH2 0xB6E DUP3 DUP3 PUSH2 0x152E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xBA2 PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0xA53 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x265F JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 DUP1 PUSH2 0xBB2 DUP7 DUP5 PUSH2 0x1583 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xBCF PUSH2 0xBC7 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x265F JUMP JUMPDEST DUP4 DUP4 DUP9 PUSH2 0x16A6 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xBE1 PUSH2 0x1501 JUMP JUMPDEST PUSH2 0xB6E DUP3 DUP3 PUSH2 0x1787 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xC0F SWAP1 PUSH2 0x27E3 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xC3B SWAP1 PUSH2 0x27E3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xC88 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xC5D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xC88 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xC6B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0xC98 PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xF0BE4F1E87349231D80C36B33F9E8639658EEAF474014DEE15A3E6A4D4414197 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xCF5 PUSH2 0x1501 JUMP JUMPDEST PUSH2 0xCFF PUSH1 0x0 PUSH2 0x17BD JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ADDRESS EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x9 DUP1 SLOAD PUSH2 0x848 SWAP1 PUSH2 0x27E3 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x8D9 DUP2 DUP6 DUP6 PUSH2 0x14A2 JUMP JUMPDEST PUSH2 0xD3B PUSH2 0x1501 JUMP JUMPDEST PUSH2 0xB6E PUSH2 0xD48 DUP3 DUP5 PUSH2 0x2904 JUMP JUMPDEST PUSH2 0x180D JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP3 SWAP2 SWAP1 PUSH2 0xD81 SWAP1 PUSH2 0x27E3 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xDAD SWAP1 PUSH2 0x27E3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xDFA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xDCF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xDFA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xDDD JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xE4A JUMPI DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 POP PUSH2 0xD0E SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 SWAP1 SUB PUSH2 0xE5A JUMPI SWAP1 POP PUSH2 0xD0E JUMP JUMPDEST PUSH1 0x2 DUP4 LT PUSH2 0xED8 JUMPI PUSH2 0xEA1 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1914 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH2 0xEAF DUP5 PUSH1 0x2 DUP2 DUP9 PUSH2 0x2A2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xEC1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2A57 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0xD0E JUMP JUMPDEST DUP4 DUP4 PUSH1 0x40 MLOAD PUSH4 0x9A6D49CD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABD SWAP3 SWAP2 SWAP1 PUSH2 0x2AA8 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFFE JUMPI CALLDATASIZE DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0xF13 JUMPI PUSH2 0xF13 PUSH2 0x2ABC JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xF25 SWAP2 SWAP1 PUSH2 0x2AD2 JUMP JUMPDEST SWAP1 POP PUSH2 0xF58 PUSH2 0xF37 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x265F JUMP JUMPDEST PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ SWAP1 JUMP JUMPDEST PUSH2 0xF62 JUMPI POP PUSH2 0xFF6 JUMP JUMPDEST ADDRESS PUSH4 0xD045A0DC PUSH1 0xC0 DUP4 ADD CALLDATALOAD DUP4 PUSH1 0xA0 DUP2 ADD CALLDATALOAD PUSH2 0xF81 PUSH2 0x100 DUP4 ADD DUP4 PUSH2 0x2AF3 JUMP JUMPDEST PUSH2 0xF92 PUSH2 0x100 DUP10 ADD PUSH1 0xE0 DUP11 ADD PUSH2 0x2557 JUMP JUMPDEST PUSH2 0xFA0 PUSH2 0x120 DUP11 ADD DUP11 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFC2 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B4E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFEF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xEF8 JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8E9E7099 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x103D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1065 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2BD4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8351EEA7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABD SWAP2 SWAP1 PUSH2 0x21EE JUMP JUMPDEST PUSH2 0x1087 PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x10A6 DUP6 DUP6 DUP6 PUSH2 0x1940 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x10BB PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCA5EB5E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xCA5EB5E1 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x111E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1132 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x1159 JUMPI PUSH1 0x40 MLOAD PUSH4 0x29A949D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB2D DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xB1E JUMP JUMPDEST PUSH2 0x1170 PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xD48D879CEF83A1C0BDDA516F27B13DDB1B3F8BBAC1C9E1511BB2A659C2427760 SWAP1 PUSH1 0x20 ADD PUSH2 0xCE2 JUMP JUMPDEST PUSH2 0x11C6 PUSH2 0x1501 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x11F0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH2 0x11F9 DUP2 PUSH2 0x17BD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 SWAP1 DUP4 SWAP1 PUSH2 0x1214 SWAP1 DUP7 PUSH2 0x265F JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x123F DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1A3B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1250 DUP6 PUSH2 0x1B10 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x10AB JUMPI PUSH1 0x40 MLOAD PUSH4 0x71C4EFED PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xABD JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x8DF JUMPI PUSH1 0x40 MLOAD PUSH4 0xF6FF4FB7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12CE PUSH2 0x12CB DUP8 DUP8 PUSH2 0x1B47 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x12FA DUP3 PUSH2 0x12E8 PUSH2 0x12E3 DUP11 DUP11 PUSH2 0x1B5F JUMP JUMPDEST PUSH2 0x1B82 JUMP JUMPDEST PUSH2 0x12F5 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x265F JUMP JUMPDEST PUSH2 0x1BB7 JUMP JUMPDEST SWAP1 POP PUSH1 0x28 DUP7 GT ISZERO PUSH2 0x13C1 JUMPI PUSH1 0x0 PUSH2 0x1337 PUSH2 0x131A PUSH1 0x60 DUP13 ADD PUSH1 0x40 DUP14 ADD PUSH2 0x2C41 JUMP JUMPDEST PUSH2 0x1327 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x265F JUMP JUMPDEST DUP5 PUSH2 0x1332 DUP13 DUP13 PUSH2 0x1BDF JUMP JUMPDEST PUSH2 0x1C2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3E5AC809 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x7CB59012 SWAP1 PUSH2 0x138D SWAP1 DUP7 SWAP1 DUP14 SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2C5E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP9 PUSH32 0xEFED6D3500546B29533B128A29E3A94D70788727F0507505AC12EAF2E578FD9C PUSH2 0x13FA PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x265F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 LT ISZERO PUSH2 0x149C JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x148D JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xABD JUMP JUMPDEST PUSH2 0x149C DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x1A3B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x14CC JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x14F6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH2 0x123F DUP4 DUP4 DUP4 PUSH2 0x1C5C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xCFF JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x238399D427B947898EDB290F5FF0F9109849B1C3BA196A42E35F00C50A54B98B SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x15E0 DUP6 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1599 DUP7 PUSH2 0x1D86 JUMP JUMPDEST PUSH2 0x15A6 PUSH1 0xA0 DUP10 ADD DUP10 PUSH2 0x2AF3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1DB2 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x15F3 JUMPI PUSH1 0x1 PUSH2 0x15F6 JUMP JUMPDEST PUSH1 0x2 JUMPDEST SWAP1 POP PUSH2 0x1616 PUSH2 0x1608 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x265F JUMP JUMPDEST DUP3 PUSH2 0x727 PUSH1 0x80 DUP11 ADD DUP11 PUSH2 0x2AF3 JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x169C JUMPI PUSH1 0x40 MLOAD PUSH4 0x43A78EB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x43A78EB SWAP1 PUSH2 0x1659 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2C8F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1676 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x169A SWAP2 SWAP1 PUSH2 0x2CB4 JUMP JUMPDEST POP JUMPDEST POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDDC28C58 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1709 DUP10 PUSH2 0x1280 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE POP ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x173E SWAP3 SWAP2 SWAP1 PUSH2 0x2CD1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x175A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x177E SWAP2 SWAP1 PUSH2 0x2D7B JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x17B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH2 0xB6E PUSH1 0x0 DUP4 DUP4 PUSH2 0x1C5C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x18E4 JUMPI PUSH2 0x183F DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x182E JUMPI PUSH2 0x182E PUSH2 0x2ABC JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x1914 JUMP JUMPDEST DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1851 JUMPI PUSH2 0x1851 PUSH2 0x2ABC JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x3 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1873 JUMPI PUSH2 0x1873 PUSH2 0x2ABC JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x18AD JUMPI PUSH2 0x18AD PUSH2 0x2ABC JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP2 PUSH2 0x18DB SWAP2 SWAP1 PUSH2 0x2DDE JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1810 JUMP JUMPDEST POP PUSH32 0xBE4864A8E820971C0247F5992E2DA559595F7BF076A21CB5928D443D2A13B674 DUP2 PUSH1 0x40 MLOAD PUSH2 0xCE2 SWAP2 SWAP1 PUSH2 0x2E9C JUMP JUMPDEST PUSH1 0x2 DUP2 ADD MLOAD PUSH2 0xFFFF DUP2 AND PUSH1 0x3 EQ PUSH2 0xB6E JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x9A6D49CD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xABD SWAP2 SWAP1 PUSH2 0x21EE JUMP JUMPDEST PUSH2 0x1948 PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP1 PUSH2 0x197F CALLER PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP11 ADD CALLDATALOAD PUSH2 0x197A PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x265F JUMP JUMPDEST PUSH2 0x1E2C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1990 DUP10 DUP5 PUSH2 0x1583 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x19BC PUSH2 0x19A5 PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x265F JUMP JUMPDEST DUP4 DUP4 PUSH2 0x19B6 CALLDATASIZE DUP14 SWAP1 SUB DUP14 ADD DUP14 PUSH2 0x2F2C JUMP JUMPDEST DUP12 PUSH2 0x1E52 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD SWAP3 SWAP9 POP SWAP1 SWAP7 POP CALLER SWAP2 SWAP1 PUSH32 0x85496B760A4B7F8D66384B9DF21B381F5D1B1E79F229A47AAF4C232EDC2FE59A SWAP1 PUSH2 0x1A0A SWAP1 DUP14 ADD DUP14 PUSH2 0x265F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP10 SWAP1 MSTORE DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1A65 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1A8F JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x149C JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1B02 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0x1B3D DUP2 DUP5 PUSH2 0x2F75 JUMP JUMPDEST PUSH2 0x8DF SWAP2 SWAP1 PUSH2 0x2F97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B56 PUSH1 0x20 DUP3 DUP5 DUP7 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0xB55 SWAP2 PUSH2 0x2FAE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B6F PUSH1 0x28 PUSH1 0x20 DUP5 DUP7 PUSH2 0x2A2D JUMP JUMPDEST PUSH2 0x1B78 SWAP2 PUSH2 0x2FCC JUMP JUMPDEST PUSH1 0xC0 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8DF PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 AND PUSH2 0x2F97 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1BCD JUMPI PUSH2 0xDEAD SWAP4 POP JUMPDEST PUSH2 0x1BD7 DUP5 DUP5 PUSH2 0x1787 JUMP JUMPDEST POP SWAP1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1BEE DUP3 PUSH1 0x28 DUP2 DUP7 PUSH2 0x2A2D JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1C43 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3004 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1C87 JUMPI DUP1 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1C7C SWAP2 SWAP1 PUSH2 0x3053 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1CF9 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x1CDA JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xABD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1D15 JUMPI PUSH1 0x7 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x1D34 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x1D79 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8DF PUSH32 0x0 DUP4 PUSH2 0x2F75 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x1DFB JUMPI DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DE7 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0xC0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x28 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x1E22 JUMP JUMPDEST DUP5 DUP5 CALLER DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E12 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3066 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1E3A DUP6 DUP6 DUP6 PUSH2 0x1244 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1E49 DUP7 DUP4 PUSH2 0x1F5D JUMP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1E5A PUSH2 0x2157 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E69 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x1F93 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x1E83 JUMPI PUSH2 0x1E83 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x1FBB JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2637A450 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1ED3 DUP13 PUSH2 0x1280 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP10 PUSH1 0x20 ADD MLOAD GT ISZERO ISZERO DUP2 MSTORE POP DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1F0F SWAP3 SWAP2 SWAP1 PUSH2 0x2CD1 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F52 SWAP2 SWAP1 PUSH2 0x30A9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1F87 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH2 0xB6E DUP3 PUSH1 0x0 DUP4 PUSH2 0x1C5C JUMP JUMPDEST PUSH1 0x0 DUP2 CALLVALUE EQ PUSH2 0x1FB7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4FB8209 PUSH1 0xE5 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE4FE1D94 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x201B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x203F SWAP2 SWAP1 PUSH2 0x2817 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2068 JUMPI PUSH1 0x40 MLOAD PUSH4 0x29B99A95 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP1 DUP6 ADD DUP9 SWAP1 MSTORE DUP6 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP5 ADD SWAP1 SWAP5 MSTORE PUSH1 0x20 DUP1 DUP5 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE DUP5 MLOAD PUSH2 0xB6E SWAP7 DUP9 AND SWAP6 DUP10 SWAP4 PUSH2 0x149C SWAP4 DUP9 SWAP4 PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 SWAP2 DUP4 SWAP2 DUP3 DUP9 GAS CALL DUP1 PUSH2 0x2109 JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH1 0x0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x2121 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x212E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x149C JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xABD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2199 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x21B9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x21A1 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x21DA DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x219E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xB55 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x21C2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x11F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2234 DUP2 PUSH2 0x2201 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x226C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD0E DUP5 DUP3 DUP6 ADD PUSH2 0x2242 JUMP JUMPDEST DUP4 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH1 0xA0 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0xC0 DUP6 ADD SWAP2 POP PUSH1 0xC0 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x230F JUMPI PUSH1 0xBF NOT DUP8 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 POP PUSH1 0x40 PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x22F9 PUSH1 0x40 DUP8 ADD DUP3 PUSH2 0x21C2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x22C7 JUMP JUMPDEST POP POP DUP6 MLOAD PUSH1 0x60 DUP7 ADD MSTORE POP POP PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE SWAP1 POP PUSH2 0xD0E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x234F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x237E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x23A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23AA DUP10 DUP10 PUSH2 0x232B JUMP JUMPDEST SWAP7 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x23CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x23D8 DUP11 DUP3 DUP12 ADD PUSH2 0x233D JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0x23EC DUP2 PUSH2 0x2201 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2413 DUP11 DUP3 DUP12 ADD PUSH2 0x233D JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x243B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2446 DUP2 PUSH2 0x2201 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2456 DUP2 PUSH2 0x2201 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x247B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2234 DUP4 PUSH2 0x2467 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x11F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x24D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24DF DUP6 DUP3 DUP7 ADD PUSH2 0x2242 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x24F0 DUP2 PUSH2 0x249C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD PUSH2 0x8DF JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x247B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2540 DUP4 PUSH2 0x2467 JUMP JUMPDEST SWAP2 POP PUSH2 0x254E PUSH1 0x20 DUP5 ADD PUSH2 0x2512 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2569 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB55 DUP2 PUSH2 0x2201 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x258A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2594 DUP7 DUP7 PUSH2 0x232B JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x25AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x25BB DUP8 DUP3 DUP9 ADD PUSH2 0x233D JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x80 DUP6 ADD CALLDATALOAD PUSH2 0x25CF DUP2 PUSH2 0x2201 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x25EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2603 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x237E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2647 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2653 DUP6 DUP3 DUP7 ADD PUSH2 0x25DA JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2671 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB55 DUP3 PUSH2 0x2467 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2699 DUP6 PUSH2 0x2467 JUMP JUMPDEST SWAP4 POP PUSH2 0x26A7 PUSH1 0x20 DUP7 ADD PUSH2 0x2512 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x26C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26CE DUP8 DUP3 DUP9 ADD PUSH2 0x233D JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP6 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x26F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2706 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2712 DUP8 DUP3 DUP9 ADD PUSH2 0x2242 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH1 0x1F NOT DUP3 ADD SLT ISZERO PUSH2 0x2727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP5 ADD SWAP2 POP PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x273C DUP2 PUSH2 0x2201 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP DUP4 MLOAD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x2782 PUSH1 0x40 DUP5 ADD DUP3 DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST POP DUP3 MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0xB55 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x27AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x27B7 DUP2 PUSH2 0x2201 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x24F0 DUP2 PUSH2 0x2201 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB55 DUP4 DUP4 PUSH2 0x232B JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x27F7 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2254 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2829 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB55 DUP2 PUSH2 0x2201 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2885 JUMPI PUSH2 0x2885 PUSH2 0x284D JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2885 JUMPI PUSH2 0x2885 PUSH2 0x284D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x28D5 JUMPI PUSH2 0x28D5 PUSH2 0x284D JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x28F6 JUMPI PUSH2 0x28F6 PUSH2 0x284D JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT ISZERO PUSH2 0x291D JUMPI PUSH2 0x291D PUSH2 0x284D JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x292D PUSH1 0x20 DUP3 ADD PUSH2 0x28AD JUMP JUMPDEST DUP5 DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATASIZE DUP4 GT ISZERO PUSH2 0x2946 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2A23 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2966 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x60 CALLDATASIZE DUP3 SWAP1 SUB SLT ISZERO PUSH2 0x2979 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2981 PUSH2 0x2863 JUMP JUMPDEST PUSH2 0x298A DUP3 PUSH2 0x2467 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2998 PUSH1 0x20 DUP4 ADD PUSH2 0x2512 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x29B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP1 CALLDATASIZE PUSH1 0x1F DUP4 ADD SLT PUSH2 0x29CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x29DD PUSH2 0x29D8 DUP3 PUSH2 0x28DD JUMP JUMPDEST PUSH2 0x28AD JUMP JUMPDEST DUP2 DUP2 MSTORE CALLDATASIZE PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x29F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE POP POP DUP1 DUP6 MSTORE POP POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2948 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x2A3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2A4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x2A69 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x219E JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY PUSH1 0x0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xD0E PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x2A7F JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x13E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2AE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2B0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2B24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x237E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x11F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH2 0x2B5C DUP10 PUSH2 0x2467 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP9 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x2B79 DUP2 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND PUSH1 0x40 DUP5 ADD MSTORE POP DUP8 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xE0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x2BA4 PUSH1 0xE0 DUP4 ADD DUP8 DUP10 PUSH2 0x2A7F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x2BC6 DUP2 DUP6 DUP8 PUSH2 0x2A7F JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x2C0D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2C1B PUSH2 0x29D8 DUP3 PUSH2 0x28DD JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x2C30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x177E DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x219E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB55 DUP2 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE DUP4 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xBCF PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x21C2 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2CA2 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x21C2 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x177E DUP2 DUP6 PUSH2 0x21C2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2CC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB55 DUP2 PUSH2 0x249C JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH4 0xFFFFFFFF DUP4 MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xA0 PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x2D07 PUSH1 0xE0 DUP5 ADD DUP3 PUSH2 0x21C2 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x3F NOT DUP5 DUP4 SUB ADD PUSH1 0xA0 DUP6 ADD MSTORE PUSH2 0x2D24 DUP3 DUP3 PUSH2 0x21C2 JUMP JUMPDEST PUSH1 0x80 SWAP7 SWAP1 SWAP7 ADD MLOAD ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D64 PUSH2 0x288B JUMP JUMPDEST DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB55 DUP4 DUP4 PUSH2 0x2D4A JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x123F JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2DBE JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1132 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2DCA JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2DF7 JUMPI PUSH2 0x2DF7 PUSH2 0x284D JUMP JUMPDEST PUSH2 0x2E0B DUP2 PUSH2 0x2E05 DUP5 SLOAD PUSH2 0x27E3 JUMP JUMPDEST DUP5 PUSH2 0x2D97 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2E3F JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x2E27 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x1132 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2E6F JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2E4F JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x2E8D JUMPI DUP7 DUP5 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD PUSH1 0x20 DUP4 MSTORE DUP1 DUP5 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP6 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP7 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2F20 JUMPI PUSH1 0x3F NOT DUP8 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD PUSH4 0xFFFFFFFF DUP2 MLOAD AND DUP7 MSTORE PUSH2 0xFFFF PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD SWAP1 POP PUSH1 0x60 PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x2F0A PUSH1 0x60 DUP8 ADD DUP3 PUSH2 0x21C2 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2EC4 JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x2F3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2F48 PUSH2 0x288B JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2F92 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x8DF JUMPI PUSH2 0x8DF PUSH2 0x2F5F JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x20 DUP4 LT ISZERO PUSH2 0x8DF JUMPI PUSH1 0x0 NOT PUSH1 0x20 DUP5 SWAP1 SUB PUSH1 0x3 SHL SHL AND SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT DUP2 AND SWAP1 PUSH1 0x8 DUP5 LT ISZERO PUSH2 0x2FFD JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT PUSH1 0x8 DUP6 SWAP1 SUB PUSH1 0x3 SHL DUP2 SWAP1 SHL DUP3 AND AND SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL DUP6 PUSH1 0xC0 SHL AND DUP2 MSTORE PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP5 PUSH1 0xE0 SHL AND PUSH1 0x8 DUP3 ADD MSTORE DUP3 PUSH1 0xC DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x3043 DUP2 PUSH1 0x2C DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x219E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD PUSH1 0x2C ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x8DF JUMPI PUSH2 0x8DF PUSH2 0x2F5F JUMP JUMPDEST DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL DUP5 PUSH1 0xC0 SHL AND PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x3099 DUP2 PUSH1 0x48 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x219E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD PUSH1 0x48 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x30BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30C5 PUSH2 0x2863 JUMP JUMPDEST DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x30D7 DUP2 PUSH2 0x2B39 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x30E9 DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x2D4A JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 SWAP11 ADD 0xA8 0x25 MLOAD 0xAF 0xEC LT 0xCF 0xED 0xE2 SWAP7 EXTCODESIZE BALANCE 0xE2 CALLDATACOPY DUP5 0x1E 0xC1 PUSH32 0xD08D2BCE558D917FF0204964736F6C634300081C003300000000000000000000 ","sourceMap":"189:500:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3979:186;;;;;;;;;;-1:-1:-1;3979:186:36;;;;;:::i;:::-;;:::i;:::-;;;1443:14:66;;1436:22;1418:41;;1406:2;1391:18;3979:186:36;1278:187:66;5176:1276:24;;;;;;;;;;-1:-1:-1;5176:1276:24;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2330:27::-;;;;;;;;;;-1:-1:-1;2330:27:24;;;;-1:-1:-1;;;;;2330:27:24;;;;;;-1:-1:-1;;;;;3621:32:66;;;3603:51;;3591:2;3576:18;2330:27:24;3457:203:66;4368:708:12;;;;;;:::i;:::-;;:::i;:::-;;2204:40:24;;;;;;;;;;;;2243:1;2204:40;;;;;5448:6:66;5436:19;;;5418:38;;5406:2;5391:18;2204:40:24;5274:188:66;3475:140:24;;;;;;;;;;-1:-1:-1;3475:140:24;;;-1:-1:-1;;;5637:52:66;;3606:1:24;5720:2:66;5705:18;;5698:59;5610:18;3475:140:24;5467:296:66;1287:235:10;;;;;;;;;;-1:-1:-1;1287:235:10;;;843:1:13;5938:50:66;;678:1:12;6019:2:66;6004:18;;5997:59;5911:18;1287:235:10;5768:294:66;2830:97:36;;;;;;;;;;-1:-1:-1;2908:12:36;;2830:97;;;6213:25:66;;;6201:2;6186:18;2830:97:36;6067:177:66;2167:31:24;;;;;;;;;;;;2197:1;2167:31;;4757:244:36;;;;;;;;;;-1:-1:-1;4757:244:36;;;;;:::i;:::-;;:::i;2688:82::-;;;;;;;;;;-1:-1:-1;2761:2:36;2688:82;;;6934:4:66;6922:17;;;6904:36;;6892:2;6877:18;2688:82:36;6762:184:66;1724:108:11;;;;;;;;;;-1:-1:-1;1724:108:11;;;;;:::i;:::-;;:::i;6903:774:24:-;;;;;;;;;;-1:-1:-1;6903:774:24;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;588:99:60:-;;;;;;;;;;-1:-1:-1;588:99:60;;;;;:::i;:::-;;:::i;875:93:19:-;;;;;;;;;;-1:-1:-1;956:4:19;875:93;;538::18;;;;;;;;;;-1:-1:-1;538:93:18;;;;;:::i;:::-;;:::i;16151:132:24:-;;;;;;;;;;-1:-1:-1;16151:132:24;;;;;:::i;:::-;16256:11;;;;;16233:4;16256:11;;;:5;:11;;;;;;:20;;16151:132;446:46:11;;;;;;;;;;;;;;;4657:163:24;;;;;;;;;;-1:-1:-1;4657:163:24;;;;;:::i;:::-;;:::i;2985:116:36:-;;;;;;;;;;-1:-1:-1;2985:116:36;;;;;:::i;:::-;-1:-1:-1;;;;;3076:18:36;3050:7;3076:18;;;:9;:18;;;;;;;2985:116;2293:101:28;;;;;;;;;;;;;:::i;3507:128:12:-;;;;;;;;;;-1:-1:-1;3507:128:12;;;;;:::i;:::-;3596:12;3507:128;;;;;;;;-1:-1:-1;;;;;9595:31:66;;;9577:50;;9565:2;9550:18;3507:128:12;9433:200:66;2013:216:12;;;;;;;;;;-1:-1:-1;2013:216:12;;;;;:::i;:::-;;:::i;4222:87:24:-;;;;;;;;;;-1:-1:-1;4301:1:24;4222:87;;1638:85:28;;;;;;;;;;-1:-1:-1;1684:7:28;1710:6;-1:-1:-1;;;;;1710:6:28;1638:85;;1962:93:36;;;;;;;;;;;;;:::i;1861:46:24:-;;;;;;;;;;;;;;;1460:94:23;;;;;;;;;;-1:-1:-1;1519:4:23;1460:94;;3296:178:36;;;;;;;;;;-1:-1:-1;3296:178:36;;;;;:::i;:::-;;:::i;559:23:19:-;;;;;;;;;;-1:-1:-1;559:23:19;;;;-1:-1:-1;;;;;559:23:19;;;1391:156:18;;;;;;;;;;-1:-1:-1;1391:156:18;;;;;:::i;:::-;;:::i;569:48:11:-;;;;;;;;;;-1:-1:-1;569:48:11;;;;;:::i;:::-;;;;;;;;;;;;;;3510:981:18;;;;;;;;;;-1:-1:-1;3510:981:18;;;;;:::i;:::-;;:::i;1698:1333:19:-;;;;;;:::i;:::-;;:::i;8365:290:24:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;3252:105:11:-;;;;;;;;;;-1:-1:-1;3252:105:11;;;;;:::i;:::-;;:::i;3679:409:19:-;;;;;;:::i;:::-;;:::i;1100:139::-;;;;;;;;;;-1:-1:-1;1100:139:19;;;;;:::i;:::-;;:::i;3532:140:36:-;;;;;;;;;;-1:-1:-1;3532:140:36;;;;;:::i;:::-;-1:-1:-1;;;;;3638:18:36;;;3612:7;3638:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3532:140;2543:215:28;;;;;;;;;;-1:-1:-1;2543:215:28;;;;;:::i;:::-;;:::i;2771:149:12:-;;;;;;;;;;-1:-1:-1;2771:149:12;;;;;:::i;:::-;;:::i;1760:89:36:-;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3979:186::-;4052:4;735:10:46;4106:31:36;735:10:46;4122:7:36;4131:5;4106:8;:31::i;:::-;4154:4;4147:11;;;3979:186;;;;;:::o;5176:1276:24:-;-1:-1:-1;;;;;;;;;;;;;;;;;5328:35:24;5365:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;5365:28:24;5409:19;5483;5512:4;-1:-1:-1;;;;;5512:10:24;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5505:32:24;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5601;;;;;;;;;;;;;;;;;;5752:21;;-1:-1:-1;5752:21:24;;;;;;;;;5601:34;;-1:-1:-1;5601:34:24;;-1:-1:-1;5752:21:24;;;;-1:-1:-1;;;;;;;;;;;;;;;;;5752:21:24;;;;;;;;;;;;;;;-1:-1:-1;5736:37:24;-1:-1:-1;6210:20:24;;6260:120;6284:19;;;;6317:22;;;;6353:17;;;;6284:10;6353:17;:::i;:::-;6260:10;:120::i;:::-;6403:42;;;;;;;;;;;;;;;;5176:1276;;;;-1:-1:-1;;;;;;5176:1276:24:o;4368:708:12:-;4681:8;-1:-1:-1;;;;;4673:31:12;4694:10;4673:31;4669:68;;4713:24;;-1:-1:-1;;;4713:24:12;;4726:10;4713:24;;;3603:51:66;3576:18;;4713:24:12;;;;;;;;4669:68;4873:14;;;;;;4837:32;;4854:14;;4873:7;4854:14;:::i;:::-;4837:16;:32::i;:::-;:50;4833:103;;4905:14;;;;:7;:14;:::i;:::-;4896:40;;-1:-1:-1;;;4896:40:12;;15768:10:66;15756:23;;;4896:40:12;;;15738:42:66;4921:14:12;;;;15796:18:66;;;15789:34;15711:18;;4896:40:12;15566:263:66;4833:103:12;5010:59;5021:7;5030:5;5037:8;;5047:9;5058:10;;5010;:59::i;:::-;4368:708;;;;;;;:::o;4757:244:36:-;4844:4;735:10:46;4900:37:36;4916:4;735:10:46;4931:5:36;4900:15;:37::i;:::-;4947:26;4957:4;4963:2;4967:5;4947:9;:26::i;:::-;4990:4;4983:11;;;4757:244;;;;;;:::o;1724:108:11:-;1531:13:28;:11;:13::i;:::-;1804:21:11::1;1813:4;1819:5;1804:8;:21::i;:::-;1724:108:::0;;:::o;6903:774:24:-;-1:-1:-1;;;;;;;;;;;;;;;;;7237:24:24;7265:74;7276:19;;;;7297:22;;;;7321:17;;;;7276:10;7321:17;:::i;7265:74::-;7234:105;;;7428:20;7450;7474:49;7494:10;7506:16;7474:19;:49::i;:::-;7427:96;;-1:-1:-1;7427:96:24;-1:-1:-1;7612:58:24;7619:17;;;;:10;:17;:::i;:::-;7638:7;7647;7656:13;7612:6;:58::i;:::-;7605:65;6903:774;-1:-1:-1;;;;;;6903:774:24:o;588:99:60:-;1531:13:28;:11;:13::i;:::-;661:19:60::1;667:3;672:7;661:5;:19::i;538:93:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4657:163:24:-;1531:13:28;:11;:13::i;:::-;4740:12:24::1;:28:::0;;-1:-1:-1;;;;;;4740:28:24::1;-1:-1:-1::0;;;;;4740:28:24;::::1;::::0;;::::1;::::0;;;4783:30:::1;::::0;3603:51:66;;;4783:30:24::1;::::0;3591:2:66;3576:18;4783:30:24::1;;;;;;;;4657:163:::0;:::o;2293:101:28:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2013:216:12:-;-1:-1:-1;;;;;2198:24:12;;2217:4;2198:24;2013:216;;;;;;;:::o;1962:93:36:-;2009:13;2041:7;2034:14;;;;;:::i;3296:178::-;3365:4;735:10:46;3419:27:36;735:10:46;3436:2:36;3440:5;3419:9;:27::i;1391:156:18:-;1531:13:28;:11;:13::i;:::-;1503:37:18::1;;1523:16:::0;;1503:37:::1;:::i;:::-;:19;:37::i;3510:981::-:0;3701:21;;;3677;3701;;;:15;:21;;;;;;;;:31;;;;;;;;;;3677:55;;3653:12;;3677:21;3701:31;3677:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3861:8;:15;3880:1;3861:20;3857:46;;3890:13;;3883:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3883:20:18;;-1:-1:-1;3883:20:18;;-1:-1:-1;;;;3883:20:18;3857:46;3988:1;3964:25;;;3960:46;;3998:8;-1:-1:-1;3991:15:18;;3960:46;4153:1;4129:25;;4125:267;;4170:34;4190:13;;4170:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4170:19:18;;-1:-1:-1;;;4170:34:18:i;:::-;4353:8;4363:17;:13;4377:1;4363:13;;:17;:::i;:::-;4340:41;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4333:48;;;;;4125:267;4470:13;;4455:29;;-1:-1:-1;;;4455:29:18;;;;;;;;;:::i;1698:1333:19:-;1799:9;1794:1037;1814:19;;;1794:1037;;;1854:29;1886:8;;1895:1;1886:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;1854:43;-1:-1:-1;1980:50:19;1987:20;;;;1854:43;1987:20;:::i;:::-;2009;;;;16256:11:24;;;;;16233:4;16256:11;;;:5;:11;;;;;;:20;;16151:132;1980:50:19;1975:65;;2032:8;;;1975:65;2602:4;:22;2633:12;;;;:6;2696:11;;;;2725:14;;;;2633:6;2725:14;:::i;:::-;2757:15;;;;;;;;:::i;:::-;2790:16;;;;:6;:16;:::i;:::-;2602:218;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1840:991;1794:1037;1835:3;;1794:1037;;;;2988:10;-1:-1:-1;;;;;2978:43:19;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2978:45:19;;;;;;;;;;;;:::i;:::-;2961:63;;-1:-1:-1;;;2961:63:19;;;;;;;;:::i;8365:290:24:-;8526:34;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;8609:39:24;8615:10;8627:4;8633:14;8609:5;:39::i;:::-;8602:46;;;;8365:290;;;;;;;:::o;3252:105:11:-;1531:13:28;:11;:13::i;:::-;3319:31:11::1;::::0;-1:-1:-1;;;3319:31:11;;-1:-1:-1;;;;;3621:32:66;;;3319:31:11::1;::::0;::::1;3603:51:66::0;3319:8:11::1;:20;::::0;::::1;::::0;3576:18:66;;3319:31:11::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3252:105:::0;:::o;3679:409:19:-;3958:10;3980:4;3958:27;3954:50;;3994:10;;-1:-1:-1;;;3994:10:19;;;;;;;;;;;3954:50;4014:67;4033:7;4042:5;4049:8;;4059:9;4070:10;;4014:18;:67::i;1100:139::-;1531:13:28;:11;:13::i;:::-;1175:8:19::1;:20:::0;;-1:-1:-1;;;;;;1175:20:19::1;-1:-1:-1::0;;;;;1175:20:19;::::1;::::0;;::::1;::::0;;;1210:22:::1;::::0;3603:51:66;;;1210:22:19::1;::::0;3591:2:66;3576:18;1210:22:19::1;3457:203:66::0;2543:215:28;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:28;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:28;;2700:1:::1;2672:31;::::0;::::1;3603:51:66::0;3576:18;;2672:31:28::1;3457:203:66::0;2623:91:28::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;2771:149:12:-;2853:4;2900:13;;;;;;2876:5;;2853:4;;2882:13;;2900:6;2882:13;:::i;:::-;2876:20;;;;;;;;;;;;;-1:-1:-1;2876:20:12;;:37;;2771:149;-1:-1:-1;;2771:149:12:o;8707:128:36:-;8791:37;8800:5;8807:7;8816:5;8823:4;8791:8;:37::i;:::-;8707:128;;;:::o;18168:668:24:-;18310:20;18332:24;18506:22;18518:9;18506:11;:22::i;:::-;18491:37;;18654:12;18635:31;;18736:12;18717:16;:31;18713:117;;;18771:48;;-1:-1:-1;;;18771:48:24;;;;;22970:25:66;;;23011:18;;;23004:34;;;22943:18;;18771:48:24;22796:248:66;2718:196:11;2822:11;;;2788:7;2822:11;;;:5;:11;;;;;;;2843:43;;2874:12;;-1:-1:-1;;;2874:12:11;;23223:10:66;23211:23;;2874:12:11;;;23193:42:66;23166:18;;2874:12:11;23049:192:66;12944:1806:24;13421:17;13441:36;:17;:8;;:15;:17::i;:::-;2891:2:27;2780:123;13441:36:24;13421:56;;13610:24;13637:62;13645:9;13656:26;13662:19;:8;;:17;:19::i;:::-;13656:5;:26::i;:::-;13684:14;;;;:7;:14;:::i;:::-;13637:7;:62::i;:::-;13610:89;-1:-1:-1;243:2:27;-1:-1:-1;;13710:955:24;;;13814:23;13840:175;13883:13;;;;;;;;:::i;:::-;13914:14;;;;:7;:14;:::i;:::-;13946:16;13980:21;:8;;:19;:21::i;:::-;13840:25;:175::i;:::-;14562:92;;-1:-1:-1;;;14562:92:24;;13814:201;;-1:-1:-1;;;;;;14562:8:24;:20;;;;:92;;14583:9;;14594:5;;14601:1;;13814:201;;14562:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13737:928;13710:955;-1:-1:-1;;;;;14680:63:24;;14692:5;14680:63;14699:14;;;;:7;:14;:::i;:::-;14680:63;;;15768:10:66;15756:23;;;15738:42;;15811:2;15796:18;;15789:34;;;15711:18;14680:63:24;;;;;;;13247:1503;;12944:1806;;;;;;;:::o;10396:476:36:-;-1:-1:-1;;;;;3638:18:36;;;10495:24;3638:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10561:36:36;;10557:309;;;10636:5;10617:16;:24;10613:130;;;10668:60;;-1:-1:-1;;;10668:60:36;;-1:-1:-1;;;;;24468:32:66;;10668:60:36;;;24450:51:66;24517:18;;;24510:34;;;24560:18;;;24553:34;;;24423:18;;10668:60:36;24248:345:66;10613:130:36;10784:57;10793:5;10800:7;10828:5;10809:16;:24;10835:5;10784:8;:57::i;:::-;10485:387;10396:476;;;:::o;5374:300::-;-1:-1:-1;;;;;5457:18:36;;5453:86;;5498:30;;-1:-1:-1;;;5498:30:36;;5525:1;5498:30;;;3603:51:66;3576:18;;5498:30:36;3457:203:66;5453:86:36;-1:-1:-1;;;;;5552:16:36;;5548:86;;5591:32;;-1:-1:-1;;;5591:32:36;;5620:1;5591:32;;;3603:51:66;3576:18;;5591:32:36;3457:203:66;5548:86:36;5643:24;5651:4;5657:2;5661:5;5643:7;:24::i;1796:162:28:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:28;735:10:46;1855:23:28;1851:101;;1901:40;;-1:-1:-1;;;1901:40:28;;735:10:46;1901:40:28;;;3603:51:66;3576:18;;1901:40:28;3457:203:66;2286:134:11;2359:11;;;;;;;:5;:11;;;;;;;;;:19;;;2393:20;;15738:42:66;;;15796:18;;15789:34;;;2393:20:11;;15711:18:66;2393:20:11;;;;;;;2286:134;;:::o;10990:1436:24:-;11122:20;11144;11176:15;11347:324;11379:10;:13;;;11406:16;11412:9;11406:5;:16::i;:::-;11640:21;;;;:10;:21;:::i;:::-;11347:324;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11347:18:24;;-1:-1:-1;;;11347:324:24:i;:::-;11323:348;;-1:-1:-1;11323:348:24;-1:-1:-1;11751:14:24;11323:348;11768:33;;2197:1;11768:33;;;2243:1;11768:33;11751:50;-1:-1:-1;11923:67:24;11938:17;;;;:10;:17;:::i;:::-;11957:7;11966:23;;;;:10;:23;:::i;11923:67::-;12248:12;;11913:77;;-1:-1:-1;;;;;;12248:12:24;12340:23;;12336:83;;12365:54;;-1:-1:-1;;;12365:54:24;;-1:-1:-1;;;;;12365:36:24;;;;;:54;;12402:7;;12411;;12365:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12336:83;11166:1260;;;10990:1436;;;;;:::o;2038:391:13:-;-1:-1:-1;;;;;;;;;;;;;;;;;2259:8:13;-1:-1:-1;;;;;2259:14:13;;2291:86;;;;;;;;2307:7;2291:86;;;;;;2316:25;2333:7;2316:16;:25::i;:::-;2291:86;;;;2343:8;2291:86;;;;2353:8;2291:86;;;;2363:13;2291:86;;;;;2403:4;2259:163;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2240:182;2038:391;-1:-1:-1;;;;;2038:391:13:o;7439:208:36:-;-1:-1:-1;;;;;7509:21:36;;7505:91;;7553:32;;-1:-1:-1;;;7553:32:36;;7582:1;7553:32;;;3603:51:66;3576:18;;7553:32:36;3457:203:66;7505:91:36;7605:35;7621:1;7625:7;7634:5;7605:7;:35::i;2912:187:28:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:28;;;-1:-1:-1;;;;;;3020:17:28;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;2237:514:18:-;2345:9;2340:354;2364:16;:23;2360:1;:27;2340:354;;;2522:48;2542:16;2559:1;2542:19;;;;;;;;:::i;:::-;;;;;;;:27;;;2522:19;:48::i;:::-;2656:16;2673:1;2656:19;;;;;;;;:::i;:::-;;;;;;;:27;;;2584:15;:40;2600:16;2617:1;2600:19;;;;;;;;:::i;:::-;;;;;;;:23;;;2584:40;;;;;;;;;;;;;;;:69;2625:16;2642:1;2625:19;;;;;;;;:::i;:::-;;;;;;;:27;;;2584:69;;;;;;;;;;;;;;;:99;;;;;;:::i;:::-;-1:-1:-1;2389:3:18;;2340:354;;;;2709:35;2727:16;2709:35;;;;;;:::i;4631:264::-;4801:1;4787:16;;4781:23;4827:28;;;463:1;4827:28;4823:65;;4879:8;4864:24;;-1:-1:-1;;;4864:24:18;;;;;;;;:::i;9363:1333:24:-;9517:34;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;9915:20:24;;9965:140;9985:10;10009:19;;;;10042:22;;;;10078:17;;;;10009:10;10078:17;:::i;:::-;9965:6;:140::i;:::-;9914:191;;;;10194:20;10216;10240:49;10260:10;10272:16;10240:19;:49::i;:::-;10193:96;;-1:-1:-1;10193:96:24;-1:-1:-1;10412:66:24;10420:17;;;;:10;:17;:::i;:::-;10439:7;10448;10412:66;;;;;;;10457:4;10412:66;:::i;:::-;10463:14;10412:7;:66::i;:::-;10544:42;;;;;;;;;;;;;;;;;;;10610:15;;10399:79;;-1:-1:-1;10544:42:24;;-1:-1:-1;10646:10:24;;10610:15;10602:87;;10627:17;;;;:10;:17;:::i;:::-;10602:87;;;30723:10:66;30711:23;;;30693:42;;30766:2;30751:18;;30744:34;;;30794:18;;30787:34;;;30681:2;30666:18;10602:87:24;;;;;;;9583:1113;;;;9363:1333;;;;;;:::o;9682:432:36:-;-1:-1:-1;;;;;9794:19:36;;9790:89;;9836:32;;-1:-1:-1;;;9836:32:36;;9865:1;9836:32;;;3603:51:66;3576:18;;9836:32:36;3457:203:66;9790:89:36;-1:-1:-1;;;;;9892:21:36;;9888:90;;9936:31;;-1:-1:-1;;;9936:31:36;;9964:1;9936:31;;;3603:51:66;3576:18;;9936:31:36;3457:203:66;9888:90:36;-1:-1:-1;;;;;9987:18:36;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10032:76;;;;10082:7;-1:-1:-1;;;;;10066:31:36;10075:5;-1:-1:-1;;;;;10066:31:36;;10091:5;10066:31;;;;6213:25:66;;6201:2;6186:18;;6067:177;10066:31:36;;;;;;;;9682:432;;;;:::o;16677:172:24:-;16748:16;16821:21;16784:33;16821:21;16784:9;:33;:::i;:::-;16783:59;;;;:::i;1573:123:27:-;1633:7;1667:21;188:2;1633:7;1667:4;;:21;:::i;:::-;1659:30;;;:::i;1874:152::-;1936:6;1975:42;243:2;188;1975:4;;:42;:::i;:::-;1968:50;;;:::i;:::-;1961:58;;;1874:152;-1:-1:-1;;;1874:152:27:o;17073:139:24:-;17137:16;17172:33;17184:21;-1:-1:-1;;;;;17172:33:24;;;:::i;2939:462:23:-;3073:24;-1:-1:-1;;;;;3113:19:23;;3109:46;;3148:6;3134:21;;3109:46;3251:21;3257:3;3262:9;3251:5;:21::i;:::-;-1:-1:-1;3385:9:23;;2939:462;-1:-1:-1;;2939:462:23:o;2186:130:27:-;2250:12;2281:28;:4;243:2;2281:4;;:28;:::i;:::-;2274:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2274:35:27;;2186:130;-1:-1:-1;;;;;;2186:130:27:o;640:284:26:-;824:17;877:6;885:7;894:9;905:11;860:57;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;853:64;;640:284;;;;;;:::o;5989:1107:36:-;-1:-1:-1;;;;;6078:18:36;;6074:540;;6230:5;6214:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6074:540:36;;-1:-1:-1;6074:540:36;;-1:-1:-1;;;;;6288:15:36;;6266:19;6288:15;;;:9;:15;;;;;;6321:19;;;6317:115;;;6367:50;;-1:-1:-1;;;6367:50:36;;-1:-1:-1;;;;;24468:32:66;;6367:50:36;;;24450:51:66;24517:18;;;24510:34;;;24560:18;;;24553:34;;;24423:18;;6367:50:36;24248:345:66;6317:115:36;-1:-1:-1;;;;;6552:15:36;;;;;;:9;:15;;;;;6570:19;;;;6552:37;;6074:540;-1:-1:-1;;;;;6628:16:36;;6624:425;;6791:12;:21;;;;;;;6624:425;;;-1:-1:-1;;;;;7002:13:36;;;;;;:9;:13;;;;;:22;;;;;;6624:425;7079:2;-1:-1:-1;;;;;7064:25:36;7073:4;-1:-1:-1;;;;;7064:25:36;;7083:5;7064:25;;;;6213::66;;6201:2;6186:18;;6067:177;7064:25:36;;;;;;;;5989:1107;;;:::o;17436:147:24:-;17501:15;17542:33;17554:21;17542:9;:33;:::i;598:506:27:-;791:18;;732:17;;791:22;;;934:163;;1074:7;1083:13;1057:40;;;;;;;;32844:19:66;;;32919:3;32897:16;-1:-1:-1;;;;;;32893:51:66;32888:2;32879:12;;32872:73;32970:2;32961:12;;32689:290;1057:40:27;;;;;;;;;;;;;934:163;;;976:7;985:13;1017:10;1030:11;959:83;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;934:163;927:170;;598:506;;;;;;:::o;2037:567:23:-;2198:20;2220:24;2291:44;2302:9;2313:12;2327:7;2291:10;:44::i;:::-;2256:79;;-1:-1:-1;2256:79:23;-1:-1:-1;2571:26:23;2577:5;2256:79;2571:5;:26::i;:::-;2037:567;;;;;;;:::o;3188:766:13:-;3389:31;;:::i;:::-;3554:20;3577:26;3588:4;:14;;;3577:10;:26::i;:::-;3617:15;;;;3554:49;;-1:-1:-1;3617:19:13;3613:53;;3638:28;3650:4;:15;;;3638:11;:28::i;:::-;3755:8;-1:-1:-1;;;;;3755:13:13;;3777:12;3809:92;;;;;;;;3825:7;3809:92;;;;;;3834:25;3851:7;3834:16;:25::i;:::-;3809:92;;;;3861:8;3809:92;;;;3871:8;3809:92;;;;3899:1;3881:4;:15;;;:19;3809:92;;;;;3919:14;3755:192;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3677:270;3188:766;-1:-1:-1;;;;;;;3188:766:13:o;7965:206:36:-;-1:-1:-1;;;;;8035:21:36;;8031:89;;8079:30;;-1:-1:-1;;;8079:30:36;;8106:1;8079:30;;;3603:51:66;3576:18;;8079:30:36;3457:203:66;8031:89:36;8129:35;8137:7;8154:1;8158:5;8129:7;:35::i;4650:191:13:-;4716:17;4762:10;4749:9;:23;4745:62;;4781:26;;-1:-1:-1;;;4781:26:13;;4797:9;4781:26;;;6213:25:66;6186:18;;4781:26:13;6067:177:66;4745:62:13;-1:-1:-1;4824:10:13;4650:191::o;5218:410::-;5371:15;5389:8;-1:-1:-1;;;;;5389:16:13;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5371:36;-1:-1:-1;;;;;;5421:21:13;;5417:54;;5451:20;;-1:-1:-1;;;5451:20:13;;;;;;;;;;;5417:54;1745:53:39;;;5578:10:13;1745:53:39;;;34288:51:66;;;5598:8:13;-1:-1:-1;;;;;34375:32:66;;;34355:18;;;34348:60;34424:18;;;;34417:34;;;1745:53:39;;;;;;;;;;34261:18:66;;;;1745:53:39;;;;;;;;;-1:-1:-1;;;;;1745:53:39;-1:-1:-1;;;1745:53:39;;;8600:11;;5545:76:13;;:32;;;5609:11;;1718:81:39;;5545:32:13;;-1:-1:-1;;;;1745:53:39;;-1:-1:-1;;;5545:32:13;8566:5:39;8561:60;8673:7;8663:176;;8717:4;8711:11;8762:16;8759:1;8754:3;8739:40;8808:16;8803:3;8796:29;8663:176;-1:-1:-1;;8916:1:39;8910:8;8866:16;;-1:-1:-1;8942:15:39;;:68;;8994:11;9009:1;8994:16;;8942:68;;;-1:-1:-1;;;;;8960:26:39;;;:31;8942:68;8938:146;;;9033:40;;-1:-1:-1;;;9033:40:39;;-1:-1:-1;;;;;3621:32:66;;9033:40:39;;;3603:51:66;3576:18;;9033:40:39;3457:203:66;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:250:66:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:66;238:16;;231:27;14:250::o;269:271::-;311:3;349:5;343:12;376:6;371:3;364:19;392:76;461:6;454:4;449:3;445:14;438:4;431:5;427:16;392:76;:::i;:::-;522:2;501:15;-1:-1:-1;;497:29:66;488:39;;;;529:4;484:50;;269:271;-1:-1:-1;;269:271:66:o;545:220::-;694:2;683:9;676:21;657:4;714:45;755:2;744:9;740:18;732:6;714:45;:::i;770:131::-;-1:-1:-1;;;;;845:31:66;;835:42;;825:70;;891:1;888;881:12;906:367;974:6;982;1035:2;1023:9;1014:7;1010:23;1006:32;1003:52;;;1051:1;1048;1041:12;1003:52;1090:9;1077:23;1109:31;1134:5;1109:31;:::i;:::-;1159:5;1237:2;1222:18;;;;1209:32;;-1:-1:-1;;;906:367:66:o;1470:158::-;1532:5;1577:3;1568:6;1563:3;1559:16;1555:26;1552:46;;;1594:1;1591;1584:12;1552:46;-1:-1:-1;1616:6:66;1470:158;-1:-1:-1;1470:158:66:o;1633:360::-;1721:6;1774:2;1762:9;1753:7;1749:23;1745:32;1742:52;;;1790:1;1787;1780:12;1742:52;1830:9;1817:23;-1:-1:-1;;;;;1855:6:66;1852:30;1849:50;;;1895:1;1892;1885:12;1849:50;1918:69;1979:7;1970:6;1959:9;1955:22;1918:69;:::i;2152:1300::-;2072:12;;2060:25;;2134:4;2123:16;;;2117:23;2101:14;;;2094:47;2518:4;2566:3;2551:19;;2660:3;2655:2;2644:9;2640:18;2633:31;2684:6;2719;2713:13;2750:6;2742;2735:22;2788:3;2777:9;2773:19;2766:26;;2851:3;2841:6;2838:1;2834:14;2823:9;2819:30;2815:40;2801:54;;2890:4;2882:6;2878:17;2913:1;2923:437;2937:6;2934:1;2931:13;2923:437;;;3030:3;3026:8;3014:9;3006:6;3002:22;2998:37;2993:3;2986:50;3065:6;3059:13;3106:2;3100:9;3092:6;3085:25;3157:4;3153:2;3149:13;3143:20;3123:40;;3202:2;3195:4;3187:6;3183:17;3176:29;3228:48;3272:2;3264:6;3260:15;3246:12;3228:48;:::i;:::-;3218:58;-1:-1:-1;;3311:4:66;3336:14;;;;3299:17;;;;;2959:1;2952:9;2923:437;;;-1:-1:-1;;2072:12:66;;3442:2;3427:18;;2060:25;-1:-1:-1;;2134:4:66;2123:16;;2117:23;2101:14;;;2094:47;3377:6;-1:-1:-1;3392:54:66;1998:149;3665:154;3724:5;3769:2;3760:6;3755:3;3751:16;3747:25;3744:45;;;3785:1;3782;3775:12;3824:347;3875:8;3885:6;3939:3;3932:4;3924:6;3920:17;3916:27;3906:55;;3957:1;3954;3947:12;3906:55;-1:-1:-1;3980:20:66;;-1:-1:-1;;;;;4012:30:66;;4009:50;;;4055:1;4052;4045:12;4009:50;4092:4;4084:6;4080:17;4068:29;;4144:3;4137:4;4128:6;4120;4116:19;4112:30;4109:39;4106:59;;;4161:1;4158;4151:12;4106:59;3824:347;;;;;:::o;4176:1093::-;4317:6;4325;4333;4341;4349;4357;4365;4418:3;4406:9;4397:7;4393:23;4389:33;4386:53;;;4435:1;4432;4425:12;4386:53;4458;4503:7;4492:9;4458:53;:::i;:::-;4448:63;-1:-1:-1;4580:2:66;4565:18;;4552:32;;-1:-1:-1;4659:3:66;4644:19;;4631:33;-1:-1:-1;;;;;4676:30:66;;4673:50;;;4719:1;4716;4709:12;4673:50;4758:58;4808:7;4799:6;4788:9;4784:22;4758:58;:::i;:::-;4835:8;;-1:-1:-1;4732:84:66;-1:-1:-1;;4922:3:66;4907:19;;4894:33;4936;4894;4936;:::i;:::-;4988:7;-1:-1:-1;5048:3:66;5033:19;;5020:33;-1:-1:-1;;;;;5065:32:66;;5062:52;;;5110:1;5107;5100:12;5062:52;5149:60;5201:7;5190:8;5179:9;5175:24;5149:60;:::i;:::-;4176:1093;;;;-1:-1:-1;4176:1093:66;;-1:-1:-1;4176:1093:66;;;;5123:86;;-1:-1:-1;;;4176:1093:66:o;6249:508::-;6326:6;6334;6342;6395:2;6383:9;6374:7;6370:23;6366:32;6363:52;;;6411:1;6408;6401:12;6363:52;6450:9;6437:23;6469:31;6494:5;6469:31;:::i;:::-;6519:5;-1:-1:-1;6576:2:66;6561:18;;6548:32;6589:33;6548:32;6589:33;:::i;:::-;6249:508;;6641:7;;-1:-1:-1;;;6721:2:66;6706:18;;;;6693:32;;6249:508::o;6951:163::-;7018:20;;7078:10;7067:22;;7057:33;;7047:61;;7104:1;7101;7094:12;7047:61;6951:163;;;:::o;7119:298::-;7186:6;7194;7247:2;7235:9;7226:7;7222:23;7218:32;7215:52;;;7263:1;7260;7253:12;7215:52;7286:28;7304:9;7286:28;:::i;7422:118::-;7508:5;7501:13;7494:21;7487:5;7484:32;7474:60;;7530:1;7527;7520:12;7545:489;7639:6;7647;7700:2;7688:9;7679:7;7675:23;7671:32;7668:52;;;7716:1;7713;7706:12;7668:52;7756:9;7743:23;-1:-1:-1;;;;;7781:6:66;7778:30;7775:50;;;7821:1;7818;7811:12;7775:50;7844:69;7905:7;7896:6;7885:9;7881:22;7844:69;:::i;:::-;7834:79;;;7963:2;7952:9;7948:18;7935:32;7976:28;7998:5;7976:28;:::i;:::-;8023:5;8013:15;;;7545:489;;;;;:::o;8039:253::-;2072:12;;2060:25;;2134:4;2123:16;;;2117:23;2101:14;;;2094:47;8229:2;8214:18;;8241:45;1998:149;8297:159;8364:20;;8424:6;8413:18;;8403:29;;8393:57;;8446:1;8443;8436:12;8461:256;8527:6;8535;8588:2;8576:9;8567:7;8563:23;8559:32;8556:52;;;8604:1;8601;8594:12;8556:52;8627:28;8645:9;8627:28;:::i;:::-;8617:38;;8674:37;8707:2;8696:9;8692:18;8674:37;:::i;:::-;8664:47;;8461:256;;;;;:::o;9181:247::-;9240:6;9293:2;9281:9;9272:7;9268:23;9264:32;9261:52;;;9309:1;9306;9299:12;9261:52;9348:9;9335:23;9367:31;9392:5;9367:31;:::i;9638:668::-;9750:6;9758;9766;9774;9827:3;9815:9;9806:7;9802:23;9798:33;9795:53;;;9844:1;9841;9834:12;9795:53;9867;9912:7;9901:9;9867:53;:::i;:::-;9857:63;;9971:2;9960:9;9956:18;9943:32;-1:-1:-1;;;;;9990:6:66;9987:30;9984:50;;;10030:1;10027;10020:12;9984:50;10069:58;10119:7;10110:6;10099:9;10095:22;10069:58;:::i;:::-;10146:8;;-1:-1:-1;10043:84:66;-1:-1:-1;;10231:3:66;10216:19;;10203:33;10245:31;10203:33;10245:31;:::i;:::-;9638:668;;;;-1:-1:-1;9638:668:66;;-1:-1:-1;;9638:668:66:o;10311:395::-;10402:8;10412:6;10466:3;10459:4;10451:6;10447:17;10443:27;10433:55;;10484:1;10481;10474:12;10433:55;-1:-1:-1;10507:20:66;;-1:-1:-1;;;;;10539:30:66;;10536:50;;;10582:1;10579;10572:12;10536:50;10619:4;10611:6;10607:17;10595:29;;10679:3;10672:4;10662:6;10659:1;10655:14;10647:6;10643:27;10639:38;10636:47;10633:67;;;10696:1;10693;10686:12;10711:504;10836:6;10844;10897:2;10885:9;10876:7;10872:23;10868:32;10865:52;;;10913:1;10910;10903:12;10865:52;10953:9;10940:23;-1:-1:-1;;;;;10978:6:66;10975:30;10972:50;;;11018:1;11015;11008:12;10972:50;11057:98;11147:7;11138:6;11127:9;11123:22;11057:98;:::i;:::-;11174:8;;11031:124;;-1:-1:-1;10711:504:66;-1:-1:-1;;;;10711:504:66:o;11220:184::-;11278:6;11331:2;11319:9;11310:7;11306:23;11302:32;11299:52;;;11347:1;11344;11337:12;11299:52;11370:28;11388:9;11370:28;:::i;11591:553::-;11677:6;11685;11693;11701;11754:2;11742:9;11733:7;11729:23;11725:32;11722:52;;;11770:1;11767;11760:12;11722:52;11793:28;11811:9;11793:28;:::i;:::-;11783:38;;11840:37;11873:2;11862:9;11858:18;11840:37;:::i;:::-;11830:47;;11928:2;11917:9;11913:18;11900:32;-1:-1:-1;;;;;11947:6:66;11944:30;11941:50;;;11987:1;11984;11977:12;11941:50;12026:58;12076:7;12067:6;12056:9;12052:22;12026:58;:::i;:::-;11591:553;;;;-1:-1:-1;12103:8:66;-1:-1:-1;;;;11591:553:66:o;12652:655::-;12788:6;12796;12804;12848:9;12839:7;12835:23;12878:3;12874:2;12870:12;12867:32;;;12895:1;12892;12885:12;12867:32;12935:9;12922:23;-1:-1:-1;;;;;12960:6:66;12957:30;12954:50;;;13000:1;12997;12990:12;12954:50;13023:69;13084:7;13075:6;13064:9;13060:22;13023:69;:::i;:::-;13013:79;-1:-1:-1;;13126:2:66;-1:-1:-1;;13108:16:66;;13104:25;13101:45;;;13142:1;13139;13132:12;13101:45;;13180:2;13169:9;13165:18;13155:28;;13233:2;13222:9;13218:18;13205:32;13246:31;13271:5;13246:31;:::i;:::-;13296:5;13286:15;;;12652:655;;;;;:::o;13312:609::-;13552:4;13594:3;13583:9;13579:19;13571:27;;13631:6;13625:13;13614:9;13607:32;-1:-1:-1;;;;;13699:4:66;13691:6;13687:17;13681:24;13677:49;13670:4;13659:9;13655:20;13648:79;13774:4;13766:6;13762:17;13756:24;13789:62;13845:4;13834:9;13830:20;13816:12;2072;;2060:25;;2134:4;2123:16;;;2117:23;2101:14;;2094:47;1998:149;13789:62;-1:-1:-1;2072:12:66;;13910:3;13895:19;;2060:25;2134:4;2123:16;;2117:23;2101:14;;;2094:47;13860:55;1998:149;13926:388;13994:6;14002;14055:2;14043:9;14034:7;14030:23;14026:32;14023:52;;;14071:1;14068;14061:12;14023:52;14110:9;14097:23;14129:31;14154:5;14129:31;:::i;:::-;14179:5;-1:-1:-1;14236:2:66;14221:18;;14208:32;14249:33;14208:32;14249:33;:::i;14319:234::-;14402:6;14455:2;14443:9;14434:7;14430:23;14426:32;14423:52;;;14471:1;14468;14461:12;14423:52;14494:53;14539:7;14528:9;14494:53;:::i;14558:380::-;14637:1;14633:12;;;;14680;;;14701:61;;14755:4;14747:6;14743:17;14733:27;;14701:61;14808:2;14800:6;14797:14;14777:18;14774:38;14771:161;;14854:10;14849:3;14845:20;14842:1;14835:31;14889:4;14886:1;14879:15;14917:4;14914:1;14907:15;14943:251;15013:6;15066:2;15054:9;15045:7;15041:23;15037:32;15034:52;;;15082:1;15079;15072:12;15034:52;15114:9;15108:16;15133:31;15158:5;15133:31;:::i;15199:230::-;15269:6;15322:2;15310:9;15301:7;15297:23;15293:32;15290:52;;;15338:1;15335;15328:12;15290:52;-1:-1:-1;15383:16:66;;15199:230;-1:-1:-1;15199:230:66:o;15434:127::-;15495:10;15490:3;15486:20;15483:1;15476:31;15526:4;15523:1;15516:15;15550:4;15547:1;15540:15;15834:253;15906:2;15900:9;15948:4;15936:17;;-1:-1:-1;;;;;15968:34:66;;16004:22;;;15965:62;15962:88;;;16030:18;;:::i;:::-;16066:2;16059:22;15834:253;:::o;16092:257::-;16164:4;16158:11;;;16196:17;;-1:-1:-1;;;;;16228:34:66;;16264:22;;;16225:62;16222:88;;;16290:18;;:::i;16354:275::-;16425:2;16419:9;16490:2;16471:13;;-1:-1:-1;;16467:27:66;16455:40;;-1:-1:-1;;;;;16510:34:66;;16546:22;;;16507:62;16504:88;;;16572:18;;:::i;:::-;16608:2;16601:22;16354:275;;-1:-1:-1;16354:275:66:o;16634:186::-;16682:4;-1:-1:-1;;;;;16707:6:66;16704:30;16701:56;;;16737:18;;:::i;:::-;-1:-1:-1;16803:2:66;16782:15;-1:-1:-1;;16778:29:66;16809:4;16774:40;;16634:186::o;16825:1784::-;17017:9;-1:-1:-1;;;;;17047:6:66;17044:30;17041:56;;;17077:18;;:::i;:::-;17123:6;17120:1;17116:14;17150:30;17174:4;17170:2;17166:13;17150:30;:::i;:::-;17214:19;;;17286:14;;;;17258:4;17249:14;;;17323;17312:26;;17309:46;;;17351:1;17348;17341:12;17309:46;17375:5;17389:1187;17405:6;17400:3;17397:15;17389:1187;;;17493:3;17480:17;-1:-1:-1;;;;;17516:11:66;17513:35;17510:55;;;17561:1;17558;17551:12;17510:55;17588:23;;17656:4;17635:14;17631:23;;;17627:34;17624:54;;;17674:1;17671;17664:12;17624:54;17706:22;;:::i;:::-;17757:21;17775:2;17757:21;:::i;:::-;17748:7;17741:38;17819:32;17845:4;17841:2;17837:13;17819:32;:::i;:::-;17812:4;17803:7;17799:18;17792:60;17900:2;17896;17892:11;17879:25;-1:-1:-1;;;;;17923:6:66;17920:30;17917:50;;;17963:1;17960;17953:12;17917:50;17990:15;;;;;18047:14;18040:4;18032:13;;18028:34;18018:62;;18076:1;18073;18066:12;18018:62;18122:2;18109:16;18153:54;18169:37;18197:8;18169:37;:::i;:::-;18153:54;:::i;:::-;18236:8;18227:7;18220:25;18294:14;18287:4;18276:8;18272:2;18268:17;18264:28;18261:48;18258:68;;;18322:1;18319;18312:12;18258:68;18387:8;18380:4;18376:2;18372:13;18365:4;18356:7;18352:18;18339:57;18451:1;18444:4;18433:8;18424:7;18420:22;18416:33;18409:44;18491:7;18486:2;18477:7;18473:16;18466:33;;;18524:7;18519:3;18512:20;;;18561:4;18556:3;18552:14;18545:21;;17431:4;17426:3;17422:14;17415:21;;17389:1187;;;-1:-1:-1;18598:5:66;16825:1784;-1:-1:-1;;;;;16825:1784:66:o;18614:331::-;18719:9;18730;18772:8;18760:10;18757:24;18754:44;;;18794:1;18791;18784:12;18754:44;18823:6;18813:8;18810:20;18807:40;;;18843:1;18840;18833:12;18807:40;-1:-1:-1;;18869:23:66;;;18914:25;;;;;-1:-1:-1;18614:331:66:o;18950:476::-;19141:3;19179:6;19173:13;19195:66;19254:6;19249:3;19242:4;19234:6;19230:17;19195:66;:::i;:::-;19283:16;;19336:6;19328;19283:16;19308:35;19400:1;19362:18;;19389:13;;;-1:-1:-1;19362:18:66;;18950:476;-1:-1:-1;;;18950:476:66:o;19431:266::-;19519:6;19514:3;19507:19;19571:6;19564:5;19557:4;19552:3;19548:14;19535:43;-1:-1:-1;19623:1:66;19598:16;;;19616:4;19594:27;;;19587:38;;;;19679:2;19658:15;;;-1:-1:-1;;19654:29:66;19645:39;;;19641:50;;19431:266::o;19702:244::-;19859:2;19848:9;19841:21;19822:4;19879:61;19936:2;19925:9;19921:18;19913:6;19905;19879:61;:::i;19951:127::-;20012:10;20007:3;20003:20;20000:1;19993:31;20043:4;20040:1;20033:15;20067:4;20064:1;20057:15;20083:331;20182:4;20240:11;20227:25;20334:3;20330:8;20319;20303:14;20299:29;20295:44;20275:18;20271:69;20261:97;;20354:1;20351;20344:12;20261:97;20375:33;;;;;20083:331;-1:-1:-1;;20083:331:66:o;20419:521::-;20496:4;20502:6;20562:11;20549:25;20656:2;20652:7;20641:8;20625:14;20621:29;20617:43;20597:18;20593:68;20583:96;;20675:1;20672;20665:12;20583:96;20702:33;;20754:20;;;-1:-1:-1;;;;;;20786:30:66;;20783:50;;;20829:1;20826;20819:12;20783:50;20862:4;20850:17;;-1:-1:-1;20893:14:66;20889:27;;;20879:38;;20876:58;;;20930:1;20927;20920:12;20945:129;-1:-1:-1;;;;;21023:5:66;21019:30;21012:5;21009:41;20999:69;;21064:1;21061;21054:12;21079:1040;21453:10;21426:25;21444:6;21426:25;:::i;:::-;21422:42;21404:61;;21531:4;21519:17;;;21506:31;21553:20;;;21546:35;21385:4;21630;21618:17;;21605:31;21645:32;21605:31;21645:32;:::i;:::-;-1:-1:-1;;;;;21719:7:66;21715:32;21708:4;21697:9;21693:20;21686:62;;21784:6;21779:2;21768:9;21764:18;21757:34;21828:3;21822;21811:9;21807:19;21800:32;21855:62;21912:3;21901:9;21897:19;21889:6;21881;21855:62;:::i;:::-;-1:-1:-1;;;;;21954:32:66;;21974:3;21933:19;;21926:61;22024:22;;;22018:3;22003:19;;21996:51;22064:49;22028:6;22098;22090;22064:49;:::i;:::-;22056:57;21079:1040;-1:-1:-1;;;;;;;;;;21079:1040:66:o;22124:667::-;22203:6;22256:2;22244:9;22235:7;22231:23;22227:32;22224:52;;;22272:1;22269;22262:12;22224:52;22305:9;22299:16;-1:-1:-1;;;;;22330:6:66;22327:30;22324:50;;;22370:1;22367;22360:12;22324:50;22393:22;;22446:4;22438:13;;22434:27;-1:-1:-1;22424:55:66;;22475:1;22472;22465:12;22424:55;22508:2;22502:9;22533:52;22549:35;22577:6;22549:35;:::i;22533:52::-;22608:6;22601:5;22594:21;22656:7;22651:2;22642:6;22638:2;22634:15;22630:24;22627:37;22624:57;;;22677:1;22674;22667:12;22624:57;22690:71;22754:6;22749:2;22742:5;22738:14;22733:2;22729;22725:11;22690:71;:::i;23246:245::-;23304:6;23357:2;23345:9;23336:7;23332:23;23328:32;23325:52;;;23373:1;23370;23363:12;23325:52;23412:9;23399:23;23431:30;23455:5;23431:30;:::i;23496:479::-;23763:1;23759;23754:3;23750:11;23746:19;23738:6;23734:32;23723:9;23716:51;23803:6;23798:2;23787:9;23783:18;23776:34;23858:6;23850;23846:19;23841:2;23830:9;23826:18;23819:47;23902:3;23897:2;23886:9;23882:18;23875:31;23697:4;23923:46;23964:3;23953:9;23949:19;23941:6;23923:46;:::i;24598:379::-;24791:2;24780:9;24773:21;24754:4;24817:45;24858:2;24847:9;24843:18;24835:6;24817:45;:::i;:::-;24910:9;24902:6;24898:22;24893:2;24882:9;24878:18;24871:50;24938:33;24964:6;24956;24938:33;:::i;24982:245::-;25049:6;25102:2;25090:9;25081:7;25077:23;25073:32;25070:52;;;25118:1;25115;25108:12;25070:52;25150:9;25144:16;25169:28;25191:5;25169:28;:::i;25232:887::-;25451:2;25440:9;25433:21;25509:10;25500:6;25494:13;25490:30;25485:2;25474:9;25470:18;25463:58;25575:4;25567:6;25563:17;25557:24;25552:2;25541:9;25537:18;25530:52;25414:4;25629:2;25621:6;25617:15;25611:22;25670:4;25664:3;25653:9;25649:19;25642:33;25698:52;25745:3;25734:9;25730:19;25716:12;25698:52;:::i;:::-;25684:66;;25799:2;25791:6;25787:15;25781:22;25873:2;25869:7;25857:9;25849:6;25845:22;25841:36;25834:4;25823:9;25819:20;25812:66;25901:41;25935:6;25919:14;25901:41;:::i;:::-;26011:3;25999:16;;;;25993:23;25986:31;25979:39;25973:3;25958:19;;25951:68;-1:-1:-1;;;;;;;;26080:32:66;;;;26073:4;26058:20;;;26051:62;25887:55;25232:887::o;26124:388::-;26194:5;26242:4;26230:9;26225:3;26221:19;26217:30;26214:50;;;26260:1;26257;26250:12;26214:50;26282:22;;:::i;:::-;26349:16;;26374:22;;26462:2;26447:18;;;26441:25;26482:14;;;26475:31;;;;-1:-1:-1;26273:31:66;26124:388;-1:-1:-1;26124:388:66:o;26517:257::-;26615:6;26668:2;26656:9;26647:7;26643:23;26639:32;26636:52;;;26684:1;26681;26674:12;26636:52;26707:61;26760:7;26749:9;26707:61;:::i;26904:517::-;27005:2;27000:3;26997:11;26994:421;;;27041:5;27038:1;27031:16;27085:4;27082:1;27072:18;27155:2;27143:10;27139:19;27136:1;27132:27;27126:4;27122:38;27191:4;27179:10;27176:20;27173:47;;;-1:-1:-1;27214:4:66;27173:47;27269:2;27264:3;27260:12;27257:1;27253:20;27247:4;27243:31;27233:41;;27324:81;27342:2;27335:5;27332:13;27324:81;;;27401:1;27387:16;;27368:1;27357:13;27324:81;;27597:1295;27721:3;27715:10;-1:-1:-1;;;;;27740:6:66;27737:30;27734:56;;;27770:18;;:::i;:::-;27799:96;27888:6;27848:38;27880:4;27874:11;27848:38;:::i;:::-;27842:4;27799:96;:::i;:::-;27944:4;27975:2;27964:14;;27992:1;27987:648;;;;28679:1;28696:6;28693:89;;;-1:-1:-1;28748:19:66;;;28742:26;28693:89;-1:-1:-1;;27554:1:66;27550:11;;;27546:24;27542:29;27532:40;27578:1;27574:11;;;27529:57;28795:81;;27957:929;;27987:648;26851:1;26844:14;;;26888:4;26875:18;;-1:-1:-1;;28023:20:66;;;28140:222;28154:7;28151:1;28148:14;28140:222;;;28236:19;;;28230:26;28215:42;;28343:4;28328:20;;;;28296:1;28284:14;;;;28170:12;28140:222;;;28144:3;28390:6;28381:7;28378:19;28375:201;;;28451:19;;;28445:26;-1:-1:-1;;28534:1:66;28530:14;;;28546:3;28526:24;28522:37;28518:42;28503:58;28488:74;;28375:201;-1:-1:-1;;;;28622:1:66;28606:14;;;28602:22;28589:36;;-1:-1:-1;27597:1295:66:o;28897:1099::-;29113:4;29161:2;29150:9;29146:18;29191:2;29180:9;29173:21;29214:6;29249;29243:13;29280:6;29272;29265:22;29318:2;29307:9;29303:18;29296:25;;29380:2;29370:6;29367:1;29363:14;29352:9;29348:30;29344:39;29330:53;;29418:2;29410:6;29406:15;29439:1;29449:518;29463:6;29460:1;29457:13;29449:518;;;29556:2;29552:7;29540:9;29532:6;29528:22;29524:36;29519:3;29512:49;29590:6;29584:13;29640:10;29635:2;29629:9;29625:26;29617:6;29610:42;29713:6;29707:2;29703;29699:11;29693:18;29689:31;29684:2;29676:6;29672:15;29665:56;29768:2;29764;29760:11;29754:18;29734:38;;29809:4;29804:2;29796:6;29792:15;29785:29;29837:50;29881:4;29873:6;29869:17;29855:12;29837:50;:::i;:::-;29827:60;-1:-1:-1;;29922:2:66;29945:12;;;;29910:15;;;;;29485:1;29478:9;29449:518;;;-1:-1:-1;29984:6:66;;28897:1099;-1:-1:-1;;;;;;28897:1099:66:o;30001:487::-;30088:6;30148:2;30136:9;30127:7;30123:23;30119:32;30163:2;30160:22;;;30178:1;30175;30168:12;30160:22;-1:-1:-1;30220:22:66;;:::i;:::-;30287:23;;30319:22;;30414:2;30399:18;;;30386:32;30434:14;;;30427:31;;;;-1:-1:-1;30326:5:66;30001:487;-1:-1:-1;30001:487:66:o;30832:127::-;30893:10;30888:3;30884:20;30881:1;30874:31;30924:4;30921:1;30914:15;30948:4;30945:1;30938:15;30964:217;31004:1;31030;31020:132;;31074:10;31069:3;31065:20;31062:1;31055:31;31109:4;31106:1;31099:15;31137:4;31134:1;31127:15;31020:132;-1:-1:-1;31166:9:66;;30964:217::o;31186:168::-;31259:9;;;31290;;31307:15;;;31301:22;;31287:37;31277:71;;31328:18;;:::i;31359:255::-;31479:19;;31518:2;31510:11;;31507:101;;;-1:-1:-1;;31579:2:66;31575:12;;;31572:1;31568:20;31564:33;31553:45;31359:255;;;;:::o;31619:362::-;31739:19;;-1:-1:-1;;;;;;31776:37:66;;;31833:1;31825:10;;31822:153;;;-1:-1:-1;;;;;;31894:1:66;31890:11;;;31887:1;31883:19;31879:54;;;31871:63;;31867:98;;-1:-1:-1;31822:153:66;;31619:362;;;;:::o;31986:568::-;-1:-1:-1;;;;;32251:3:66;32247:28;32238:6;32233:3;32229:16;32225:51;32220:3;32213:64;32337:10;32332:3;32328:20;32319:6;32314:3;32310:16;32306:43;32302:1;32297:3;32293:11;32286:64;32380:6;32375:2;32370:3;32366:12;32359:28;32195:3;32416:6;32410:13;32432:75;32500:6;32495:2;32490:3;32486:12;32479:4;32471:6;32467:17;32432:75;:::i;:::-;32527:16;;;;32545:2;32523:25;;31986:568;-1:-1:-1;;;;;31986:568:66:o;32559:125::-;32624:9;;;32645:10;;;32642:36;;;32658:18;;:::i;32984:532::-;33225:6;33220:3;33213:19;-1:-1:-1;;;;;33288:3:66;33284:28;33275:6;33270:3;33266:16;33262:51;33257:2;33252:3;33248:12;33241:73;33344:6;33339:2;33334:3;33330:12;33323:28;33195:3;33380:6;33374:13;33396:73;33462:6;33457:2;33452:3;33448:12;33443:2;33435:6;33431:15;33396:73;:::i;:::-;33489:16;;;;33507:2;33485:25;;32984:532;-1:-1:-1;;;;;32984:532:66:o;33521:560::-;33623:6;33683:3;33671:9;33662:7;33658:23;33654:33;33699:2;33696:22;;;33714:1;33711;33704:12;33696:22;-1:-1:-1;33756:22:66;;:::i;:::-;33807:9;33801:16;33794:5;33787:31;33863:2;33852:9;33848:18;33842:25;33876:32;33900:7;33876:32;:::i;:::-;33935:2;33924:14;;33917:31;33980:70;34042:7;34037:2;34022:18;;33980:70;:::i;:::-;33975:2;33964:14;;33957:94;33968:5;33521:560;-1:-1:-1;;;33521:560:66:o"},"gasEstimates":{"creation":{"codeDepositCost":"2517400","executionCost":"infinite","totalCost":"infinite"},"external":{"SEND()":"338","SEND_AND_CALL()":"250","allowInitializePath((uint32,bytes32,uint64))":"infinite","allowance(address,address)":"infinite","approvalRequired()":"287","approve(address,uint256)":"24779","balanceOf(address)":"2686","combineOptions(uint32,uint16,bytes)":"infinite","decimalConversionRate()":"infinite","decimals()":"258","endpoint()":"infinite","enforcedOptions(uint32,uint16)":"infinite","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"844","isPeer(uint32,bytes32)":"2641","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"infinite","lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":"infinite","lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"infinite","mint(address,uint256)":"infinite","msgInspector()":"2450","name()":"infinite","nextNonce(uint32,bytes32)":"458","oApp()":"257","oAppVersion()":"285","oftVersion()":"269","owner()":"2465","peers(uint32)":"2552","preCrime()":"2470","quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":"infinite","quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":"infinite","renounceOwnership()":"infinite","send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":"infinite","setDelegate(address)":"infinite","setEnforcedOptions((uint32,uint16,bytes)[])":"infinite","setMsgInspector(address)":"27916","setPeer(uint32,bytes32)":"26127","setPreCrime(address)":"27860","sharedDecimals()":"313","symbol()":"infinite","token()":"344","totalSupply()":"2393","transfer(address,uint256)":"51318","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"infinite"}},"methodIdentifiers":{"SEND()":"1f5e1334","SEND_AND_CALL()":"134d4f25","allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","allowance(address,address)":"dd62ed3e","approvalRequired()":"9f68b964","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","combineOptions(uint32,uint16,bytes)":"bc70b354","decimalConversionRate()":"963efcaa","decimals()":"313ce567","endpoint()":"5e280f11","enforcedOptions(uint32,uint16)":"5535d461","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","isPeer(uint32,bytes32)":"5a0dfe4d","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":"bd815db0","lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"d045a0dc","mint(address,uint256)":"40c10f19","msgInspector()":"111ecdad","name()":"06fdde03","nextNonce(uint32,bytes32)":"7d25a05e","oApp()":"52ae2879","oAppVersion()":"17442b70","oftVersion()":"156a0d0f","owner()":"8da5cb5b","peers(uint32)":"bb0b6a53","preCrime()":"b731ea0a","quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":"0d35b415","quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":"3b6f743b","renounceOwnership()":"715018a6","send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":"c7c7f5b3","setDelegate(address)":"ca5eb5e1","setEnforcedOptions((uint32,uint16,bytes)[])":"b98bd070","setMsgInspector(address)":"6fc1b31e","setPeer(uint32,bytes32)":"3400288b","setPreCrime(address)":"d4243885","sharedDecimals()":"857749b0","symbol()":"95d89b41","token()":"fc0c546a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_lzEndpoint\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inspector\",\"type\":\"address\"}],\"name\":\"MsgInspectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTSent\",\"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\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SEND\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEND_AND_CALL\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimalConversionRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"enforcedOption\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"isPeer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct InboundPacket[]\",\"name\":\"_packets\",\"type\":\"tuple[]\"}],\"name\":\"lzReceiveAndRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceiveSimulate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"msgInspector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"oftLimit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct OFTFeeDetail[]\",\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"msgFee\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"_fee\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"msgReceipt\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_msgInspector\",\"type\":\"address\"}],\"name\":\"setMsgInspector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approvalRequired()\":{\"details\":\"In the case of OFT where the contract IS the token, approval is NOT required.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"combineOptions(uint32,uint16,bytes)\":{\"details\":\"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OAPP message type.\"},\"returns\":{\"_0\":\"options The combination of caller specified options AND enforced options.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"isPeer(uint32,bytes32)\":{\"details\":\"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\",\"params\":{\"_eid\":\"The endpoint ID to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"mint(address,uint256)\":{\"details\":\"Mints new tokens to the specified address\",\"params\":{\"_amount\":\"The amount of tokens to mint\",\"_to\":\"The address to mint tokens to\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"oftFeeDetails\":\"The details of OFT fees.\",\"oftLimit\":\"The OFT limit information.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"msgFee\":\"The calculated LayerZero messaging fee from the send() operation.\"}},\"renounceOwnership()\":{\"details\":\"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.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"Executes the send operation.MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The calculated fee for the send() operation.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"msgReceipt\":\"The receipt for the send operation.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\",\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}},\"setMsgInspector(address)\":{\"details\":\"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.\",\"params\":{\"_msgInspector\":\"The address of the message inspector.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"sharedDecimals()\":{\"details\":\"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\",\"returns\":{\"_0\":\"The shared decimals of the OFT.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"token()\":{\"details\":\"Retrieves the address of the underlying ERC20 implementation.In the case of OFT, address(this) and erc20 are the same contract.\",\"returns\":{\"_0\":\"The address of the OFT token.\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SS.sol\":\"SS\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nimport { Packet } from \\\"../../interfaces/ISendLib.sol\\\";\\nimport { AddressCast } from \\\"../../libs/AddressCast.sol\\\";\\n\\nlibrary PacketV1Codec {\\n    using AddressCast for address;\\n    using AddressCast for bytes32;\\n\\n    uint8 internal constant PACKET_VERSION = 1;\\n\\n    // header (version + nonce + path)\\n    // version\\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\\n    //    nonce\\n    uint256 private constant NONCE_OFFSET = 1;\\n    //    path\\n    uint256 private constant SRC_EID_OFFSET = 9;\\n    uint256 private constant SENDER_OFFSET = 13;\\n    uint256 private constant DST_EID_OFFSET = 45;\\n    uint256 private constant RECEIVER_OFFSET = 49;\\n    // payload (guid + message)\\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\\n    uint256 private constant MESSAGE_OFFSET = 113;\\n\\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\\n        encodedPacket = abi.encodePacked(\\n            PACKET_VERSION,\\n            _packet.nonce,\\n            _packet.srcEid,\\n            _packet.sender.toBytes32(),\\n            _packet.dstEid,\\n            _packet.receiver,\\n            _packet.guid,\\n            _packet.message\\n        );\\n    }\\n\\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                PACKET_VERSION,\\n                _packet.nonce,\\n                _packet.srcEid,\\n                _packet.sender.toBytes32(),\\n                _packet.dstEid,\\n                _packet.receiver\\n            );\\n    }\\n\\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\\n        return abi.encodePacked(_packet.guid, _packet.message);\\n    }\\n\\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return _packet[0:GUID_OFFSET];\\n    }\\n\\n    function version(bytes calldata _packet) internal pure returns (uint8) {\\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\\n    }\\n\\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\\n    }\\n\\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\\n    }\\n\\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\\n        return sender(_packet).toAddress();\\n    }\\n\\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\\n    }\\n\\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\\n    }\\n\\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\\n        return receiver(_packet).toAddress();\\n    }\\n\\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\\n    }\\n\\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[MESSAGE_OFFSET:]);\\n    }\\n\\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[GUID_OFFSET:]);\\n    }\\n\\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\\n        return keccak256(payload(_packet));\\n    }\\n}\\n\",\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the 'MessagingFee' and 'MessagingReceipt' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppSender, MessagingFee, MessagingReceipt } from \\\"./OAppSender.sol\\\";\\n// @dev Import the 'Origin' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppReceiver, Origin } from \\\"./OAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OApp\\n * @dev Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.\\n */\\nabstract contract OApp is OAppSender, OAppReceiver {\\n    /**\\n     * @dev Constructor to initialize the OApp with the provided endpoint and owner.\\n     * @param _endpoint The address of the LOCAL LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(address _endpoint, address _delegate) OAppCore(_endpoint, _delegate) {}\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol implementation.\\n     * @return receiverVersion The version of the OAppReceiver.sol implementation.\\n     */\\n    function oAppVersion()\\n        public\\n        pure\\n        virtual\\n        override(OAppSender, OAppReceiver)\\n        returns (uint64 senderVersion, uint64 receiverVersion)\\n    {\\n        return (SENDER_VERSION, RECEIVER_VERSION);\\n    }\\n}\\n\",\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IOAppReceiver, Origin } from \\\"./interfaces/IOAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppReceiver\\n * @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\\n */\\nabstract contract OAppReceiver is IOAppReceiver, OAppCore {\\n    // Custom error message for when the caller is not the registered endpoint/\\n    error OnlyEndpoint(address addr);\\n\\n    // @dev The version of the OAppReceiver implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant RECEIVER_VERSION = 2;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.\\n     * ie. this is a RECEIVE only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (0, RECEIVER_VERSION);\\n    }\\n\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @dev _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @dev _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata /*_origin*/,\\n        bytes calldata /*_message*/,\\n        address _sender\\n    ) public view virtual returns (bool) {\\n        return _sender == address(this);\\n    }\\n\\n    /**\\n     * @notice Checks if the path initialization is allowed based on the provided origin.\\n     * @param origin The origin information containing the source endpoint and sender address.\\n     * @return Whether the path has been initialized.\\n     *\\n     * @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.\\n     * @dev This defaults to assuming if a peer has been set, its initialized.\\n     * Can be overridden by the OApp if there is other logic to determine this.\\n     */\\n    function allowInitializePath(Origin calldata origin) public view virtual returns (bool) {\\n        return peers[origin.srcEid] == origin.sender;\\n    }\\n\\n    /**\\n     * @notice Retrieves the next nonce for a given source endpoint and sender address.\\n     * @dev _srcEid The source endpoint ID.\\n     * @dev _sender The sender address.\\n     * @return nonce The next nonce.\\n     *\\n     * @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.\\n     * @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.\\n     * @dev This is also enforced by the OApp.\\n     * @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\\n     */\\n    function nextNonce(uint32 /*_srcEid*/, bytes32 /*_sender*/) public view virtual returns (uint64 nonce) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Entry point for receiving messages or packets from the endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The payload of the received message.\\n     * @param _executor The address of the executor for the received message.\\n     * @param _extraData Additional arbitrary data provided by the corresponding executor.\\n     *\\n     * @dev Entry point for receiving msg/packet from the LayerZero endpoint.\\n     */\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) public payable virtual {\\n        // Ensures that only the endpoint can attempt to lzReceive() messages to this OApp.\\n        if (address(endpoint) != msg.sender) revert OnlyEndpoint(msg.sender);\\n\\n        // Ensure that the sender matches the expected peer for the source endpoint.\\n        if (_getPeerOrRevert(_origin.srcEid) != _origin.sender) revert OnlyPeer(_origin.srcEid, _origin.sender);\\n\\n        // Call the internal OApp implementation of lzReceive.\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n}\\n\",\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { SafeERC20, IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport { MessagingParams, MessagingFee, MessagingReceipt } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppSender\\n * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\\n */\\nabstract contract OAppSender is OAppCore {\\n    using SafeERC20 for IERC20;\\n\\n    // Custom error messages\\n    error NotEnoughNative(uint256 msgValue);\\n    error LzTokenUnavailable();\\n\\n    // @dev The version of the OAppSender implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant SENDER_VERSION = 1;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\\n     * ie. this is a SEND only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (SENDER_VERSION, 0);\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\\n     * @return fee The calculated MessagingFee for the message.\\n     *      - nativeFee: The native fee for the message.\\n     *      - lzTokenFee: The LZ token fee for the message.\\n     */\\n    function _quote(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        bool _payInLzToken\\n    ) internal view virtual returns (MessagingFee memory fee) {\\n        return\\n            endpoint.quote(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),\\n                address(this)\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _fee The calculated LayerZero fee for the message.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess fee values sent to the endpoint.\\n     * @return receipt The receipt for the sent message.\\n     *      - guid: The unique identifier for the sent message.\\n     *      - nonce: The nonce of the sent message.\\n     *      - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _lzSend(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        MessagingFee memory _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory receipt) {\\n        // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.\\n        uint256 messageValue = _payNative(_fee.nativeFee);\\n        if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);\\n\\n        return\\n            // solhint-disable-next-line check-send-result\\n            endpoint.send{ value: messageValue }(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),\\n                _refundAddress\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the native fee associated with the message.\\n     * @param _nativeFee The native fee to be paid.\\n     * @return nativeFee The amount of native currency paid.\\n     *\\n     * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\\n     * this will need to be overridden because msg.value would contain multiple lzFees.\\n     * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\\n     * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\\n     * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.\\n     */\\n    function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {\\n        if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);\\n        return _nativeFee;\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the LZ token fee associated with the message.\\n     * @param _lzTokenFee The LZ token fee to be paid.\\n     *\\n     * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\\n     * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().\\n     */\\n    function _payLzToken(uint256 _lzTokenFee) internal virtual {\\n        // @dev Cannot cache the token because it is not immutable in the endpoint.\\n        address lzToken = endpoint.lzToken();\\n        if (lzToken == address(0)) revert LzTokenUnavailable();\\n\\n        // Pay LZ token fee by sending tokens to the endpoint.\\n        IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);\\n    }\\n}\\n\",\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title IOAppMsgInspector\\n * @dev Interface for the OApp Message Inspector, allowing examination of message and options contents.\\n */\\ninterface IOAppMsgInspector {\\n    // Custom error message for inspection failure\\n    error InspectionFailed(bytes message, bytes options);\\n\\n    /**\\n     * @notice Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid.\\n     * @param _message The message payload to be inspected.\\n     * @param _options Additional options or parameters for inspection.\\n     * @return valid A boolean indicating whether the inspection passed (true) or failed (false).\\n     *\\n     * @dev Optionally done as a revert, OR use the boolean provided to handle the failure.\\n     */\\n    function inspect(bytes calldata _message, bytes calldata _options) external view returns (bool valid);\\n}\\n\",\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Struct representing enforced option parameters.\\n */\\nstruct EnforcedOptionParam {\\n    uint32 eid; // Endpoint ID\\n    uint16 msgType; // Message Type\\n    bytes options; // Additional options\\n}\\n\\n/**\\n * @title IOAppOptionsType3\\n * @dev Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\\n */\\ninterface IOAppOptionsType3 {\\n    // Custom error message for invalid options\\n    error InvalidOptions(bytes options);\\n\\n    // Event emitted when enforced options are set\\n    event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\\n\\n    /**\\n     * @notice Sets enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OApp message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) external view returns (bytes memory options);\\n}\\n\",\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroReceiver, Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata _origin,\\n        bytes calldata _message,\\n        address _sender\\n    ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppOptionsType3, EnforcedOptionParam } from \\\"../interfaces/IOAppOptionsType3.sol\\\";\\n\\n/**\\n * @title OAppOptionsType3\\n * @dev Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.\\n */\\nabstract contract OAppOptionsType3 is IOAppOptionsType3, Ownable {\\n    uint16 internal constant OPTION_TYPE_3 = 3;\\n\\n    // @dev The \\\"msgType\\\" should be defined in the child contract.\\n    mapping(uint32 eid => mapping(uint16 msgType => bytes enforcedOption)) public enforcedOptions;\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) public virtual onlyOwner {\\n        _setEnforcedOptions(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function _setEnforcedOptions(EnforcedOptionParam[] memory _enforcedOptions) internal virtual {\\n        for (uint256 i = 0; i < _enforcedOptions.length; i++) {\\n            // @dev Enforced options are only available for optionType 3, as type 1 and 2 dont support combining.\\n            _assertOptionsType3(_enforcedOptions[i].options);\\n            enforcedOptions[_enforcedOptions[i].eid][_enforcedOptions[i].msgType] = _enforcedOptions[i].options;\\n        }\\n\\n        emit EnforcedOptionSet(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OAPP message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     *\\n     * @dev If there is an enforced lzReceive option:\\n     * - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether}\\n     * - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.\\n     * @dev This presence of duplicated options is handled off-chain in the verifier/executor.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) public view virtual returns (bytes memory) {\\n        bytes memory enforced = enforcedOptions[_eid][_msgType];\\n\\n        // No enforced options, pass whatever the caller supplied, even if it's empty or legacy type 1/2 options.\\n        if (enforced.length == 0) return _extraOptions;\\n\\n        // No caller options, return enforced\\n        if (_extraOptions.length == 0) return enforced;\\n\\n        // @dev If caller provided _extraOptions, must be type 3 as its the ONLY type that can be combined.\\n        if (_extraOptions.length >= 2) {\\n            _assertOptionsType3(_extraOptions);\\n            // @dev Remove the first 2 bytes containing the type from the _extraOptions and combine with enforced.\\n            return bytes.concat(enforced, _extraOptions[2:]);\\n        }\\n\\n        // No valid set of options was found.\\n        revert InvalidOptions(_extraOptions);\\n    }\\n\\n    /**\\n     * @dev Internal function to assert that options are of type 3.\\n     * @param _options The options to be checked.\\n     */\\n    function _assertOptionsType3(bytes memory _options) internal pure virtual {\\n        uint16 optionsType;\\n        assembly {\\n            optionsType := mload(add(_options, 2))\\n        }\\n        if (optionsType != OPTION_TYPE_3) revert InvalidOptions(_options);\\n    }\\n}\\n\",\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IPreCrime } from \\\"./interfaces/IPreCrime.sol\\\";\\nimport { IOAppPreCrimeSimulator, InboundPacket, Origin } from \\\"./interfaces/IOAppPreCrimeSimulator.sol\\\";\\n\\n/**\\n * @title OAppPreCrimeSimulator\\n * @dev Abstract contract serving as the base for preCrime simulation functionality in an OApp.\\n */\\nabstract contract OAppPreCrimeSimulator is IOAppPreCrimeSimulator, Ownable {\\n    // The address of the preCrime implementation.\\n    address public preCrime;\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     *\\n     * @dev The simulator contract is the base contract for the OApp by default.\\n     * @dev If the simulator is a separate contract, override this function.\\n     */\\n    function oApp() external view virtual returns (address) {\\n        return address(this);\\n    }\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) public virtual onlyOwner {\\n        preCrime = _preCrime;\\n        emit PreCrimeSet(_preCrime);\\n    }\\n\\n    /**\\n     * @dev Interface for pre-crime simulations. Always reverts at the end with the simulation results.\\n     * @param _packets An array of InboundPacket objects representing received packets to be delivered.\\n     *\\n     * @dev WARNING: MUST revert at the end with the simulation results.\\n     * @dev Gives the preCrime implementation the ability to mock sending packets to the lzReceive function,\\n     * WITHOUT actually executing them.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) public payable virtual {\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            InboundPacket calldata packet = _packets[i];\\n\\n            // Ignore packets that are not from trusted peers.\\n            if (!isPeer(packet.origin.srcEid, packet.origin.sender)) continue;\\n\\n            // @dev Because a verifier is calling this function, it doesnt have access to executor params:\\n            //  - address _executor\\n            //  - bytes calldata _extraData\\n            // preCrime will NOT work for OApps that rely on these two parameters inside of their _lzReceive().\\n            // They are instead stubbed to default values, address(0) and bytes(\\\"\\\")\\n            // @dev Calling this.lzReceiveSimulate removes ability for assembly return 0 callstack exit,\\n            // which would cause the revert to be ignored.\\n            this.lzReceiveSimulate{ value: packet.value }(\\n                packet.origin,\\n                packet.guid,\\n                packet.message,\\n                packet.executor,\\n                packet.extraData\\n            );\\n        }\\n\\n        // @dev Revert with the simulation results. msg.sender must implement IPreCrime.buildSimulationResult().\\n        revert SimulationResult(IPreCrime(msg.sender).buildSimulationResult());\\n    }\\n\\n    /**\\n     * @dev Is effectively an internal function because msg.sender must be address(this).\\n     * Allows resetting the call stack for 'internal' calls.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier of the packet.\\n     * @param _message The message payload of the packet.\\n     * @param _executor The executor address for the packet.\\n     * @param _extraData Additional data for the packet.\\n     */\\n    function lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable virtual {\\n        // @dev Ensure ONLY can be called 'internally'.\\n        if (msg.sender != address(this)) revert OnlySelf();\\n        _lzReceiveSimulate(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The GUID of the LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual returns (bool);\\n}\\n\",\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the Origin so it's exposed to OAppPreCrimeSimulator implementers.\\n// solhint-disable-next-line no-unused-import\\nimport { InboundPacket, Origin } from \\\"../libs/Packet.sol\\\";\\n\\n/**\\n * @title IOAppPreCrimeSimulator Interface\\n * @dev Interface for the preCrime simulation functionality in an OApp.\\n */\\ninterface IOAppPreCrimeSimulator {\\n    // @dev simulation result used in PreCrime implementation\\n    error SimulationResult(bytes result);\\n    error OnlySelf();\\n\\n    /**\\n     * @dev Emitted when the preCrime contract address is set.\\n     * @param preCrimeAddress The address of the preCrime contract.\\n     */\\n    event PreCrimeSet(address preCrimeAddress);\\n\\n    /**\\n     * @dev Retrieves the address of the preCrime contract implementation.\\n     * @return The address of the preCrime contract.\\n     */\\n    function preCrime() external view returns (address);\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     */\\n    function oApp() external view returns (address);\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) external;\\n\\n    /**\\n     * @dev Mocks receiving a packet, then reverts with a series of data to infer the state/result.\\n     * @param _packets An array of LayerZero InboundPacket objects representing received packets.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) external payable;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\nstruct PreCrimePeer {\\n    uint32 eid;\\n    bytes32 preCrime;\\n    bytes32 oApp;\\n}\\n\\n// TODO not done yet\\ninterface IPreCrime {\\n    error OnlyOffChain();\\n\\n    // for simulate()\\n    error PacketOversize(uint256 max, uint256 actual);\\n    error PacketUnsorted();\\n    error SimulationFailed(bytes reason);\\n\\n    // for preCrime()\\n    error SimulationResultNotFound(uint32 eid);\\n    error InvalidSimulationResult(uint32 eid, bytes reason);\\n    error CrimeFound(bytes crime);\\n\\n    function getConfig(bytes[] calldata _packets, uint256[] calldata _packetMsgValues) external returns (bytes memory);\\n\\n    function simulate(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues\\n    ) external payable returns (bytes memory);\\n\\n    function buildSimulationResult() external view returns (bytes memory);\\n\\n    function preCrime(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues,\\n        bytes[] calldata _simulations\\n    ) external;\\n\\n    function version() external view returns (uint64 major, uint8 minor);\\n}\\n\",\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { PacketV1Codec } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\\\";\\n\\n/**\\n * @title InboundPacket\\n * @dev Structure representing an inbound packet received by the contract.\\n */\\nstruct InboundPacket {\\n    Origin origin; // Origin information of the packet.\\n    uint32 dstEid; // Destination endpointId of the packet.\\n    address receiver; // Receiver address for the packet.\\n    bytes32 guid; // Unique identifier of the packet.\\n    uint256 value; // msg.value of the packet.\\n    address executor; // Executor address for the packet.\\n    bytes message; // Message payload of the packet.\\n    bytes extraData; // Additional arbitrary data for the packet.\\n}\\n\\n/**\\n * @title PacketDecoder\\n * @dev Library for decoding LayerZero packets.\\n */\\nlibrary PacketDecoder {\\n    using PacketV1Codec for bytes;\\n\\n    /**\\n     * @dev Decode an inbound packet from the given packet data.\\n     * @param _packet The packet data to decode.\\n     * @return packet An InboundPacket struct representing the decoded packet.\\n     */\\n    function decode(bytes calldata _packet) internal pure returns (InboundPacket memory packet) {\\n        packet.origin = Origin(_packet.srcEid(), _packet.sender(), _packet.nonce());\\n        packet.dstEid = _packet.dstEid();\\n        packet.receiver = _packet.receiverB20();\\n        packet.guid = _packet.guid();\\n        packet.message = _packet.message();\\n    }\\n\\n    /**\\n     * @dev Decode multiple inbound packets from the given packet data and associated message values.\\n     * @param _packets An array of packet data to decode.\\n     * @param _packetMsgValues An array of associated message values for each packet.\\n     * @return packets An array of InboundPacket structs representing the decoded packets.\\n     */\\n    function decode(\\n        bytes[] calldata _packets,\\n        uint256[] memory _packetMsgValues\\n    ) internal pure returns (InboundPacket[] memory packets) {\\n        packets = new InboundPacket[](_packets.length);\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            bytes calldata packet = _packets[i];\\n            packets[i] = PacketDecoder.decode(packet);\\n            // @dev Allows the verifier to specify the msg.value that gets passed in lzReceive.\\n            packets[i].value = _packetMsgValues[i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/OFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ERC20 } from \\\"@openzeppelin/contracts/token/ERC20/ERC20.sol\\\";\\nimport { IOFT, OFTCore } from \\\"./OFTCore.sol\\\";\\n\\n/**\\n * @title OFT Contract\\n * @dev OFT is an ERC-20 token that extends the functionality of the OFTCore contract.\\n */\\nabstract contract OFT is OFTCore, ERC20 {\\n    /**\\n     * @dev Constructor for the OFT contract.\\n     * @param _name The name of the OFT.\\n     * @param _symbol The symbol of the OFT.\\n     * @param _lzEndpoint The LayerZero endpoint address.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(\\n        string memory _name,\\n        string memory _symbol,\\n        address _lzEndpoint,\\n        address _delegate\\n    ) ERC20(_name, _symbol) OFTCore(decimals(), _lzEndpoint, _delegate) {}\\n\\n    /**\\n     * @dev Retrieves the address of the underlying ERC20 implementation.\\n     * @return The address of the OFT token.\\n     *\\n     * @dev In the case of OFT, address(this) and erc20 are the same contract.\\n     */\\n    function token() public view returns (address) {\\n        return address(this);\\n    }\\n\\n    /**\\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n     * @return requiresApproval Needs approval of the underlying token implementation.\\n     *\\n     * @dev In the case of OFT where the contract IS the token, approval is NOT required.\\n     */\\n    function approvalRequired() external pure virtual returns (bool) {\\n        return false;\\n    }\\n\\n    /**\\n     * @dev Burns tokens from the sender's specified balance.\\n     * @param _from The address to debit the tokens from.\\n     * @param _amountLD The amount of tokens to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @param _dstEid The destination chain ID.\\n     * @return amountSentLD The amount sent in local decimals.\\n     * @return amountReceivedLD The amount received in local decimals on the remote.\\n     */\\n    function _debit(\\n        address _from,\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 _dstEid\\n    ) internal virtual override returns (uint256 amountSentLD, uint256 amountReceivedLD) {\\n        (amountSentLD, amountReceivedLD) = _debitView(_amountLD, _minAmountLD, _dstEid);\\n\\n        // @dev In NON-default OFT, amountSentLD could be 100, with a 10% fee, the amountReceivedLD amount is 90,\\n        // therefore amountSentLD CAN differ from amountReceivedLD.\\n\\n        // @dev Default OFT burns on src.\\n        _burn(_from, amountSentLD);\\n    }\\n\\n    /**\\n     * @dev Credits tokens to the specified address.\\n     * @param _to The address to credit the tokens to.\\n     * @param _amountLD The amount of tokens to credit in local decimals.\\n     * @dev _srcEid The source chain ID.\\n     * @return amountReceivedLD The amount of tokens ACTUALLY received in local decimals.\\n     */\\n    function _credit(\\n        address _to,\\n        uint256 _amountLD,\\n        uint32 /*_srcEid*/\\n    ) internal virtual override returns (uint256 amountReceivedLD) {\\n        if (_to == address(0x0)) _to = address(0xdead); // _mint(...) does not support address(0x0)\\n        // @dev Default OFT mints on dst.\\n        _mint(_to, _amountLD);\\n        // @dev In the case of NON-default OFT, the _amountLD MIGHT not be == amountReceivedLD.\\n        return _amountLD;\\n    }\\n}\\n\",\"keccak256\":\"0xdc3582e4a20e02a79050c17058a1f1f42a4335d1a70be06c0a52a3fb05d4c89a\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/OFTCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport { OApp, Origin } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\\\";\\nimport { OAppOptionsType3 } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\\\";\\nimport { IOAppMsgInspector } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\\\";\\n\\nimport { OAppPreCrimeSimulator } from \\\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\\\";\\n\\nimport { IOFT, SendParam, OFTLimit, OFTReceipt, OFTFeeDetail, MessagingReceipt, MessagingFee } from \\\"./interfaces/IOFT.sol\\\";\\nimport { OFTMsgCodec } from \\\"./libs/OFTMsgCodec.sol\\\";\\nimport { OFTComposeMsgCodec } from \\\"./libs/OFTComposeMsgCodec.sol\\\";\\n\\n/**\\n * @title OFTCore\\n * @dev Abstract contract for the OftChain (OFT) token.\\n */\\nabstract contract OFTCore is IOFT, OApp, OAppPreCrimeSimulator, OAppOptionsType3 {\\n    using OFTMsgCodec for bytes;\\n    using OFTMsgCodec for bytes32;\\n\\n    // @notice Provides a conversion rate when swapping between denominations of SD and LD\\n    //      - shareDecimals == SD == shared Decimals\\n    //      - localDecimals == LD == local decimals\\n    // @dev Considers that tokens have different decimal amounts on various chains.\\n    // @dev eg.\\n    //  For a token\\n    //      - locally with 4 decimals --> 1.2345 => uint(12345)\\n    //      - remotely with 2 decimals --> 1.23 => uint(123)\\n    //      - The conversion rate would be 10 ** (4 - 2) = 100\\n    //  @dev If you want to send 1.2345 -> (uint 12345), you CANNOT represent that value on the remote,\\n    //  you can only display 1.23 -> uint(123).\\n    //  @dev To preserve the dust that would otherwise be lost on that conversion,\\n    //  we need to unify a denomination that can be represented on ALL chains inside of the OFT mesh\\n    uint256 public immutable decimalConversionRate;\\n\\n    // @notice Msg types that are used to identify the various OFT operations.\\n    // @dev This can be extended in child contracts for non-default oft operations\\n    // @dev These values are used in things like combineOptions() in OAppOptionsType3.sol.\\n    uint16 public constant SEND = 1;\\n    uint16 public constant SEND_AND_CALL = 2;\\n\\n    // Address of an optional contract to inspect both 'message' and 'options'\\n    address public msgInspector;\\n    event MsgInspectorSet(address inspector);\\n\\n    /**\\n     * @dev Constructor.\\n     * @param _localDecimals The decimals of the token on the local chain (this chain).\\n     * @param _endpoint The address of the LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(uint8 _localDecimals, address _endpoint, address _delegate) OApp(_endpoint, _delegate) {\\n        if (_localDecimals < sharedDecimals()) revert InvalidLocalDecimals();\\n        decimalConversionRate = 10 ** (_localDecimals - sharedDecimals());\\n    }\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external pure virtual returns (bytes4 interfaceId, uint64 version) {\\n        return (type(IOFT).interfaceId, 1);\\n    }\\n\\n    /**\\n     * @dev Retrieves the shared decimals of the OFT.\\n     * @return The shared decimals of the OFT.\\n     *\\n     * @dev Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap\\n     * Lowest common decimal denominator between chains.\\n     * Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64).\\n     * For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller.\\n     * ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\\n     */\\n    function sharedDecimals() public view virtual returns (uint8) {\\n        return 6;\\n    }\\n\\n    /**\\n     * @dev Sets the message inspector address for the OFT.\\n     * @param _msgInspector The address of the message inspector.\\n     *\\n     * @dev This is an optional contract that can be used to inspect both 'message' and 'options'.\\n     * @dev Set it to address(0) to disable it, or set it to a contract address to enable it.\\n     */\\n    function setMsgInspector(address _msgInspector) public virtual onlyOwner {\\n        msgInspector = _msgInspector;\\n        emit MsgInspectorSet(_msgInspector);\\n    }\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return oftLimit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return oftReceipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    )\\n        external\\n        view\\n        virtual\\n        returns (OFTLimit memory oftLimit, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory oftReceipt)\\n    {\\n        uint256 minAmountLD = 0; // Unused in the default implementation.\\n        uint256 maxAmountLD = IERC20(this.token()).totalSupply(); // Unused in the default implementation.\\n        oftLimit = OFTLimit(minAmountLD, maxAmountLD);\\n\\n        // Unused in the default implementation; reserved for future complex fee details.\\n        oftFeeDetails = new OFTFeeDetail[](0);\\n\\n        // @dev This is the same as the send() operation, but without the actual send.\\n        // - amountSentLD is the amount in local decimals that would be sent from the sender.\\n        // - amountReceivedLD is the amount in local decimals that will be credited to the recipient on the remote OFT instance.\\n        // @dev The amountSentLD MIGHT not equal the amount the user actually receives. HOWEVER, the default does.\\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debitView(\\n            _sendParam.amountLD,\\n            _sendParam.minAmountLD,\\n            _sendParam.dstEid\\n        );\\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return msgFee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(\\n        SendParam calldata _sendParam,\\n        bool _payInLzToken\\n    ) external view virtual returns (MessagingFee memory msgFee) {\\n        // @dev mock the amount to receive, this is the same operation used in the send().\\n        // The quote is as similar as possible to the actual send() operation.\\n        (, uint256 amountReceivedLD) = _debitView(_sendParam.amountLD, _sendParam.minAmountLD, _sendParam.dstEid);\\n\\n        // @dev Builds the options and OFT message to quote in the endpoint.\\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\\n\\n        // @dev Calculates the LayerZero fee for the send() operation.\\n        return _quote(_sendParam.dstEid, message, options, _payInLzToken);\\n    }\\n\\n    /**\\n     * @dev Executes the send operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The calculated fee for the send() operation.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds.\\n     * @return msgReceipt The receipt for the send operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\\n        return _send(_sendParam, _fee, _refundAddress);\\n    }\\n\\n    /**\\n     * @dev Internal function to execute the send operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The calculated fee for the send() operation.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds.\\n     * @return msgReceipt The receipt for the send operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\\n        // @dev Applies the token transfers regarding this send() operation.\\n        // - amountSentLD is the amount in local decimals that was ACTUALLY sent/debited from the sender.\\n        // - amountReceivedLD is the amount in local decimals that will be received/credited to the recipient on the remote OFT instance.\\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debit(\\n            msg.sender,\\n            _sendParam.amountLD,\\n            _sendParam.minAmountLD,\\n            _sendParam.dstEid\\n        );\\n\\n        // @dev Builds the options and OFT message to quote in the endpoint.\\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\\n\\n        // @dev Sends the message to the LayerZero endpoint and returns the LayerZero msg receipt.\\n        msgReceipt = _lzSend(_sendParam.dstEid, message, options, _fee, _refundAddress);\\n        // @dev Formulate the OFT receipt.\\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\\n\\n        emit OFTSent(msgReceipt.guid, _sendParam.dstEid, msg.sender, amountSentLD, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @dev Internal function to build the message and options.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _amountLD The amount in local decimals.\\n     * @return message The encoded message.\\n     * @return options The encoded options.\\n     */\\n    function _buildMsgAndOptions(\\n        SendParam calldata _sendParam,\\n        uint256 _amountLD\\n    ) internal view virtual returns (bytes memory message, bytes memory options) {\\n        bool hasCompose;\\n        // @dev This generated message has the msg.sender encoded into the payload so the remote knows who the caller is.\\n        (message, hasCompose) = OFTMsgCodec.encode(\\n            _sendParam.to,\\n            _toSD(_amountLD),\\n            // @dev Must be include a non empty bytes if you want to compose, EVEN if you dont need it on the remote.\\n            // EVEN if you dont require an arbitrary payload to be sent... eg. '0x01'\\n            _sendParam.composeMsg\\n        );\\n        // @dev Change the msg type depending if its composed or not.\\n        uint16 msgType = hasCompose ? SEND_AND_CALL : SEND;\\n        // @dev Combine the callers _extraOptions with the enforced options via the OAppOptionsType3.\\n        options = combineOptions(_sendParam.dstEid, msgType, _sendParam.extraOptions);\\n\\n        // @dev Optionally inspect the message and options depending if the OApp owner has set a msg inspector.\\n        // @dev If it fails inspection, needs to revert in the implementation. ie. does not rely on return boolean\\n        address inspector = msgInspector; // caches the msgInspector to avoid potential double storage read\\n        if (inspector != address(0)) IOAppMsgInspector(inspector).inspect(message, options);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the receive on the LayerZero endpoint.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The encoded message.\\n     * @dev _executor The address of the executor.\\n     * @dev _extraData Additional data.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address /*_executor*/, // @dev unused in the default implementation.\\n        bytes calldata /*_extraData*/ // @dev unused in the default implementation.\\n    ) internal virtual override {\\n        // @dev The src sending chain doesnt know the address length on this chain (potentially non-evm)\\n        // Thus everything is bytes32() encoded in flight.\\n        address toAddress = _message.sendTo().bytes32ToAddress();\\n        // @dev Credit the amountLD to the recipient and return the ACTUAL amount the recipient received in local decimals\\n        uint256 amountReceivedLD = _credit(toAddress, _toLD(_message.amountSD()), _origin.srcEid);\\n\\n        if (_message.isComposed()) {\\n            // @dev Proprietary composeMsg format for the OFT.\\n            bytes memory composeMsg = OFTComposeMsgCodec.encode(\\n                _origin.nonce,\\n                _origin.srcEid,\\n                amountReceivedLD,\\n                _message.composeMsg()\\n            );\\n\\n            // @dev Stores the lzCompose payload that will be executed in a separate tx.\\n            // Standardizes functionality for executing arbitrary contract invocation on some non-evm chains.\\n            // @dev The off-chain executor will listen and process the msg based on the src-chain-callers compose options passed.\\n            // @dev The index is used when a OApp needs to compose multiple msgs on lzReceive.\\n            // For default OFT implementation there is only 1 compose msg per lzReceive, thus its always 0.\\n            endpoint.sendCompose(toAddress, _guid, 0 /* the index of the composed message*/, composeMsg);\\n        }\\n\\n        emit OFTReceived(_guid, _origin.srcEid, toAddress, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual override {\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Check if the peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint ID to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     *\\n     * @dev Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual override returns (bool) {\\n        return peers[_eid] == _peer;\\n    }\\n\\n    /**\\n     * @dev Internal function to remove dust from the given local decimal amount.\\n     * @param _amountLD The amount in local decimals.\\n     * @return amountLD The amount after removing dust.\\n     *\\n     * @dev Prevents the loss of dust when moving amounts between chains with different decimals.\\n     * @dev eg. uint(123) with a conversion rate of 100 becomes uint(100).\\n     */\\n    function _removeDust(uint256 _amountLD) internal view virtual returns (uint256 amountLD) {\\n        return (_amountLD / decimalConversionRate) * decimalConversionRate;\\n    }\\n\\n    /**\\n     * @dev Internal function to convert an amount from shared decimals into local decimals.\\n     * @param _amountSD The amount in shared decimals.\\n     * @return amountLD The amount in local decimals.\\n     */\\n    function _toLD(uint64 _amountSD) internal view virtual returns (uint256 amountLD) {\\n        return _amountSD * decimalConversionRate;\\n    }\\n\\n    /**\\n     * @dev Internal function to convert an amount from local decimals into shared decimals.\\n     * @param _amountLD The amount in local decimals.\\n     * @return amountSD The amount in shared decimals.\\n     */\\n    function _toSD(uint256 _amountLD) internal view virtual returns (uint64 amountSD) {\\n        return uint64(_amountLD / decimalConversionRate);\\n    }\\n\\n    /**\\n     * @dev Internal function to mock the amount mutation from a OFT debit() operation.\\n     * @param _amountLD The amount to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @dev _dstEid The destination endpoint ID.\\n     * @return amountSentLD The amount sent, in local decimals.\\n     * @return amountReceivedLD The amount to be received on the remote chain, in local decimals.\\n     *\\n     * @dev This is where things like fees would be calculated and deducted from the amount to be received on the remote.\\n     */\\n    function _debitView(\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 /*_dstEid*/\\n    ) internal view virtual returns (uint256 amountSentLD, uint256 amountReceivedLD) {\\n        // @dev Remove the dust so nothing is lost on the conversion between chains with different decimals for the token.\\n        amountSentLD = _removeDust(_amountLD);\\n        // @dev The amount to send is the same as amount received in the default implementation.\\n        amountReceivedLD = amountSentLD;\\n\\n        // @dev Check for slippage.\\n        if (amountReceivedLD < _minAmountLD) {\\n            revert SlippageExceeded(amountReceivedLD, _minAmountLD);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to perform a debit operation.\\n     * @param _from The address to debit.\\n     * @param _amountLD The amount to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @param _dstEid The destination endpoint ID.\\n     * @return amountSentLD The amount sent in local decimals.\\n     * @return amountReceivedLD The amount received in local decimals on the remote.\\n     *\\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\\n     */\\n    function _debit(\\n        address _from,\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 _dstEid\\n    ) internal virtual returns (uint256 amountSentLD, uint256 amountReceivedLD);\\n\\n    /**\\n     * @dev Internal function to perform a credit operation.\\n     * @param _to The address to credit.\\n     * @param _amountLD The amount to credit in local decimals.\\n     * @param _srcEid The source endpoint ID.\\n     * @return amountReceivedLD The amount ACTUALLY received in local decimals.\\n     *\\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\\n     */\\n    function _credit(\\n        address _to,\\n        uint256 _amountLD,\\n        uint32 _srcEid\\n    ) internal virtual returns (uint256 amountReceivedLD);\\n}\\n\",\"keccak256\":\"0x4c5a5412cf671bb70d84c9e783312eddf864ef56566f7bf86401c5661015e228\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { MessagingReceipt, MessagingFee } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\\\";\\n\\n/**\\n * @dev Struct representing token parameters for the OFT send() operation.\\n */\\nstruct SendParam {\\n    uint32 dstEid; // Destination endpoint ID.\\n    bytes32 to; // Recipient address.\\n    uint256 amountLD; // Amount to send in local decimals.\\n    uint256 minAmountLD; // Minimum amount to send in local decimals.\\n    bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.\\n    bytes composeMsg; // The composed message for the send() operation.\\n    bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.\\n}\\n\\n/**\\n * @dev Struct representing OFT limit information.\\n * @dev These amounts can change dynamically and are up the specific oft implementation.\\n */\\nstruct OFTLimit {\\n    uint256 minAmountLD; // Minimum amount in local decimals that can be sent to the recipient.\\n    uint256 maxAmountLD; // Maximum amount in local decimals that can be sent to the recipient.\\n}\\n\\n/**\\n * @dev Struct representing OFT receipt information.\\n */\\nstruct OFTReceipt {\\n    uint256 amountSentLD; // Amount of tokens ACTUALLY debited from the sender in local decimals.\\n    // @dev In non-default implementations, the amountReceivedLD COULD differ from this value.\\n    uint256 amountReceivedLD; // Amount of tokens to be received on the remote side.\\n}\\n\\n/**\\n * @dev Struct representing OFT fee details.\\n * @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI.\\n */\\nstruct OFTFeeDetail {\\n    int256 feeAmountLD; // Amount of the fee in local decimals.\\n    string description; // Description of the fee.\\n}\\n\\n/**\\n * @title IOFT\\n * @dev Interface for the OftChain (OFT) token.\\n * @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\\n * @dev This specific interface ID is '0x02e49c2c'.\\n */\\ninterface IOFT {\\n    // Custom error messages\\n    error InvalidLocalDecimals();\\n    error SlippageExceeded(uint256 amountLD, uint256 minAmountLD);\\n\\n    // Events\\n    event OFTSent(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 dstEid, // Destination Endpoint ID.\\n        address indexed fromAddress, // Address of the sender on the src chain.\\n        uint256 amountSentLD, // Amount of tokens sent in local decimals.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n    event OFTReceived(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 srcEid, // Source Endpoint ID.\\n        address indexed toAddress, // Address of the recipient on the dst chain.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external view returns (bytes4 interfaceId, uint64 version);\\n\\n    /**\\n     * @notice Retrieves the address of the token associated with the OFT.\\n     * @return token The address of the ERC20 token implementation.\\n     */\\n    function token() external view returns (address);\\n\\n    /**\\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n     * @return requiresApproval Needs approval of the underlying token implementation.\\n     *\\n     * @dev Allows things like wallet implementers to determine integration requirements,\\n     * without understanding the underlying token implementation.\\n     */\\n    function approvalRequired() external view returns (bool);\\n\\n    /**\\n     * @notice Retrieves the shared decimals of the OFT.\\n     * @return sharedDecimals The shared decimals of the OFT.\\n     */\\n    function sharedDecimals() external view returns (uint8);\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return limit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return receipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    ) external view returns (OFTLimit memory, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory);\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return fee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(SendParam calldata _sendParam, bool _payInLzToken) external view returns (MessagingFee memory);\\n\\n    /**\\n     * @notice Executes the send() operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The fee information supplied by the caller.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds from fees etc. on the src.\\n     * @return receipt The LayerZero messaging receipt from the send() operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory, OFTReceipt memory);\\n}\\n\",\"keccak256\":\"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTComposeMsgCodec {\\n    // Offset constants for decoding composed messages\\n    uint8 private constant NONCE_OFFSET = 8;\\n    uint8 private constant SRC_EID_OFFSET = 12;\\n    uint8 private constant AMOUNT_LD_OFFSET = 44;\\n    uint8 private constant COMPOSE_FROM_OFFSET = 76;\\n\\n    /**\\n     * @dev Encodes a OFT composed message.\\n     * @param _nonce The nonce value.\\n     * @param _srcEid The source endpoint ID.\\n     * @param _amountLD The amount in local decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded Composed message.\\n     */\\n    function encode(\\n        uint64 _nonce,\\n        uint32 _srcEid,\\n        uint256 _amountLD,\\n        bytes memory _composeMsg // 0x[composeFrom][composeMsg]\\n    ) internal pure returns (bytes memory _msg) {\\n        _msg = abi.encodePacked(_nonce, _srcEid, _amountLD, _composeMsg);\\n    }\\n\\n    /**\\n     * @dev Retrieves the nonce for the composed message.\\n     * @param _msg The message.\\n     * @return The nonce value.\\n     */\\n    function nonce(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[:NONCE_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the source endpoint ID for the composed message.\\n     * @param _msg The message.\\n     * @return The source endpoint ID.\\n     */\\n    function srcEid(bytes calldata _msg) internal pure returns (uint32) {\\n        return uint32(bytes4(_msg[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in local decimals from the composed message.\\n     * @param _msg The message.\\n     * @return The amount in local decimals.\\n     */\\n    function amountLD(bytes calldata _msg) internal pure returns (uint256) {\\n        return uint256(bytes32(_msg[SRC_EID_OFFSET:AMOUNT_LD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composeFrom value from the composed message.\\n     * @param _msg The message.\\n     * @return The composeFrom value.\\n     */\\n    function composeFrom(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[AMOUNT_LD_OFFSET:COMPOSE_FROM_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message.\\n     * @param _msg The message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[COMPOSE_FROM_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTMsgCodec {\\n    // Offset constants for encoding and decoding OFT messages\\n    uint8 private constant SEND_TO_OFFSET = 32;\\n    uint8 private constant SEND_AMOUNT_SD_OFFSET = 40;\\n\\n    /**\\n     * @dev Encodes an OFT LayerZero message.\\n     * @param _sendTo The recipient address.\\n     * @param _amountShared The amount in shared decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded message.\\n     * @return hasCompose A boolean indicating whether the message has a composed payload.\\n     */\\n    function encode(\\n        bytes32 _sendTo,\\n        uint64 _amountShared,\\n        bytes memory _composeMsg\\n    ) internal view returns (bytes memory _msg, bool hasCompose) {\\n        hasCompose = _composeMsg.length > 0;\\n        // @dev Remote chains will want to know the composed function caller ie. msg.sender on the src.\\n        _msg = hasCompose\\n            ? abi.encodePacked(_sendTo, _amountShared, addressToBytes32(msg.sender), _composeMsg)\\n            : abi.encodePacked(_sendTo, _amountShared);\\n    }\\n\\n    /**\\n     * @dev Checks if the OFT message is composed.\\n     * @param _msg The OFT message.\\n     * @return A boolean indicating whether the message is composed.\\n     */\\n    function isComposed(bytes calldata _msg) internal pure returns (bool) {\\n        return _msg.length > SEND_AMOUNT_SD_OFFSET;\\n    }\\n\\n    /**\\n     * @dev Retrieves the recipient address from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The recipient address.\\n     */\\n    function sendTo(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[:SEND_TO_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in shared decimals from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The amount in shared decimals.\\n     */\\n    function amountSD(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[SEND_TO_OFFSET:SEND_AMOUNT_SD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[SEND_AMOUNT_SD_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0x5358948017669c03e157f871d8c38e988f9004dbd0801ad3119d2487f0d40b0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"./extensions/IERC20Metadata.sol\\\";\\nimport {Context} from \\\"../../utils/Context.sol\\\";\\nimport {IERC20Errors} from \\\"../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC-20\\n * applications.\\n */\\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\\n    mapping(address account => uint256) private _balances;\\n\\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * Both values are immutable: they can only be set once during construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Skips emitting an {Approval} event indicating an allowance update. This is not\\n     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            _totalSupply += value;\\n        } else {\\n            uint256 fromBalance = _balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                _balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                _totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                _balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     *\\n     * ```solidity\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        _allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance < type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x41f6b3b9e030561e7896dbef372b499cc8d418a80c3884a4d65a68f2fdc7493a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\nimport {IERC1363} from \\\"../../../interfaces/IERC1363.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    /**\\n     * @dev An operation with an ERC-20 token failed.\\n     */\\n    error SafeERC20FailedOperation(address token);\\n\\n    /**\\n     * @dev Indicates a failed `decreaseAllowance` request.\\n     */\\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        forceApprove(token, spender, oldAllowance + value);\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\n     * value, non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\n        unchecked {\\n            uint256 currentAllowance = token.allowance(address(this), spender);\\n            if (currentAllowance < requestedDecrease) {\\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\n            }\\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     *\\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\\n     * only sets the \\\"standard\\\" allowance. Any temporary allowance will remain active, in addition to the value being\\n     * set here.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            safeTransfer(token, to, value);\\n        } else if (!token.transferAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferFromAndCallRelaxed(\\n        IERC1363 token,\\n        address from,\\n        address to,\\n        uint256 value,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length == 0) {\\n            safeTransferFrom(token, from, to, value);\\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\\n     * once without retrying, and relies on the returned value to be true.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            forceApprove(token, to, value);\\n        } else if (!token.approveAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            // bubble errors\\n            if iszero(success) {\\n                let ptr := mload(0x40)\\n                returndatacopy(ptr, 0, returndatasize())\\n                revert(ptr, returndatasize())\\n            }\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n\\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        bool success;\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\\n    }\\n}\\n\",\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"},\"contracts/SS.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nimport {Ownable} from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport {OFT} from \\\"@layerzerolabs/oft-evm/contracts/OFT.sol\\\";\\n\\ncontract SS is OFT {\\n    constructor(\\n        string memory _name,\\n        string memory _symbol,\\n        address _lzEndpoint,\\n        address _delegate\\n    ) OFT(_name, _symbol, _lzEndpoint, _delegate) Ownable(_delegate) {}\\n\\n    /**\\n     * @dev Mints new tokens to the specified address\\n     * @param _to The address to mint tokens to\\n     * @param _amount The amount of tokens to mint\\n     */\\n    function mint(address _to, uint256 _amount) external onlyOwner {\\n        _mint(_to, _amount);\\n    }\\n}\\n\",\"keccak256\":\"0x70505d6168e001893a2dec30867779aad4a57d372989d887eecbdce16ae4c3f5\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"contracts/SS.sol:SS","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1390,"contract":"contracts/SS.sol:SS","label":"peers","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_bytes32)"},{"astId":2166,"contract":"contracts/SS.sol:SS","label":"preCrime","offset":0,"slot":"2","type":"t_address"},{"astId":2006,"contract":"contracts/SS.sol:SS","label":"enforcedOptions","offset":0,"slot":"3","type":"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))"},{"astId":2786,"contract":"contracts/SS.sol:SS","label":"msgInspector","offset":0,"slot":"4","type":"t_address"},{"astId":4272,"contract":"contracts/SS.sol:SS","label":"_balances","offset":0,"slot":"5","type":"t_mapping(t_address,t_uint256)"},{"astId":4278,"contract":"contracts/SS.sol:SS","label":"_allowances","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":4280,"contract":"contracts/SS.sol:SS","label":"_totalSupply","offset":0,"slot":"7","type":"t_uint256"},{"astId":4282,"contract":"contracts/SS.sol:SS","label":"_name","offset":0,"slot":"8","type":"t_string_storage"},{"astId":4284,"contract":"contracts/SS.sol:SS","label":"_symbol","offset":0,"slot":"9","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint16,t_bytes_storage)":{"encoding":"mapping","key":"t_uint16","label":"mapping(uint16 => bytes)","numberOfBytes":"32","value":"t_bytes_storage"},"t_mapping(t_uint32,t_bytes32)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => mapping(uint16 => bytes))","numberOfBytes":"32","value":"t_mapping(t_uint16,t_bytes_storage)"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint16":{"encoding":"inplace","label":"uint16","numberOfBytes":"2"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"notice":"Checks if the path initialization is allowed based on the provided origin."},"approvalRequired()":{"notice":"Indicates whether the OFT contract requires approval of the 'token()' to send."},"combineOptions(uint32,uint16,bytes)":{"notice":"Combines options for a given endpoint and message type."},"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."},"nextNonce(uint32,bytes32)":{"notice":"Retrieves the next nonce for a given source endpoint and sender address."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"oftVersion()":{"notice":"Retrieves interfaceID and the version of the OFT."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"notice":"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation."},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"notice":"Provides a quote for the send() operation."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}},"contracts/SSG.sol":{"SSG":{"abi":[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_lzEndpoint","type":"address"},{"internalType":"address","name":"_delegate","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[],"name":"InvalidLocalDecimals","type":"error"},{"inputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"name":"InvalidOptions","type":"error"},{"inputs":[],"name":"LzTokenUnavailable","type":"error"},{"inputs":[],"name":"MaxSupplyExceeded","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","type":"error"},{"inputs":[{"internalType":"uint256","name":"msgValue","type":"uint256"}],"name":"NotEnoughNative","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"OnlyEndpoint","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"inputs":[],"name":"OnlySelf","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[{"internalType":"bytes","name":"result","type":"bytes"}],"name":"SimulationResult","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"}],"name":"SlippageExceeded","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"indexed":false,"internalType":"struct EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"EnforcedOptionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"inspector","type":"address"}],"name":"MsgInspectorSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"dstEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTSent","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":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"peer","type":"bytes32"}],"name":"PeerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"preCrimeAddress","type":"address"}],"name":"PreCrimeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SEND","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SEND_AND_CALL","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"origin","type":"tuple"}],"name":"allowInitializePath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"approvalRequired","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint16","name":"_msgType","type":"uint16"},{"internalType":"bytes","name":"_extraOptions","type":"bytes"}],"name":"combineOptions","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimalConversionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"}],"name":"enforcedOptions","outputs":[{"internalType":"bytes","name":"enforcedOption","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"","type":"tuple"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"}],"name":"isComposeMsgSender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"isPeer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"origin","type":"tuple"},{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"internalType":"struct InboundPacket[]","name":"_packets","type":"tuple[]"}],"name":"lzReceiveAndRevert","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceiveSimulate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"msgInspector","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oApp","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"oftVersion","outputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preCrime","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"}],"name":"quoteOFT","outputs":[{"components":[{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"uint256","name":"maxAmountLD","type":"uint256"}],"internalType":"struct OFTLimit","name":"oftLimit","type":"tuple"},{"components":[{"internalType":"int256","name":"feeAmountLD","type":"int256"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct OFTFeeDetail[]","name":"oftFeeDetails","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"oftReceipt","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"internalType":"bool","name":"_payInLzToken","type":"bool"}],"name":"quoteSend","outputs":[{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"msgFee","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"_fee","type":"tuple"},{"internalType":"address","name":"_refundAddress","type":"address"}],"name":"send","outputs":[{"components":[{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"fee","type":"tuple"}],"internalType":"struct MessagingReceipt","name":"msgReceipt","type":"tuple"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"oftReceipt","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"internalType":"struct EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"setEnforcedOptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_msgInspector","type":"address"}],"name":"setMsgInspector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"setPeer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_preCrime","type":"address"}],"name":"setPreCrime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"errors":{"ERC20InsufficientAllowance(address,uint256,uint256)":[{"details":"Indicates a failure with the `spender`’s `allowance`. Used in transfers.","params":{"allowance":"Amount of tokens a `spender` is allowed to operate with.","needed":"Minimum amount required to perform a transfer.","spender":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC20InsufficientBalance(address,uint256,uint256)":[{"details":"Indicates an error related to the current `balance` of a `sender`. Used in transfers.","params":{"balance":"Current balance for the interacting account.","needed":"Minimum amount required to perform a transfer.","sender":"Address whose tokens are being transferred."}}],"ERC20InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC20InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC20InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC20InvalidSpender(address)":[{"details":"Indicates a failure with the `spender` to be approved. Used in approvals.","params":{"spender":"Address that may be allowed to operate on tokens without being their owner."}}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}],"SafeERC20FailedOperation(address)":[{"details":"An operation with an ERC-20 token failed."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"PreCrimeSet(address)":{"details":"Emitted when the preCrime contract address is set.","params":{"preCrimeAddress":"The address of the preCrime contract."}},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}},"kind":"dev","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"details":"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.","params":{"origin":"The origin information containing the source endpoint and sender address."},"returns":{"_0":"Whether the path has been initialized."}},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approvalRequired()":{"details":"In the case of OFT where the contract IS the token, approval is NOT required.","returns":{"_0":"requiresApproval Needs approval of the underlying token implementation."}},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"combineOptions(uint32,uint16,bytes)":{"details":"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.","params":{"_eid":"The endpoint ID.","_extraOptions":"Additional options passed by the caller.","_msgType":"The OAPP message type."},"returns":{"_0":"options The combination of caller specified options AND enforced options."}},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_sender":"The sender address."},"returns":{"_0":"isSender Is a valid sender."}},"isPeer(uint32,bytes32)":{"details":"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.","params":{"_eid":"The endpoint ID to check.","_peer":"The peer to check."},"returns":{"_0":"Whether the peer passed is considered 'trusted' by the OApp."}},"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.","params":{"_executor":"The address of the executor for the received message.","_extraData":"Additional arbitrary data provided by the corresponding executor.","_guid":"The unique identifier for the received LayerZero message.","_message":"The payload of the received message.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":{"details":"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.","params":{"_packets":"An array of InboundPacket objects representing received packets to be delivered."}},"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":{"details":"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.","params":{"_executor":"The executor address for the packet.","_extraData":"Additional data for the packet.","_guid":"The unique identifier of the packet.","_message":"The message payload of the packet.","_origin":"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message."}},"mint(address,uint256)":{"details":"Mints new tokens to the specified address","params":{"_amount":"The amount of tokens to mint","_to":"The address to mint tokens to"}},"name()":{"details":"Returns the name of the token."},"nextNonce(uint32,bytes32)":{"details":"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.","returns":{"nonce":"The next nonce."}},"oApp()":{"details":"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.","returns":{"_0":"The address of the OApp contract."}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol implementation.","senderVersion":"The version of the OAppSender.sol implementation."}},"oftVersion()":{"details":"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)","returns":{"interfaceId":"The interface ID.","version":"The version."}},"owner()":{"details":"Returns the address of the current owner."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"params":{"_sendParam":"The parameters for the send operation."},"returns":{"oftFeeDetails":"The details of OFT fees.","oftLimit":"The OFT limit information.","oftReceipt":"The OFT receipt information."}},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"details":"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.","params":{"_payInLzToken":"Flag indicating whether the caller is paying in the LZ token.","_sendParam":"The parameters for the send() operation."},"returns":{"msgFee":"The calculated LayerZero messaging fee from the send() operation."}},"renounceOwnership()":{"details":"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."},"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":{"details":"Executes the send operation.MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.","params":{"_fee":"The calculated fee for the send() operation.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.","_refundAddress":"The address to receive any excess funds.","_sendParam":"The parameters for the send operation."},"returns":{"msgReceipt":"The receipt for the send operation.","oftReceipt":"The OFT receipt information."}},"setDelegate(address)":{"details":"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.","params":{"_delegate":"The address of the delegate to be set."}},"setEnforcedOptions((uint32,uint16,bytes)[])":{"details":"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().","params":{"_enforcedOptions":"An array of EnforcedOptionParam structures specifying enforced options."}},"setMsgInspector(address)":{"details":"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.","params":{"_msgInspector":"The address of the message inspector."}},"setPeer(uint32,bytes32)":{"details":"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.","params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"setPreCrime(address)":{"details":"Sets the preCrime contract address.","params":{"_preCrime":"The address of the preCrime contract."}},"sharedDecimals()":{"details":"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615","returns":{"_0":"The shared decimals of the OFT."}},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"token()":{"details":"Retrieves the address of the underlying ERC20 implementation.In the case of OFT, address(this) and erc20 are the same contract.","returns":{"_0":"The address of the OFT token."}},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13191":{"entryPoint":null,"id":13191,"parameterSlots":4,"returnSlots":0},"@_1354":{"entryPoint":null,"id":1354,"parameterSlots":2,"returnSlots":0},"@_1421":{"entryPoint":null,"id":1421,"parameterSlots":2,"returnSlots":0},"@_2646":{"entryPoint":null,"id":2646,"parameterSlots":4,"returnSlots":0},"@_2823":{"entryPoint":null,"id":2823,"parameterSlots":3,"returnSlots":0},"@_3883":{"entryPoint":null,"id":3883,"parameterSlots":1,"returnSlots":0},"@_4301":{"entryPoint":null,"id":4301,"parameterSlots":2,"returnSlots":0},"@_transferOwnership_3979":{"entryPoint":385,"id":3979,"parameterSlots":1,"returnSlots":0},"@decimals_4328":{"entryPoint":null,"id":4328,"parameterSlots":0,"returnSlots":1},"@sharedDecimals_2848":{"entryPoint":465,"id":2848,"parameterSlots":0,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":655,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_string_fromMemory":{"entryPoint":492,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_address_fromMemory":{"entryPoint":683,"id":null,"parameterSlots":2,"returnSlots":4},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_exp_helper":{"entryPoint":874,"id":null,"parameterSlots":3,"returnSlots":2},"checked_exp_t_uint256_t_uint8":{"entryPoint":1105,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":941,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint8":{"entryPoint":843,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":1185,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":1264,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":1127,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":821,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":470,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:6334:66","nodeType":"YulBlock","src":"0:6334:66","statements":[{"nativeSrc":"6:3:66","nodeType":"YulBlock","src":"6:3:66","statements":[]},{"body":{"nativeSrc":"46:95:66","nodeType":"YulBlock","src":"46:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:66","nodeType":"YulLiteral","src":"63:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:66","nodeType":"YulLiteral","src":"70:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:66","nodeType":"YulLiteral","src":"75:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:66","nodeType":"YulIdentifier","src":"66:3:66"},"nativeSrc":"66:20:66","nodeType":"YulFunctionCall","src":"66:20:66"}],"functionName":{"name":"mstore","nativeSrc":"56:6:66","nodeType":"YulIdentifier","src":"56:6:66"},"nativeSrc":"56:31:66","nodeType":"YulFunctionCall","src":"56:31:66"},"nativeSrc":"56:31:66","nodeType":"YulExpressionStatement","src":"56:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:66","nodeType":"YulLiteral","src":"103:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:66","nodeType":"YulLiteral","src":"106:4:66","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:66","nodeType":"YulIdentifier","src":"96:6:66"},"nativeSrc":"96:15:66","nodeType":"YulFunctionCall","src":"96:15:66"},"nativeSrc":"96:15:66","nodeType":"YulExpressionStatement","src":"96:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:66","nodeType":"YulLiteral","src":"127:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:66","nodeType":"YulLiteral","src":"130:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:66","nodeType":"YulIdentifier","src":"120:6:66"},"nativeSrc":"120:15:66","nodeType":"YulFunctionCall","src":"120:15:66"},"nativeSrc":"120:15:66","nodeType":"YulExpressionStatement","src":"120:15:66"}]},"name":"panic_error_0x41","nativeSrc":"14:127:66","nodeType":"YulFunctionDefinition","src":"14:127:66"},{"body":{"nativeSrc":"210:770:66","nodeType":"YulBlock","src":"210:770:66","statements":[{"body":{"nativeSrc":"259:16:66","nodeType":"YulBlock","src":"259:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"268:1:66","nodeType":"YulLiteral","src":"268:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"271:1:66","nodeType":"YulLiteral","src":"271:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"261:6:66","nodeType":"YulIdentifier","src":"261:6:66"},"nativeSrc":"261:12:66","nodeType":"YulFunctionCall","src":"261:12:66"},"nativeSrc":"261:12:66","nodeType":"YulExpressionStatement","src":"261:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"238:6:66","nodeType":"YulIdentifier","src":"238:6:66"},{"kind":"number","nativeSrc":"246:4:66","nodeType":"YulLiteral","src":"246:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"234:3:66","nodeType":"YulIdentifier","src":"234:3:66"},"nativeSrc":"234:17:66","nodeType":"YulFunctionCall","src":"234:17:66"},{"name":"end","nativeSrc":"253:3:66","nodeType":"YulIdentifier","src":"253:3:66"}],"functionName":{"name":"slt","nativeSrc":"230:3:66","nodeType":"YulIdentifier","src":"230:3:66"},"nativeSrc":"230:27:66","nodeType":"YulFunctionCall","src":"230:27:66"}],"functionName":{"name":"iszero","nativeSrc":"223:6:66","nodeType":"YulIdentifier","src":"223:6:66"},"nativeSrc":"223:35:66","nodeType":"YulFunctionCall","src":"223:35:66"},"nativeSrc":"220:55:66","nodeType":"YulIf","src":"220:55:66"},{"nativeSrc":"284:27:66","nodeType":"YulVariableDeclaration","src":"284:27:66","value":{"arguments":[{"name":"offset","nativeSrc":"304:6:66","nodeType":"YulIdentifier","src":"304:6:66"}],"functionName":{"name":"mload","nativeSrc":"298:5:66","nodeType":"YulIdentifier","src":"298:5:66"},"nativeSrc":"298:13:66","nodeType":"YulFunctionCall","src":"298:13:66"},"variables":[{"name":"length","nativeSrc":"288:6:66","nodeType":"YulTypedName","src":"288:6:66","type":""}]},{"body":{"nativeSrc":"354:22:66","nodeType":"YulBlock","src":"354:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"356:16:66","nodeType":"YulIdentifier","src":"356:16:66"},"nativeSrc":"356:18:66","nodeType":"YulFunctionCall","src":"356:18:66"},"nativeSrc":"356:18:66","nodeType":"YulExpressionStatement","src":"356:18:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"326:6:66","nodeType":"YulIdentifier","src":"326:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"342:2:66","nodeType":"YulLiteral","src":"342:2:66","type":"","value":"64"},{"kind":"number","nativeSrc":"346:1:66","nodeType":"YulLiteral","src":"346:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"338:3:66","nodeType":"YulIdentifier","src":"338:3:66"},"nativeSrc":"338:10:66","nodeType":"YulFunctionCall","src":"338:10:66"},{"kind":"number","nativeSrc":"350:1:66","nodeType":"YulLiteral","src":"350:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"334:3:66","nodeType":"YulIdentifier","src":"334:3:66"},"nativeSrc":"334:18:66","nodeType":"YulFunctionCall","src":"334:18:66"}],"functionName":{"name":"gt","nativeSrc":"323:2:66","nodeType":"YulIdentifier","src":"323:2:66"},"nativeSrc":"323:30:66","nodeType":"YulFunctionCall","src":"323:30:66"},"nativeSrc":"320:56:66","nodeType":"YulIf","src":"320:56:66"},{"nativeSrc":"385:23:66","nodeType":"YulVariableDeclaration","src":"385:23:66","value":{"arguments":[{"kind":"number","nativeSrc":"405:2:66","nodeType":"YulLiteral","src":"405:2:66","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"399:5:66","nodeType":"YulIdentifier","src":"399:5:66"},"nativeSrc":"399:9:66","nodeType":"YulFunctionCall","src":"399:9:66"},"variables":[{"name":"memPtr","nativeSrc":"389:6:66","nodeType":"YulTypedName","src":"389:6:66","type":""}]},{"nativeSrc":"417:85:66","nodeType":"YulVariableDeclaration","src":"417:85:66","value":{"arguments":[{"name":"memPtr","nativeSrc":"439:6:66","nodeType":"YulIdentifier","src":"439:6:66"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"463:6:66","nodeType":"YulIdentifier","src":"463:6:66"},{"kind":"number","nativeSrc":"471:4:66","nodeType":"YulLiteral","src":"471:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"459:3:66","nodeType":"YulIdentifier","src":"459:3:66"},"nativeSrc":"459:17:66","nodeType":"YulFunctionCall","src":"459:17:66"},{"arguments":[{"kind":"number","nativeSrc":"482:2:66","nodeType":"YulLiteral","src":"482:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"478:3:66","nodeType":"YulIdentifier","src":"478:3:66"},"nativeSrc":"478:7:66","nodeType":"YulFunctionCall","src":"478:7:66"}],"functionName":{"name":"and","nativeSrc":"455:3:66","nodeType":"YulIdentifier","src":"455:3:66"},"nativeSrc":"455:31:66","nodeType":"YulFunctionCall","src":"455:31:66"},{"kind":"number","nativeSrc":"488:2:66","nodeType":"YulLiteral","src":"488:2:66","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"451:3:66","nodeType":"YulIdentifier","src":"451:3:66"},"nativeSrc":"451:40:66","nodeType":"YulFunctionCall","src":"451:40:66"},{"arguments":[{"kind":"number","nativeSrc":"497:2:66","nodeType":"YulLiteral","src":"497:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"493:3:66","nodeType":"YulIdentifier","src":"493:3:66"},"nativeSrc":"493:7:66","nodeType":"YulFunctionCall","src":"493:7:66"}],"functionName":{"name":"and","nativeSrc":"447:3:66","nodeType":"YulIdentifier","src":"447:3:66"},"nativeSrc":"447:54:66","nodeType":"YulFunctionCall","src":"447:54:66"}],"functionName":{"name":"add","nativeSrc":"435:3:66","nodeType":"YulIdentifier","src":"435:3:66"},"nativeSrc":"435:67:66","nodeType":"YulFunctionCall","src":"435:67:66"},"variables":[{"name":"newFreePtr","nativeSrc":"421:10:66","nodeType":"YulTypedName","src":"421:10:66","type":""}]},{"body":{"nativeSrc":"577:22:66","nodeType":"YulBlock","src":"577:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"579:16:66","nodeType":"YulIdentifier","src":"579:16:66"},"nativeSrc":"579:18:66","nodeType":"YulFunctionCall","src":"579:18:66"},"nativeSrc":"579:18:66","nodeType":"YulExpressionStatement","src":"579:18:66"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"520:10:66","nodeType":"YulIdentifier","src":"520:10:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"540:2:66","nodeType":"YulLiteral","src":"540:2:66","type":"","value":"64"},{"kind":"number","nativeSrc":"544:1:66","nodeType":"YulLiteral","src":"544:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"536:3:66","nodeType":"YulIdentifier","src":"536:3:66"},"nativeSrc":"536:10:66","nodeType":"YulFunctionCall","src":"536:10:66"},{"kind":"number","nativeSrc":"548:1:66","nodeType":"YulLiteral","src":"548:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"532:3:66","nodeType":"YulIdentifier","src":"532:3:66"},"nativeSrc":"532:18:66","nodeType":"YulFunctionCall","src":"532:18:66"}],"functionName":{"name":"gt","nativeSrc":"517:2:66","nodeType":"YulIdentifier","src":"517:2:66"},"nativeSrc":"517:34:66","nodeType":"YulFunctionCall","src":"517:34:66"},{"arguments":[{"name":"newFreePtr","nativeSrc":"556:10:66","nodeType":"YulIdentifier","src":"556:10:66"},{"name":"memPtr","nativeSrc":"568:6:66","nodeType":"YulIdentifier","src":"568:6:66"}],"functionName":{"name":"lt","nativeSrc":"553:2:66","nodeType":"YulIdentifier","src":"553:2:66"},"nativeSrc":"553:22:66","nodeType":"YulFunctionCall","src":"553:22:66"}],"functionName":{"name":"or","nativeSrc":"514:2:66","nodeType":"YulIdentifier","src":"514:2:66"},"nativeSrc":"514:62:66","nodeType":"YulFunctionCall","src":"514:62:66"},"nativeSrc":"511:88:66","nodeType":"YulIf","src":"511:88:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"615:2:66","nodeType":"YulLiteral","src":"615:2:66","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"619:10:66","nodeType":"YulIdentifier","src":"619:10:66"}],"functionName":{"name":"mstore","nativeSrc":"608:6:66","nodeType":"YulIdentifier","src":"608:6:66"},"nativeSrc":"608:22:66","nodeType":"YulFunctionCall","src":"608:22:66"},"nativeSrc":"608:22:66","nodeType":"YulExpressionStatement","src":"608:22:66"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"646:6:66","nodeType":"YulIdentifier","src":"646:6:66"},{"name":"length","nativeSrc":"654:6:66","nodeType":"YulIdentifier","src":"654:6:66"}],"functionName":{"name":"mstore","nativeSrc":"639:6:66","nodeType":"YulIdentifier","src":"639:6:66"},"nativeSrc":"639:22:66","nodeType":"YulFunctionCall","src":"639:22:66"},"nativeSrc":"639:22:66","nodeType":"YulExpressionStatement","src":"639:22:66"},{"body":{"nativeSrc":"713:16:66","nodeType":"YulBlock","src":"713:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"722:1:66","nodeType":"YulLiteral","src":"722:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"725:1:66","nodeType":"YulLiteral","src":"725:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"715:6:66","nodeType":"YulIdentifier","src":"715:6:66"},"nativeSrc":"715:12:66","nodeType":"YulFunctionCall","src":"715:12:66"},"nativeSrc":"715:12:66","nodeType":"YulExpressionStatement","src":"715:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"684:6:66","nodeType":"YulIdentifier","src":"684:6:66"},{"name":"length","nativeSrc":"692:6:66","nodeType":"YulIdentifier","src":"692:6:66"}],"functionName":{"name":"add","nativeSrc":"680:3:66","nodeType":"YulIdentifier","src":"680:3:66"},"nativeSrc":"680:19:66","nodeType":"YulFunctionCall","src":"680:19:66"},{"kind":"number","nativeSrc":"701:4:66","nodeType":"YulLiteral","src":"701:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"676:3:66","nodeType":"YulIdentifier","src":"676:3:66"},"nativeSrc":"676:30:66","nodeType":"YulFunctionCall","src":"676:30:66"},{"name":"end","nativeSrc":"708:3:66","nodeType":"YulIdentifier","src":"708:3:66"}],"functionName":{"name":"gt","nativeSrc":"673:2:66","nodeType":"YulIdentifier","src":"673:2:66"},"nativeSrc":"673:39:66","nodeType":"YulFunctionCall","src":"673:39:66"},"nativeSrc":"670:59:66","nodeType":"YulIf","src":"670:59:66"},{"nativeSrc":"738:10:66","nodeType":"YulVariableDeclaration","src":"738:10:66","value":{"kind":"number","nativeSrc":"747:1:66","nodeType":"YulLiteral","src":"747:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"742:1:66","nodeType":"YulTypedName","src":"742:1:66","type":""}]},{"body":{"nativeSrc":"809:91:66","nodeType":"YulBlock","src":"809:91:66","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"838:6:66","nodeType":"YulIdentifier","src":"838:6:66"},{"name":"i","nativeSrc":"846:1:66","nodeType":"YulIdentifier","src":"846:1:66"}],"functionName":{"name":"add","nativeSrc":"834:3:66","nodeType":"YulIdentifier","src":"834:3:66"},"nativeSrc":"834:14:66","nodeType":"YulFunctionCall","src":"834:14:66"},{"kind":"number","nativeSrc":"850:4:66","nodeType":"YulLiteral","src":"850:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"830:3:66","nodeType":"YulIdentifier","src":"830:3:66"},"nativeSrc":"830:25:66","nodeType":"YulFunctionCall","src":"830:25:66"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"871:6:66","nodeType":"YulIdentifier","src":"871:6:66"},{"name":"i","nativeSrc":"879:1:66","nodeType":"YulIdentifier","src":"879:1:66"}],"functionName":{"name":"add","nativeSrc":"867:3:66","nodeType":"YulIdentifier","src":"867:3:66"},"nativeSrc":"867:14:66","nodeType":"YulFunctionCall","src":"867:14:66"},{"kind":"number","nativeSrc":"883:4:66","nodeType":"YulLiteral","src":"883:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"863:3:66","nodeType":"YulIdentifier","src":"863:3:66"},"nativeSrc":"863:25:66","nodeType":"YulFunctionCall","src":"863:25:66"}],"functionName":{"name":"mload","nativeSrc":"857:5:66","nodeType":"YulIdentifier","src":"857:5:66"},"nativeSrc":"857:32:66","nodeType":"YulFunctionCall","src":"857:32:66"}],"functionName":{"name":"mstore","nativeSrc":"823:6:66","nodeType":"YulIdentifier","src":"823:6:66"},"nativeSrc":"823:67:66","nodeType":"YulFunctionCall","src":"823:67:66"},"nativeSrc":"823:67:66","nodeType":"YulExpressionStatement","src":"823:67:66"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"768:1:66","nodeType":"YulIdentifier","src":"768:1:66"},{"name":"length","nativeSrc":"771:6:66","nodeType":"YulIdentifier","src":"771:6:66"}],"functionName":{"name":"lt","nativeSrc":"765:2:66","nodeType":"YulIdentifier","src":"765:2:66"},"nativeSrc":"765:13:66","nodeType":"YulFunctionCall","src":"765:13:66"},"nativeSrc":"757:143:66","nodeType":"YulForLoop","post":{"nativeSrc":"779:21:66","nodeType":"YulBlock","src":"779:21:66","statements":[{"nativeSrc":"781:17:66","nodeType":"YulAssignment","src":"781:17:66","value":{"arguments":[{"name":"i","nativeSrc":"790:1:66","nodeType":"YulIdentifier","src":"790:1:66"},{"kind":"number","nativeSrc":"793:4:66","nodeType":"YulLiteral","src":"793:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"786:3:66","nodeType":"YulIdentifier","src":"786:3:66"},"nativeSrc":"786:12:66","nodeType":"YulFunctionCall","src":"786:12:66"},"variableNames":[{"name":"i","nativeSrc":"781:1:66","nodeType":"YulIdentifier","src":"781:1:66"}]}]},"pre":{"nativeSrc":"761:3:66","nodeType":"YulBlock","src":"761:3:66","statements":[]},"src":"757:143:66"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"924:6:66","nodeType":"YulIdentifier","src":"924:6:66"},{"name":"length","nativeSrc":"932:6:66","nodeType":"YulIdentifier","src":"932:6:66"}],"functionName":{"name":"add","nativeSrc":"920:3:66","nodeType":"YulIdentifier","src":"920:3:66"},"nativeSrc":"920:19:66","nodeType":"YulFunctionCall","src":"920:19:66"},{"kind":"number","nativeSrc":"941:4:66","nodeType":"YulLiteral","src":"941:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"916:3:66","nodeType":"YulIdentifier","src":"916:3:66"},"nativeSrc":"916:30:66","nodeType":"YulFunctionCall","src":"916:30:66"},{"kind":"number","nativeSrc":"948:1:66","nodeType":"YulLiteral","src":"948:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"909:6:66","nodeType":"YulIdentifier","src":"909:6:66"},"nativeSrc":"909:41:66","nodeType":"YulFunctionCall","src":"909:41:66"},"nativeSrc":"909:41:66","nodeType":"YulExpressionStatement","src":"909:41:66"},{"nativeSrc":"959:15:66","nodeType":"YulAssignment","src":"959:15:66","value":{"name":"memPtr","nativeSrc":"968:6:66","nodeType":"YulIdentifier","src":"968:6:66"},"variableNames":[{"name":"array","nativeSrc":"959:5:66","nodeType":"YulIdentifier","src":"959:5:66"}]}]},"name":"abi_decode_string_fromMemory","nativeSrc":"146:834:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"184:6:66","nodeType":"YulTypedName","src":"184:6:66","type":""},{"name":"end","nativeSrc":"192:3:66","nodeType":"YulTypedName","src":"192:3:66","type":""}],"returnVariables":[{"name":"array","nativeSrc":"200:5:66","nodeType":"YulTypedName","src":"200:5:66","type":""}],"src":"146:834:66"},{"body":{"nativeSrc":"1045:117:66","nodeType":"YulBlock","src":"1045:117:66","statements":[{"nativeSrc":"1055:22:66","nodeType":"YulAssignment","src":"1055:22:66","value":{"arguments":[{"name":"offset","nativeSrc":"1070:6:66","nodeType":"YulIdentifier","src":"1070:6:66"}],"functionName":{"name":"mload","nativeSrc":"1064:5:66","nodeType":"YulIdentifier","src":"1064:5:66"},"nativeSrc":"1064:13:66","nodeType":"YulFunctionCall","src":"1064:13:66"},"variableNames":[{"name":"value","nativeSrc":"1055:5:66","nodeType":"YulIdentifier","src":"1055:5:66"}]},{"body":{"nativeSrc":"1140:16:66","nodeType":"YulBlock","src":"1140:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1149:1:66","nodeType":"YulLiteral","src":"1149:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1152:1:66","nodeType":"YulLiteral","src":"1152:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1142:6:66","nodeType":"YulIdentifier","src":"1142:6:66"},"nativeSrc":"1142:12:66","nodeType":"YulFunctionCall","src":"1142:12:66"},"nativeSrc":"1142:12:66","nodeType":"YulExpressionStatement","src":"1142:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1099:5:66","nodeType":"YulIdentifier","src":"1099:5:66"},{"arguments":[{"name":"value","nativeSrc":"1110:5:66","nodeType":"YulIdentifier","src":"1110:5:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1125:3:66","nodeType":"YulLiteral","src":"1125:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"1130:1:66","nodeType":"YulLiteral","src":"1130:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1121:3:66","nodeType":"YulIdentifier","src":"1121:3:66"},"nativeSrc":"1121:11:66","nodeType":"YulFunctionCall","src":"1121:11:66"},{"kind":"number","nativeSrc":"1134:1:66","nodeType":"YulLiteral","src":"1134:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1117:3:66","nodeType":"YulIdentifier","src":"1117:3:66"},"nativeSrc":"1117:19:66","nodeType":"YulFunctionCall","src":"1117:19:66"}],"functionName":{"name":"and","nativeSrc":"1106:3:66","nodeType":"YulIdentifier","src":"1106:3:66"},"nativeSrc":"1106:31:66","nodeType":"YulFunctionCall","src":"1106:31:66"}],"functionName":{"name":"eq","nativeSrc":"1096:2:66","nodeType":"YulIdentifier","src":"1096:2:66"},"nativeSrc":"1096:42:66","nodeType":"YulFunctionCall","src":"1096:42:66"}],"functionName":{"name":"iszero","nativeSrc":"1089:6:66","nodeType":"YulIdentifier","src":"1089:6:66"},"nativeSrc":"1089:50:66","nodeType":"YulFunctionCall","src":"1089:50:66"},"nativeSrc":"1086:70:66","nodeType":"YulIf","src":"1086:70:66"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"985:177:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1024:6:66","nodeType":"YulTypedName","src":"1024:6:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1035:5:66","nodeType":"YulTypedName","src":"1035:5:66","type":""}],"src":"985:177:66"},{"body":{"nativeSrc":"1319:576:66","nodeType":"YulBlock","src":"1319:576:66","statements":[{"body":{"nativeSrc":"1366:16:66","nodeType":"YulBlock","src":"1366:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1375:1:66","nodeType":"YulLiteral","src":"1375:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1378:1:66","nodeType":"YulLiteral","src":"1378:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1368:6:66","nodeType":"YulIdentifier","src":"1368:6:66"},"nativeSrc":"1368:12:66","nodeType":"YulFunctionCall","src":"1368:12:66"},"nativeSrc":"1368:12:66","nodeType":"YulExpressionStatement","src":"1368:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1340:7:66","nodeType":"YulIdentifier","src":"1340:7:66"},{"name":"headStart","nativeSrc":"1349:9:66","nodeType":"YulIdentifier","src":"1349:9:66"}],"functionName":{"name":"sub","nativeSrc":"1336:3:66","nodeType":"YulIdentifier","src":"1336:3:66"},"nativeSrc":"1336:23:66","nodeType":"YulFunctionCall","src":"1336:23:66"},{"kind":"number","nativeSrc":"1361:3:66","nodeType":"YulLiteral","src":"1361:3:66","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"1332:3:66","nodeType":"YulIdentifier","src":"1332:3:66"},"nativeSrc":"1332:33:66","nodeType":"YulFunctionCall","src":"1332:33:66"},"nativeSrc":"1329:53:66","nodeType":"YulIf","src":"1329:53:66"},{"nativeSrc":"1391:30:66","nodeType":"YulVariableDeclaration","src":"1391:30:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1411:9:66","nodeType":"YulIdentifier","src":"1411:9:66"}],"functionName":{"name":"mload","nativeSrc":"1405:5:66","nodeType":"YulIdentifier","src":"1405:5:66"},"nativeSrc":"1405:16:66","nodeType":"YulFunctionCall","src":"1405:16:66"},"variables":[{"name":"offset","nativeSrc":"1395:6:66","nodeType":"YulTypedName","src":"1395:6:66","type":""}]},{"body":{"nativeSrc":"1464:16:66","nodeType":"YulBlock","src":"1464:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1473:1:66","nodeType":"YulLiteral","src":"1473:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1476:1:66","nodeType":"YulLiteral","src":"1476:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1466:6:66","nodeType":"YulIdentifier","src":"1466:6:66"},"nativeSrc":"1466:12:66","nodeType":"YulFunctionCall","src":"1466:12:66"},"nativeSrc":"1466:12:66","nodeType":"YulExpressionStatement","src":"1466:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1436:6:66","nodeType":"YulIdentifier","src":"1436:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1452:2:66","nodeType":"YulLiteral","src":"1452:2:66","type":"","value":"64"},{"kind":"number","nativeSrc":"1456:1:66","nodeType":"YulLiteral","src":"1456:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1448:3:66","nodeType":"YulIdentifier","src":"1448:3:66"},"nativeSrc":"1448:10:66","nodeType":"YulFunctionCall","src":"1448:10:66"},{"kind":"number","nativeSrc":"1460:1:66","nodeType":"YulLiteral","src":"1460:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1444:3:66","nodeType":"YulIdentifier","src":"1444:3:66"},"nativeSrc":"1444:18:66","nodeType":"YulFunctionCall","src":"1444:18:66"}],"functionName":{"name":"gt","nativeSrc":"1433:2:66","nodeType":"YulIdentifier","src":"1433:2:66"},"nativeSrc":"1433:30:66","nodeType":"YulFunctionCall","src":"1433:30:66"},"nativeSrc":"1430:50:66","nodeType":"YulIf","src":"1430:50:66"},{"nativeSrc":"1489:71:66","nodeType":"YulAssignment","src":"1489:71:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1532:9:66","nodeType":"YulIdentifier","src":"1532:9:66"},{"name":"offset","nativeSrc":"1543:6:66","nodeType":"YulIdentifier","src":"1543:6:66"}],"functionName":{"name":"add","nativeSrc":"1528:3:66","nodeType":"YulIdentifier","src":"1528:3:66"},"nativeSrc":"1528:22:66","nodeType":"YulFunctionCall","src":"1528:22:66"},{"name":"dataEnd","nativeSrc":"1552:7:66","nodeType":"YulIdentifier","src":"1552:7:66"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1499:28:66","nodeType":"YulIdentifier","src":"1499:28:66"},"nativeSrc":"1499:61:66","nodeType":"YulFunctionCall","src":"1499:61:66"},"variableNames":[{"name":"value0","nativeSrc":"1489:6:66","nodeType":"YulIdentifier","src":"1489:6:66"}]},{"nativeSrc":"1569:41:66","nodeType":"YulVariableDeclaration","src":"1569:41:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1595:9:66","nodeType":"YulIdentifier","src":"1595:9:66"},{"kind":"number","nativeSrc":"1606:2:66","nodeType":"YulLiteral","src":"1606:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1591:3:66","nodeType":"YulIdentifier","src":"1591:3:66"},"nativeSrc":"1591:18:66","nodeType":"YulFunctionCall","src":"1591:18:66"}],"functionName":{"name":"mload","nativeSrc":"1585:5:66","nodeType":"YulIdentifier","src":"1585:5:66"},"nativeSrc":"1585:25:66","nodeType":"YulFunctionCall","src":"1585:25:66"},"variables":[{"name":"offset_1","nativeSrc":"1573:8:66","nodeType":"YulTypedName","src":"1573:8:66","type":""}]},{"body":{"nativeSrc":"1655:16:66","nodeType":"YulBlock","src":"1655:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1664:1:66","nodeType":"YulLiteral","src":"1664:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1667:1:66","nodeType":"YulLiteral","src":"1667:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1657:6:66","nodeType":"YulIdentifier","src":"1657:6:66"},"nativeSrc":"1657:12:66","nodeType":"YulFunctionCall","src":"1657:12:66"},"nativeSrc":"1657:12:66","nodeType":"YulExpressionStatement","src":"1657:12:66"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"1625:8:66","nodeType":"YulIdentifier","src":"1625:8:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1643:2:66","nodeType":"YulLiteral","src":"1643:2:66","type":"","value":"64"},{"kind":"number","nativeSrc":"1647:1:66","nodeType":"YulLiteral","src":"1647:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1639:3:66","nodeType":"YulIdentifier","src":"1639:3:66"},"nativeSrc":"1639:10:66","nodeType":"YulFunctionCall","src":"1639:10:66"},{"kind":"number","nativeSrc":"1651:1:66","nodeType":"YulLiteral","src":"1651:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1635:3:66","nodeType":"YulIdentifier","src":"1635:3:66"},"nativeSrc":"1635:18:66","nodeType":"YulFunctionCall","src":"1635:18:66"}],"functionName":{"name":"gt","nativeSrc":"1622:2:66","nodeType":"YulIdentifier","src":"1622:2:66"},"nativeSrc":"1622:32:66","nodeType":"YulFunctionCall","src":"1622:32:66"},"nativeSrc":"1619:52:66","nodeType":"YulIf","src":"1619:52:66"},{"nativeSrc":"1680:73:66","nodeType":"YulAssignment","src":"1680:73:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1723:9:66","nodeType":"YulIdentifier","src":"1723:9:66"},{"name":"offset_1","nativeSrc":"1734:8:66","nodeType":"YulIdentifier","src":"1734:8:66"}],"functionName":{"name":"add","nativeSrc":"1719:3:66","nodeType":"YulIdentifier","src":"1719:3:66"},"nativeSrc":"1719:24:66","nodeType":"YulFunctionCall","src":"1719:24:66"},{"name":"dataEnd","nativeSrc":"1745:7:66","nodeType":"YulIdentifier","src":"1745:7:66"}],"functionName":{"name":"abi_decode_string_fromMemory","nativeSrc":"1690:28:66","nodeType":"YulIdentifier","src":"1690:28:66"},"nativeSrc":"1690:63:66","nodeType":"YulFunctionCall","src":"1690:63:66"},"variableNames":[{"name":"value1","nativeSrc":"1680:6:66","nodeType":"YulIdentifier","src":"1680:6:66"}]},{"nativeSrc":"1762:59:66","nodeType":"YulAssignment","src":"1762:59:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1806:9:66","nodeType":"YulIdentifier","src":"1806:9:66"},{"kind":"number","nativeSrc":"1817:2:66","nodeType":"YulLiteral","src":"1817:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1802:3:66","nodeType":"YulIdentifier","src":"1802:3:66"},"nativeSrc":"1802:18:66","nodeType":"YulFunctionCall","src":"1802:18:66"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"1772:29:66","nodeType":"YulIdentifier","src":"1772:29:66"},"nativeSrc":"1772:49:66","nodeType":"YulFunctionCall","src":"1772:49:66"},"variableNames":[{"name":"value2","nativeSrc":"1762:6:66","nodeType":"YulIdentifier","src":"1762:6:66"}]},{"nativeSrc":"1830:59:66","nodeType":"YulAssignment","src":"1830:59:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1874:9:66","nodeType":"YulIdentifier","src":"1874:9:66"},{"kind":"number","nativeSrc":"1885:2:66","nodeType":"YulLiteral","src":"1885:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"1870:3:66","nodeType":"YulIdentifier","src":"1870:3:66"},"nativeSrc":"1870:18:66","nodeType":"YulFunctionCall","src":"1870:18:66"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"1840:29:66","nodeType":"YulIdentifier","src":"1840:29:66"},"nativeSrc":"1840:49:66","nodeType":"YulFunctionCall","src":"1840:49:66"},"variableNames":[{"name":"value3","nativeSrc":"1830:6:66","nodeType":"YulIdentifier","src":"1830:6:66"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_address_fromMemory","nativeSrc":"1167:728:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1261:9:66","nodeType":"YulTypedName","src":"1261:9:66","type":""},{"name":"dataEnd","nativeSrc":"1272:7:66","nodeType":"YulTypedName","src":"1272:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1284:6:66","nodeType":"YulTypedName","src":"1284:6:66","type":""},{"name":"value1","nativeSrc":"1292:6:66","nodeType":"YulTypedName","src":"1292:6:66","type":""},{"name":"value2","nativeSrc":"1300:6:66","nodeType":"YulTypedName","src":"1300:6:66","type":""},{"name":"value3","nativeSrc":"1308:6:66","nodeType":"YulTypedName","src":"1308:6:66","type":""}],"src":"1167:728:66"},{"body":{"nativeSrc":"2001:102:66","nodeType":"YulBlock","src":"2001:102:66","statements":[{"nativeSrc":"2011:26:66","nodeType":"YulAssignment","src":"2011:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"2023:9:66","nodeType":"YulIdentifier","src":"2023:9:66"},{"kind":"number","nativeSrc":"2034:2:66","nodeType":"YulLiteral","src":"2034:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2019:3:66","nodeType":"YulIdentifier","src":"2019:3:66"},"nativeSrc":"2019:18:66","nodeType":"YulFunctionCall","src":"2019:18:66"},"variableNames":[{"name":"tail","nativeSrc":"2011:4:66","nodeType":"YulIdentifier","src":"2011:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2053:9:66","nodeType":"YulIdentifier","src":"2053:9:66"},{"arguments":[{"name":"value0","nativeSrc":"2068:6:66","nodeType":"YulIdentifier","src":"2068:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2084:3:66","nodeType":"YulLiteral","src":"2084:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"2089:1:66","nodeType":"YulLiteral","src":"2089:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2080:3:66","nodeType":"YulIdentifier","src":"2080:3:66"},"nativeSrc":"2080:11:66","nodeType":"YulFunctionCall","src":"2080:11:66"},{"kind":"number","nativeSrc":"2093:1:66","nodeType":"YulLiteral","src":"2093:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2076:3:66","nodeType":"YulIdentifier","src":"2076:3:66"},"nativeSrc":"2076:19:66","nodeType":"YulFunctionCall","src":"2076:19:66"}],"functionName":{"name":"and","nativeSrc":"2064:3:66","nodeType":"YulIdentifier","src":"2064:3:66"},"nativeSrc":"2064:32:66","nodeType":"YulFunctionCall","src":"2064:32:66"}],"functionName":{"name":"mstore","nativeSrc":"2046:6:66","nodeType":"YulIdentifier","src":"2046:6:66"},"nativeSrc":"2046:51:66","nodeType":"YulFunctionCall","src":"2046:51:66"},"nativeSrc":"2046:51:66","nodeType":"YulExpressionStatement","src":"2046:51:66"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1900:203:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1970:9:66","nodeType":"YulTypedName","src":"1970:9:66","type":""},{"name":"value0","nativeSrc":"1981:6:66","nodeType":"YulTypedName","src":"1981:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1992:4:66","nodeType":"YulTypedName","src":"1992:4:66","type":""}],"src":"1900:203:66"},{"body":{"nativeSrc":"2140:95:66","nodeType":"YulBlock","src":"2140:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2157:1:66","nodeType":"YulLiteral","src":"2157:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"2164:3:66","nodeType":"YulLiteral","src":"2164:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"2169:10:66","nodeType":"YulLiteral","src":"2169:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"2160:3:66","nodeType":"YulIdentifier","src":"2160:3:66"},"nativeSrc":"2160:20:66","nodeType":"YulFunctionCall","src":"2160:20:66"}],"functionName":{"name":"mstore","nativeSrc":"2150:6:66","nodeType":"YulIdentifier","src":"2150:6:66"},"nativeSrc":"2150:31:66","nodeType":"YulFunctionCall","src":"2150:31:66"},"nativeSrc":"2150:31:66","nodeType":"YulExpressionStatement","src":"2150:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2197:1:66","nodeType":"YulLiteral","src":"2197:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"2200:4:66","nodeType":"YulLiteral","src":"2200:4:66","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"2190:6:66","nodeType":"YulIdentifier","src":"2190:6:66"},"nativeSrc":"2190:15:66","nodeType":"YulFunctionCall","src":"2190:15:66"},"nativeSrc":"2190:15:66","nodeType":"YulExpressionStatement","src":"2190:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2221:1:66","nodeType":"YulLiteral","src":"2221:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"2224:4:66","nodeType":"YulLiteral","src":"2224:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"2214:6:66","nodeType":"YulIdentifier","src":"2214:6:66"},"nativeSrc":"2214:15:66","nodeType":"YulFunctionCall","src":"2214:15:66"},"nativeSrc":"2214:15:66","nodeType":"YulExpressionStatement","src":"2214:15:66"}]},"name":"panic_error_0x11","nativeSrc":"2108:127:66","nodeType":"YulFunctionDefinition","src":"2108:127:66"},{"body":{"nativeSrc":"2287:104:66","nodeType":"YulBlock","src":"2287:104:66","statements":[{"nativeSrc":"2297:39:66","nodeType":"YulAssignment","src":"2297:39:66","value":{"arguments":[{"arguments":[{"name":"x","nativeSrc":"2313:1:66","nodeType":"YulIdentifier","src":"2313:1:66"},{"kind":"number","nativeSrc":"2316:4:66","nodeType":"YulLiteral","src":"2316:4:66","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2309:3:66","nodeType":"YulIdentifier","src":"2309:3:66"},"nativeSrc":"2309:12:66","nodeType":"YulFunctionCall","src":"2309:12:66"},{"arguments":[{"name":"y","nativeSrc":"2327:1:66","nodeType":"YulIdentifier","src":"2327:1:66"},{"kind":"number","nativeSrc":"2330:4:66","nodeType":"YulLiteral","src":"2330:4:66","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"2323:3:66","nodeType":"YulIdentifier","src":"2323:3:66"},"nativeSrc":"2323:12:66","nodeType":"YulFunctionCall","src":"2323:12:66"}],"functionName":{"name":"sub","nativeSrc":"2305:3:66","nodeType":"YulIdentifier","src":"2305:3:66"},"nativeSrc":"2305:31:66","nodeType":"YulFunctionCall","src":"2305:31:66"},"variableNames":[{"name":"diff","nativeSrc":"2297:4:66","nodeType":"YulIdentifier","src":"2297:4:66"}]},{"body":{"nativeSrc":"2363:22:66","nodeType":"YulBlock","src":"2363:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"2365:16:66","nodeType":"YulIdentifier","src":"2365:16:66"},"nativeSrc":"2365:18:66","nodeType":"YulFunctionCall","src":"2365:18:66"},"nativeSrc":"2365:18:66","nodeType":"YulExpressionStatement","src":"2365:18:66"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"2351:4:66","nodeType":"YulIdentifier","src":"2351:4:66"},{"kind":"number","nativeSrc":"2357:4:66","nodeType":"YulLiteral","src":"2357:4:66","type":"","value":"0xff"}],"functionName":{"name":"gt","nativeSrc":"2348:2:66","nodeType":"YulIdentifier","src":"2348:2:66"},"nativeSrc":"2348:14:66","nodeType":"YulFunctionCall","src":"2348:14:66"},"nativeSrc":"2345:40:66","nodeType":"YulIf","src":"2345:40:66"}]},"name":"checked_sub_t_uint8","nativeSrc":"2240:151:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"2269:1:66","nodeType":"YulTypedName","src":"2269:1:66","type":""},{"name":"y","nativeSrc":"2272:1:66","nodeType":"YulTypedName","src":"2272:1:66","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"2278:4:66","nodeType":"YulTypedName","src":"2278:4:66","type":""}],"src":"2240:151:66"},{"body":{"nativeSrc":"2465:306:66","nodeType":"YulBlock","src":"2465:306:66","statements":[{"nativeSrc":"2475:10:66","nodeType":"YulAssignment","src":"2475:10:66","value":{"kind":"number","nativeSrc":"2484:1:66","nodeType":"YulLiteral","src":"2484:1:66","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"2475:5:66","nodeType":"YulIdentifier","src":"2475:5:66"}]},{"nativeSrc":"2494:13:66","nodeType":"YulAssignment","src":"2494:13:66","value":{"name":"_base","nativeSrc":"2502:5:66","nodeType":"YulIdentifier","src":"2502:5:66"},"variableNames":[{"name":"base","nativeSrc":"2494:4:66","nodeType":"YulIdentifier","src":"2494:4:66"}]},{"body":{"nativeSrc":"2552:213:66","nodeType":"YulBlock","src":"2552:213:66","statements":[{"body":{"nativeSrc":"2594:22:66","nodeType":"YulBlock","src":"2594:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"2596:16:66","nodeType":"YulIdentifier","src":"2596:16:66"},"nativeSrc":"2596:18:66","nodeType":"YulFunctionCall","src":"2596:18:66"},"nativeSrc":"2596:18:66","nodeType":"YulExpressionStatement","src":"2596:18:66"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"2572:4:66","nodeType":"YulIdentifier","src":"2572:4:66"},{"arguments":[{"name":"max","nativeSrc":"2582:3:66","nodeType":"YulIdentifier","src":"2582:3:66"},{"name":"base","nativeSrc":"2587:4:66","nodeType":"YulIdentifier","src":"2587:4:66"}],"functionName":{"name":"div","nativeSrc":"2578:3:66","nodeType":"YulIdentifier","src":"2578:3:66"},"nativeSrc":"2578:14:66","nodeType":"YulFunctionCall","src":"2578:14:66"}],"functionName":{"name":"gt","nativeSrc":"2569:2:66","nodeType":"YulIdentifier","src":"2569:2:66"},"nativeSrc":"2569:24:66","nodeType":"YulFunctionCall","src":"2569:24:66"},"nativeSrc":"2566:50:66","nodeType":"YulIf","src":"2566:50:66"},{"body":{"nativeSrc":"2649:29:66","nodeType":"YulBlock","src":"2649:29:66","statements":[{"nativeSrc":"2651:25:66","nodeType":"YulAssignment","src":"2651:25:66","value":{"arguments":[{"name":"power","nativeSrc":"2664:5:66","nodeType":"YulIdentifier","src":"2664:5:66"},{"name":"base","nativeSrc":"2671:4:66","nodeType":"YulIdentifier","src":"2671:4:66"}],"functionName":{"name":"mul","nativeSrc":"2660:3:66","nodeType":"YulIdentifier","src":"2660:3:66"},"nativeSrc":"2660:16:66","nodeType":"YulFunctionCall","src":"2660:16:66"},"variableNames":[{"name":"power","nativeSrc":"2651:5:66","nodeType":"YulIdentifier","src":"2651:5:66"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"2636:8:66","nodeType":"YulIdentifier","src":"2636:8:66"},{"kind":"number","nativeSrc":"2646:1:66","nodeType":"YulLiteral","src":"2646:1:66","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"2632:3:66","nodeType":"YulIdentifier","src":"2632:3:66"},"nativeSrc":"2632:16:66","nodeType":"YulFunctionCall","src":"2632:16:66"},"nativeSrc":"2629:49:66","nodeType":"YulIf","src":"2629:49:66"},{"nativeSrc":"2691:23:66","nodeType":"YulAssignment","src":"2691:23:66","value":{"arguments":[{"name":"base","nativeSrc":"2703:4:66","nodeType":"YulIdentifier","src":"2703:4:66"},{"name":"base","nativeSrc":"2709:4:66","nodeType":"YulIdentifier","src":"2709:4:66"}],"functionName":{"name":"mul","nativeSrc":"2699:3:66","nodeType":"YulIdentifier","src":"2699:3:66"},"nativeSrc":"2699:15:66","nodeType":"YulFunctionCall","src":"2699:15:66"},"variableNames":[{"name":"base","nativeSrc":"2691:4:66","nodeType":"YulIdentifier","src":"2691:4:66"}]},{"nativeSrc":"2727:28:66","nodeType":"YulAssignment","src":"2727:28:66","value":{"arguments":[{"kind":"number","nativeSrc":"2743:1:66","nodeType":"YulLiteral","src":"2743:1:66","type":"","value":"1"},{"name":"exponent","nativeSrc":"2746:8:66","nodeType":"YulIdentifier","src":"2746:8:66"}],"functionName":{"name":"shr","nativeSrc":"2739:3:66","nodeType":"YulIdentifier","src":"2739:3:66"},"nativeSrc":"2739:16:66","nodeType":"YulFunctionCall","src":"2739:16:66"},"variableNames":[{"name":"exponent","nativeSrc":"2727:8:66","nodeType":"YulIdentifier","src":"2727:8:66"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"2527:8:66","nodeType":"YulIdentifier","src":"2527:8:66"},{"kind":"number","nativeSrc":"2537:1:66","nodeType":"YulLiteral","src":"2537:1:66","type":"","value":"1"}],"functionName":{"name":"gt","nativeSrc":"2524:2:66","nodeType":"YulIdentifier","src":"2524:2:66"},"nativeSrc":"2524:15:66","nodeType":"YulFunctionCall","src":"2524:15:66"},"nativeSrc":"2516:249:66","nodeType":"YulForLoop","post":{"nativeSrc":"2540:3:66","nodeType":"YulBlock","src":"2540:3:66","statements":[]},"pre":{"nativeSrc":"2520:3:66","nodeType":"YulBlock","src":"2520:3:66","statements":[]},"src":"2516:249:66"}]},"name":"checked_exp_helper","nativeSrc":"2396:375:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"2424:5:66","nodeType":"YulTypedName","src":"2424:5:66","type":""},{"name":"exponent","nativeSrc":"2431:8:66","nodeType":"YulTypedName","src":"2431:8:66","type":""},{"name":"max","nativeSrc":"2441:3:66","nodeType":"YulTypedName","src":"2441:3:66","type":""}],"returnVariables":[{"name":"power","nativeSrc":"2449:5:66","nodeType":"YulTypedName","src":"2449:5:66","type":""},{"name":"base","nativeSrc":"2456:4:66","nodeType":"YulTypedName","src":"2456:4:66","type":""}],"src":"2396:375:66"},{"body":{"nativeSrc":"2835:843:66","nodeType":"YulBlock","src":"2835:843:66","statements":[{"body":{"nativeSrc":"2873:52:66","nodeType":"YulBlock","src":"2873:52:66","statements":[{"nativeSrc":"2887:10:66","nodeType":"YulAssignment","src":"2887:10:66","value":{"kind":"number","nativeSrc":"2896:1:66","nodeType":"YulLiteral","src":"2896:1:66","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"2887:5:66","nodeType":"YulIdentifier","src":"2887:5:66"}]},{"nativeSrc":"2910:5:66","nodeType":"YulLeave","src":"2910:5:66"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"2855:8:66","nodeType":"YulIdentifier","src":"2855:8:66"}],"functionName":{"name":"iszero","nativeSrc":"2848:6:66","nodeType":"YulIdentifier","src":"2848:6:66"},"nativeSrc":"2848:16:66","nodeType":"YulFunctionCall","src":"2848:16:66"},"nativeSrc":"2845:80:66","nodeType":"YulIf","src":"2845:80:66"},{"body":{"nativeSrc":"2958:52:66","nodeType":"YulBlock","src":"2958:52:66","statements":[{"nativeSrc":"2972:10:66","nodeType":"YulAssignment","src":"2972:10:66","value":{"kind":"number","nativeSrc":"2981:1:66","nodeType":"YulLiteral","src":"2981:1:66","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"2972:5:66","nodeType":"YulIdentifier","src":"2972:5:66"}]},{"nativeSrc":"2995:5:66","nodeType":"YulLeave","src":"2995:5:66"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"2944:4:66","nodeType":"YulIdentifier","src":"2944:4:66"}],"functionName":{"name":"iszero","nativeSrc":"2937:6:66","nodeType":"YulIdentifier","src":"2937:6:66"},"nativeSrc":"2937:12:66","nodeType":"YulFunctionCall","src":"2937:12:66"},"nativeSrc":"2934:76:66","nodeType":"YulIf","src":"2934:76:66"},{"cases":[{"body":{"nativeSrc":"3046:52:66","nodeType":"YulBlock","src":"3046:52:66","statements":[{"nativeSrc":"3060:10:66","nodeType":"YulAssignment","src":"3060:10:66","value":{"kind":"number","nativeSrc":"3069:1:66","nodeType":"YulLiteral","src":"3069:1:66","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"3060:5:66","nodeType":"YulIdentifier","src":"3060:5:66"}]},{"nativeSrc":"3083:5:66","nodeType":"YulLeave","src":"3083:5:66"}]},"nativeSrc":"3039:59:66","nodeType":"YulCase","src":"3039:59:66","value":{"kind":"number","nativeSrc":"3044:1:66","nodeType":"YulLiteral","src":"3044:1:66","type":"","value":"1"}},{"body":{"nativeSrc":"3114:167:66","nodeType":"YulBlock","src":"3114:167:66","statements":[{"body":{"nativeSrc":"3149:22:66","nodeType":"YulBlock","src":"3149:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"3151:16:66","nodeType":"YulIdentifier","src":"3151:16:66"},"nativeSrc":"3151:18:66","nodeType":"YulFunctionCall","src":"3151:18:66"},"nativeSrc":"3151:18:66","nodeType":"YulExpressionStatement","src":"3151:18:66"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"3134:8:66","nodeType":"YulIdentifier","src":"3134:8:66"},{"kind":"number","nativeSrc":"3144:3:66","nodeType":"YulLiteral","src":"3144:3:66","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"3131:2:66","nodeType":"YulIdentifier","src":"3131:2:66"},"nativeSrc":"3131:17:66","nodeType":"YulFunctionCall","src":"3131:17:66"},"nativeSrc":"3128:43:66","nodeType":"YulIf","src":"3128:43:66"},{"nativeSrc":"3184:25:66","nodeType":"YulAssignment","src":"3184:25:66","value":{"arguments":[{"name":"exponent","nativeSrc":"3197:8:66","nodeType":"YulIdentifier","src":"3197:8:66"},{"kind":"number","nativeSrc":"3207:1:66","nodeType":"YulLiteral","src":"3207:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3193:3:66","nodeType":"YulIdentifier","src":"3193:3:66"},"nativeSrc":"3193:16:66","nodeType":"YulFunctionCall","src":"3193:16:66"},"variableNames":[{"name":"power","nativeSrc":"3184:5:66","nodeType":"YulIdentifier","src":"3184:5:66"}]},{"nativeSrc":"3222:11:66","nodeType":"YulVariableDeclaration","src":"3222:11:66","value":{"kind":"number","nativeSrc":"3232:1:66","nodeType":"YulLiteral","src":"3232:1:66","type":"","value":"0"},"variables":[{"name":"_1","nativeSrc":"3226:2:66","nodeType":"YulTypedName","src":"3226:2:66","type":""}]},{"nativeSrc":"3246:7:66","nodeType":"YulAssignment","src":"3246:7:66","value":{"kind":"number","nativeSrc":"3252:1:66","nodeType":"YulLiteral","src":"3252:1:66","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"3246:2:66","nodeType":"YulIdentifier","src":"3246:2:66"}]},{"nativeSrc":"3266:5:66","nodeType":"YulLeave","src":"3266:5:66"}]},"nativeSrc":"3107:174:66","nodeType":"YulCase","src":"3107:174:66","value":{"kind":"number","nativeSrc":"3112:1:66","nodeType":"YulLiteral","src":"3112:1:66","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"3026:4:66","nodeType":"YulIdentifier","src":"3026:4:66"},"nativeSrc":"3019:262:66","nodeType":"YulSwitch","src":"3019:262:66"},{"body":{"nativeSrc":"3379:114:66","nodeType":"YulBlock","src":"3379:114:66","statements":[{"nativeSrc":"3393:28:66","nodeType":"YulAssignment","src":"3393:28:66","value":{"arguments":[{"name":"base","nativeSrc":"3406:4:66","nodeType":"YulIdentifier","src":"3406:4:66"},{"name":"exponent","nativeSrc":"3412:8:66","nodeType":"YulIdentifier","src":"3412:8:66"}],"functionName":{"name":"exp","nativeSrc":"3402:3:66","nodeType":"YulIdentifier","src":"3402:3:66"},"nativeSrc":"3402:19:66","nodeType":"YulFunctionCall","src":"3402:19:66"},"variableNames":[{"name":"power","nativeSrc":"3393:5:66","nodeType":"YulIdentifier","src":"3393:5:66"}]},{"nativeSrc":"3434:11:66","nodeType":"YulVariableDeclaration","src":"3434:11:66","value":{"kind":"number","nativeSrc":"3444:1:66","nodeType":"YulLiteral","src":"3444:1:66","type":"","value":"0"},"variables":[{"name":"_2","nativeSrc":"3438:2:66","nodeType":"YulTypedName","src":"3438:2:66","type":""}]},{"nativeSrc":"3458:7:66","nodeType":"YulAssignment","src":"3458:7:66","value":{"kind":"number","nativeSrc":"3464:1:66","nodeType":"YulLiteral","src":"3464:1:66","type":"","value":"0"},"variableNames":[{"name":"_2","nativeSrc":"3458:2:66","nodeType":"YulIdentifier","src":"3458:2:66"}]},{"nativeSrc":"3478:5:66","nodeType":"YulLeave","src":"3478:5:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"3303:4:66","nodeType":"YulIdentifier","src":"3303:4:66"},{"kind":"number","nativeSrc":"3309:2:66","nodeType":"YulLiteral","src":"3309:2:66","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"3300:2:66","nodeType":"YulIdentifier","src":"3300:2:66"},"nativeSrc":"3300:12:66","nodeType":"YulFunctionCall","src":"3300:12:66"},{"arguments":[{"name":"exponent","nativeSrc":"3317:8:66","nodeType":"YulIdentifier","src":"3317:8:66"},{"kind":"number","nativeSrc":"3327:2:66","nodeType":"YulLiteral","src":"3327:2:66","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"3314:2:66","nodeType":"YulIdentifier","src":"3314:2:66"},"nativeSrc":"3314:16:66","nodeType":"YulFunctionCall","src":"3314:16:66"}],"functionName":{"name":"and","nativeSrc":"3296:3:66","nodeType":"YulIdentifier","src":"3296:3:66"},"nativeSrc":"3296:35:66","nodeType":"YulFunctionCall","src":"3296:35:66"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"3340:4:66","nodeType":"YulIdentifier","src":"3340:4:66"},{"kind":"number","nativeSrc":"3346:3:66","nodeType":"YulLiteral","src":"3346:3:66","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"3337:2:66","nodeType":"YulIdentifier","src":"3337:2:66"},"nativeSrc":"3337:13:66","nodeType":"YulFunctionCall","src":"3337:13:66"},{"arguments":[{"name":"exponent","nativeSrc":"3355:8:66","nodeType":"YulIdentifier","src":"3355:8:66"},{"kind":"number","nativeSrc":"3365:2:66","nodeType":"YulLiteral","src":"3365:2:66","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"3352:2:66","nodeType":"YulIdentifier","src":"3352:2:66"},"nativeSrc":"3352:16:66","nodeType":"YulFunctionCall","src":"3352:16:66"}],"functionName":{"name":"and","nativeSrc":"3333:3:66","nodeType":"YulIdentifier","src":"3333:3:66"},"nativeSrc":"3333:36:66","nodeType":"YulFunctionCall","src":"3333:36:66"}],"functionName":{"name":"or","nativeSrc":"3293:2:66","nodeType":"YulIdentifier","src":"3293:2:66"},"nativeSrc":"3293:77:66","nodeType":"YulFunctionCall","src":"3293:77:66"},"nativeSrc":"3290:203:66","nodeType":"YulIf","src":"3290:203:66"},{"nativeSrc":"3502:65:66","nodeType":"YulVariableDeclaration","src":"3502:65:66","value":{"arguments":[{"name":"base","nativeSrc":"3544:4:66","nodeType":"YulIdentifier","src":"3544:4:66"},{"name":"exponent","nativeSrc":"3550:8:66","nodeType":"YulIdentifier","src":"3550:8:66"},{"arguments":[{"kind":"number","nativeSrc":"3564:1:66","nodeType":"YulLiteral","src":"3564:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"3560:3:66","nodeType":"YulIdentifier","src":"3560:3:66"},"nativeSrc":"3560:6:66","nodeType":"YulFunctionCall","src":"3560:6:66"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"3525:18:66","nodeType":"YulIdentifier","src":"3525:18:66"},"nativeSrc":"3525:42:66","nodeType":"YulFunctionCall","src":"3525:42:66"},"variables":[{"name":"power_1","nativeSrc":"3506:7:66","nodeType":"YulTypedName","src":"3506:7:66","type":""},{"name":"base_1","nativeSrc":"3515:6:66","nodeType":"YulTypedName","src":"3515:6:66","type":""}]},{"body":{"nativeSrc":"3612:22:66","nodeType":"YulBlock","src":"3612:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"3614:16:66","nodeType":"YulIdentifier","src":"3614:16:66"},"nativeSrc":"3614:18:66","nodeType":"YulFunctionCall","src":"3614:18:66"},"nativeSrc":"3614:18:66","nodeType":"YulExpressionStatement","src":"3614:18:66"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"3582:7:66","nodeType":"YulIdentifier","src":"3582:7:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3599:1:66","nodeType":"YulLiteral","src":"3599:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"3595:3:66","nodeType":"YulIdentifier","src":"3595:3:66"},"nativeSrc":"3595:6:66","nodeType":"YulFunctionCall","src":"3595:6:66"},{"name":"base_1","nativeSrc":"3603:6:66","nodeType":"YulIdentifier","src":"3603:6:66"}],"functionName":{"name":"div","nativeSrc":"3591:3:66","nodeType":"YulIdentifier","src":"3591:3:66"},"nativeSrc":"3591:19:66","nodeType":"YulFunctionCall","src":"3591:19:66"}],"functionName":{"name":"gt","nativeSrc":"3579:2:66","nodeType":"YulIdentifier","src":"3579:2:66"},"nativeSrc":"3579:32:66","nodeType":"YulFunctionCall","src":"3579:32:66"},"nativeSrc":"3576:58:66","nodeType":"YulIf","src":"3576:58:66"},{"nativeSrc":"3643:29:66","nodeType":"YulAssignment","src":"3643:29:66","value":{"arguments":[{"name":"power_1","nativeSrc":"3656:7:66","nodeType":"YulIdentifier","src":"3656:7:66"},{"name":"base_1","nativeSrc":"3665:6:66","nodeType":"YulIdentifier","src":"3665:6:66"}],"functionName":{"name":"mul","nativeSrc":"3652:3:66","nodeType":"YulIdentifier","src":"3652:3:66"},"nativeSrc":"3652:20:66","nodeType":"YulFunctionCall","src":"3652:20:66"},"variableNames":[{"name":"power","nativeSrc":"3643:5:66","nodeType":"YulIdentifier","src":"3643:5:66"}]}]},"name":"checked_exp_unsigned","nativeSrc":"2776:902:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"2806:4:66","nodeType":"YulTypedName","src":"2806:4:66","type":""},{"name":"exponent","nativeSrc":"2812:8:66","nodeType":"YulTypedName","src":"2812:8:66","type":""}],"returnVariables":[{"name":"power","nativeSrc":"2825:5:66","nodeType":"YulTypedName","src":"2825:5:66","type":""}],"src":"2776:902:66"},{"body":{"nativeSrc":"3751:72:66","nodeType":"YulBlock","src":"3751:72:66","statements":[{"nativeSrc":"3761:56:66","nodeType":"YulAssignment","src":"3761:56:66","value":{"arguments":[{"name":"base","nativeSrc":"3791:4:66","nodeType":"YulIdentifier","src":"3791:4:66"},{"arguments":[{"name":"exponent","nativeSrc":"3801:8:66","nodeType":"YulIdentifier","src":"3801:8:66"},{"kind":"number","nativeSrc":"3811:4:66","nodeType":"YulLiteral","src":"3811:4:66","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"3797:3:66","nodeType":"YulIdentifier","src":"3797:3:66"},"nativeSrc":"3797:19:66","nodeType":"YulFunctionCall","src":"3797:19:66"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"3770:20:66","nodeType":"YulIdentifier","src":"3770:20:66"},"nativeSrc":"3770:47:66","nodeType":"YulFunctionCall","src":"3770:47:66"},"variableNames":[{"name":"power","nativeSrc":"3761:5:66","nodeType":"YulIdentifier","src":"3761:5:66"}]}]},"name":"checked_exp_t_uint256_t_uint8","nativeSrc":"3683:140:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"3722:4:66","nodeType":"YulTypedName","src":"3722:4:66","type":""},{"name":"exponent","nativeSrc":"3728:8:66","nodeType":"YulTypedName","src":"3728:8:66","type":""}],"returnVariables":[{"name":"power","nativeSrc":"3741:5:66","nodeType":"YulTypedName","src":"3741:5:66","type":""}],"src":"3683:140:66"},{"body":{"nativeSrc":"3883:325:66","nodeType":"YulBlock","src":"3883:325:66","statements":[{"nativeSrc":"3893:22:66","nodeType":"YulAssignment","src":"3893:22:66","value":{"arguments":[{"kind":"number","nativeSrc":"3907:1:66","nodeType":"YulLiteral","src":"3907:1:66","type":"","value":"1"},{"name":"data","nativeSrc":"3910:4:66","nodeType":"YulIdentifier","src":"3910:4:66"}],"functionName":{"name":"shr","nativeSrc":"3903:3:66","nodeType":"YulIdentifier","src":"3903:3:66"},"nativeSrc":"3903:12:66","nodeType":"YulFunctionCall","src":"3903:12:66"},"variableNames":[{"name":"length","nativeSrc":"3893:6:66","nodeType":"YulIdentifier","src":"3893:6:66"}]},{"nativeSrc":"3924:38:66","nodeType":"YulVariableDeclaration","src":"3924:38:66","value":{"arguments":[{"name":"data","nativeSrc":"3954:4:66","nodeType":"YulIdentifier","src":"3954:4:66"},{"kind":"number","nativeSrc":"3960:1:66","nodeType":"YulLiteral","src":"3960:1:66","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"3950:3:66","nodeType":"YulIdentifier","src":"3950:3:66"},"nativeSrc":"3950:12:66","nodeType":"YulFunctionCall","src":"3950:12:66"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"3928:18:66","nodeType":"YulTypedName","src":"3928:18:66","type":""}]},{"body":{"nativeSrc":"4001:31:66","nodeType":"YulBlock","src":"4001:31:66","statements":[{"nativeSrc":"4003:27:66","nodeType":"YulAssignment","src":"4003:27:66","value":{"arguments":[{"name":"length","nativeSrc":"4017:6:66","nodeType":"YulIdentifier","src":"4017:6:66"},{"kind":"number","nativeSrc":"4025:4:66","nodeType":"YulLiteral","src":"4025:4:66","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"4013:3:66","nodeType":"YulIdentifier","src":"4013:3:66"},"nativeSrc":"4013:17:66","nodeType":"YulFunctionCall","src":"4013:17:66"},"variableNames":[{"name":"length","nativeSrc":"4003:6:66","nodeType":"YulIdentifier","src":"4003:6:66"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"3981:18:66","nodeType":"YulIdentifier","src":"3981:18:66"}],"functionName":{"name":"iszero","nativeSrc":"3974:6:66","nodeType":"YulIdentifier","src":"3974:6:66"},"nativeSrc":"3974:26:66","nodeType":"YulFunctionCall","src":"3974:26:66"},"nativeSrc":"3971:61:66","nodeType":"YulIf","src":"3971:61:66"},{"body":{"nativeSrc":"4091:111:66","nodeType":"YulBlock","src":"4091:111:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4112:1:66","nodeType":"YulLiteral","src":"4112:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"4119:3:66","nodeType":"YulLiteral","src":"4119:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"4124:10:66","nodeType":"YulLiteral","src":"4124:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"4115:3:66","nodeType":"YulIdentifier","src":"4115:3:66"},"nativeSrc":"4115:20:66","nodeType":"YulFunctionCall","src":"4115:20:66"}],"functionName":{"name":"mstore","nativeSrc":"4105:6:66","nodeType":"YulIdentifier","src":"4105:6:66"},"nativeSrc":"4105:31:66","nodeType":"YulFunctionCall","src":"4105:31:66"},"nativeSrc":"4105:31:66","nodeType":"YulExpressionStatement","src":"4105:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4156:1:66","nodeType":"YulLiteral","src":"4156:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"4159:4:66","nodeType":"YulLiteral","src":"4159:4:66","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"4149:6:66","nodeType":"YulIdentifier","src":"4149:6:66"},"nativeSrc":"4149:15:66","nodeType":"YulFunctionCall","src":"4149:15:66"},"nativeSrc":"4149:15:66","nodeType":"YulExpressionStatement","src":"4149:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4184:1:66","nodeType":"YulLiteral","src":"4184:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4187:4:66","nodeType":"YulLiteral","src":"4187:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"4177:6:66","nodeType":"YulIdentifier","src":"4177:6:66"},"nativeSrc":"4177:15:66","nodeType":"YulFunctionCall","src":"4177:15:66"},"nativeSrc":"4177:15:66","nodeType":"YulExpressionStatement","src":"4177:15:66"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"4047:18:66","nodeType":"YulIdentifier","src":"4047:18:66"},{"arguments":[{"name":"length","nativeSrc":"4070:6:66","nodeType":"YulIdentifier","src":"4070:6:66"},{"kind":"number","nativeSrc":"4078:2:66","nodeType":"YulLiteral","src":"4078:2:66","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"4067:2:66","nodeType":"YulIdentifier","src":"4067:2:66"},"nativeSrc":"4067:14:66","nodeType":"YulFunctionCall","src":"4067:14:66"}],"functionName":{"name":"eq","nativeSrc":"4044:2:66","nodeType":"YulIdentifier","src":"4044:2:66"},"nativeSrc":"4044:38:66","nodeType":"YulFunctionCall","src":"4044:38:66"},"nativeSrc":"4041:161:66","nodeType":"YulIf","src":"4041:161:66"}]},"name":"extract_byte_array_length","nativeSrc":"3828:380:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"3863:4:66","nodeType":"YulTypedName","src":"3863:4:66","type":""}],"returnVariables":[{"name":"length","nativeSrc":"3872:6:66","nodeType":"YulTypedName","src":"3872:6:66","type":""}],"src":"3828:380:66"},{"body":{"nativeSrc":"4269:65:66","nodeType":"YulBlock","src":"4269:65:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4286:1:66","nodeType":"YulLiteral","src":"4286:1:66","type":"","value":"0"},{"name":"ptr","nativeSrc":"4289:3:66","nodeType":"YulIdentifier","src":"4289:3:66"}],"functionName":{"name":"mstore","nativeSrc":"4279:6:66","nodeType":"YulIdentifier","src":"4279:6:66"},"nativeSrc":"4279:14:66","nodeType":"YulFunctionCall","src":"4279:14:66"},"nativeSrc":"4279:14:66","nodeType":"YulExpressionStatement","src":"4279:14:66"},{"nativeSrc":"4302:26:66","nodeType":"YulAssignment","src":"4302:26:66","value":{"arguments":[{"kind":"number","nativeSrc":"4320:1:66","nodeType":"YulLiteral","src":"4320:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4323:4:66","nodeType":"YulLiteral","src":"4323:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"4310:9:66","nodeType":"YulIdentifier","src":"4310:9:66"},"nativeSrc":"4310:18:66","nodeType":"YulFunctionCall","src":"4310:18:66"},"variableNames":[{"name":"data","nativeSrc":"4302:4:66","nodeType":"YulIdentifier","src":"4302:4:66"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"4213:121:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"4252:3:66","nodeType":"YulTypedName","src":"4252:3:66","type":""}],"returnVariables":[{"name":"data","nativeSrc":"4260:4:66","nodeType":"YulTypedName","src":"4260:4:66","type":""}],"src":"4213:121:66"},{"body":{"nativeSrc":"4420:437:66","nodeType":"YulBlock","src":"4420:437:66","statements":[{"body":{"nativeSrc":"4453:398:66","nodeType":"YulBlock","src":"4453:398:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4474:1:66","nodeType":"YulLiteral","src":"4474:1:66","type":"","value":"0"},{"name":"array","nativeSrc":"4477:5:66","nodeType":"YulIdentifier","src":"4477:5:66"}],"functionName":{"name":"mstore","nativeSrc":"4467:6:66","nodeType":"YulIdentifier","src":"4467:6:66"},"nativeSrc":"4467:16:66","nodeType":"YulFunctionCall","src":"4467:16:66"},"nativeSrc":"4467:16:66","nodeType":"YulExpressionStatement","src":"4467:16:66"},{"nativeSrc":"4496:30:66","nodeType":"YulVariableDeclaration","src":"4496:30:66","value":{"arguments":[{"kind":"number","nativeSrc":"4518:1:66","nodeType":"YulLiteral","src":"4518:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4521:4:66","nodeType":"YulLiteral","src":"4521:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"4508:9:66","nodeType":"YulIdentifier","src":"4508:9:66"},"nativeSrc":"4508:18:66","nodeType":"YulFunctionCall","src":"4508:18:66"},"variables":[{"name":"data","nativeSrc":"4500:4:66","nodeType":"YulTypedName","src":"4500:4:66","type":""}]},{"nativeSrc":"4539:57:66","nodeType":"YulVariableDeclaration","src":"4539:57:66","value":{"arguments":[{"name":"data","nativeSrc":"4562:4:66","nodeType":"YulIdentifier","src":"4562:4:66"},{"arguments":[{"kind":"number","nativeSrc":"4572:1:66","nodeType":"YulLiteral","src":"4572:1:66","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"4579:10:66","nodeType":"YulIdentifier","src":"4579:10:66"},{"kind":"number","nativeSrc":"4591:2:66","nodeType":"YulLiteral","src":"4591:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"4575:3:66","nodeType":"YulIdentifier","src":"4575:3:66"},"nativeSrc":"4575:19:66","nodeType":"YulFunctionCall","src":"4575:19:66"}],"functionName":{"name":"shr","nativeSrc":"4568:3:66","nodeType":"YulIdentifier","src":"4568:3:66"},"nativeSrc":"4568:27:66","nodeType":"YulFunctionCall","src":"4568:27:66"}],"functionName":{"name":"add","nativeSrc":"4558:3:66","nodeType":"YulIdentifier","src":"4558:3:66"},"nativeSrc":"4558:38:66","nodeType":"YulFunctionCall","src":"4558:38:66"},"variables":[{"name":"deleteStart","nativeSrc":"4543:11:66","nodeType":"YulTypedName","src":"4543:11:66","type":""}]},{"body":{"nativeSrc":"4633:23:66","nodeType":"YulBlock","src":"4633:23:66","statements":[{"nativeSrc":"4635:19:66","nodeType":"YulAssignment","src":"4635:19:66","value":{"name":"data","nativeSrc":"4650:4:66","nodeType":"YulIdentifier","src":"4650:4:66"},"variableNames":[{"name":"deleteStart","nativeSrc":"4635:11:66","nodeType":"YulIdentifier","src":"4635:11:66"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"4615:10:66","nodeType":"YulIdentifier","src":"4615:10:66"},{"kind":"number","nativeSrc":"4627:4:66","nodeType":"YulLiteral","src":"4627:4:66","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"4612:2:66","nodeType":"YulIdentifier","src":"4612:2:66"},"nativeSrc":"4612:20:66","nodeType":"YulFunctionCall","src":"4612:20:66"},"nativeSrc":"4609:47:66","nodeType":"YulIf","src":"4609:47:66"},{"nativeSrc":"4669:41:66","nodeType":"YulVariableDeclaration","src":"4669:41:66","value":{"arguments":[{"name":"data","nativeSrc":"4683:4:66","nodeType":"YulIdentifier","src":"4683:4:66"},{"arguments":[{"kind":"number","nativeSrc":"4693:1:66","nodeType":"YulLiteral","src":"4693:1:66","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"4700:3:66","nodeType":"YulIdentifier","src":"4700:3:66"},{"kind":"number","nativeSrc":"4705:2:66","nodeType":"YulLiteral","src":"4705:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"4696:3:66","nodeType":"YulIdentifier","src":"4696:3:66"},"nativeSrc":"4696:12:66","nodeType":"YulFunctionCall","src":"4696:12:66"}],"functionName":{"name":"shr","nativeSrc":"4689:3:66","nodeType":"YulIdentifier","src":"4689:3:66"},"nativeSrc":"4689:20:66","nodeType":"YulFunctionCall","src":"4689:20:66"}],"functionName":{"name":"add","nativeSrc":"4679:3:66","nodeType":"YulIdentifier","src":"4679:3:66"},"nativeSrc":"4679:31:66","nodeType":"YulFunctionCall","src":"4679:31:66"},"variables":[{"name":"_1","nativeSrc":"4673:2:66","nodeType":"YulTypedName","src":"4673:2:66","type":""}]},{"nativeSrc":"4723:24:66","nodeType":"YulVariableDeclaration","src":"4723:24:66","value":{"name":"deleteStart","nativeSrc":"4736:11:66","nodeType":"YulIdentifier","src":"4736:11:66"},"variables":[{"name":"start","nativeSrc":"4727:5:66","nodeType":"YulTypedName","src":"4727:5:66","type":""}]},{"body":{"nativeSrc":"4821:20:66","nodeType":"YulBlock","src":"4821:20:66","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"4830:5:66","nodeType":"YulIdentifier","src":"4830:5:66"},{"kind":"number","nativeSrc":"4837:1:66","nodeType":"YulLiteral","src":"4837:1:66","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"4823:6:66","nodeType":"YulIdentifier","src":"4823:6:66"},"nativeSrc":"4823:16:66","nodeType":"YulFunctionCall","src":"4823:16:66"},"nativeSrc":"4823:16:66","nodeType":"YulExpressionStatement","src":"4823:16:66"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"4771:5:66","nodeType":"YulIdentifier","src":"4771:5:66"},{"name":"_1","nativeSrc":"4778:2:66","nodeType":"YulIdentifier","src":"4778:2:66"}],"functionName":{"name":"lt","nativeSrc":"4768:2:66","nodeType":"YulIdentifier","src":"4768:2:66"},"nativeSrc":"4768:13:66","nodeType":"YulFunctionCall","src":"4768:13:66"},"nativeSrc":"4760:81:66","nodeType":"YulForLoop","post":{"nativeSrc":"4782:26:66","nodeType":"YulBlock","src":"4782:26:66","statements":[{"nativeSrc":"4784:22:66","nodeType":"YulAssignment","src":"4784:22:66","value":{"arguments":[{"name":"start","nativeSrc":"4797:5:66","nodeType":"YulIdentifier","src":"4797:5:66"},{"kind":"number","nativeSrc":"4804:1:66","nodeType":"YulLiteral","src":"4804:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"4793:3:66","nodeType":"YulIdentifier","src":"4793:3:66"},"nativeSrc":"4793:13:66","nodeType":"YulFunctionCall","src":"4793:13:66"},"variableNames":[{"name":"start","nativeSrc":"4784:5:66","nodeType":"YulIdentifier","src":"4784:5:66"}]}]},"pre":{"nativeSrc":"4764:3:66","nodeType":"YulBlock","src":"4764:3:66","statements":[]},"src":"4760:81:66"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"4436:3:66","nodeType":"YulIdentifier","src":"4436:3:66"},{"kind":"number","nativeSrc":"4441:2:66","nodeType":"YulLiteral","src":"4441:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"4433:2:66","nodeType":"YulIdentifier","src":"4433:2:66"},"nativeSrc":"4433:11:66","nodeType":"YulFunctionCall","src":"4433:11:66"},"nativeSrc":"4430:421:66","nodeType":"YulIf","src":"4430:421:66"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"4339:518:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"4392:5:66","nodeType":"YulTypedName","src":"4392:5:66","type":""},{"name":"len","nativeSrc":"4399:3:66","nodeType":"YulTypedName","src":"4399:3:66","type":""},{"name":"startIndex","nativeSrc":"4404:10:66","nodeType":"YulTypedName","src":"4404:10:66","type":""}],"src":"4339:518:66"},{"body":{"nativeSrc":"4947:81:66","nodeType":"YulBlock","src":"4947:81:66","statements":[{"nativeSrc":"4957:65:66","nodeType":"YulAssignment","src":"4957:65:66","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"4972:4:66","nodeType":"YulIdentifier","src":"4972:4:66"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4990:1:66","nodeType":"YulLiteral","src":"4990:1:66","type":"","value":"3"},{"name":"len","nativeSrc":"4993:3:66","nodeType":"YulIdentifier","src":"4993:3:66"}],"functionName":{"name":"shl","nativeSrc":"4986:3:66","nodeType":"YulIdentifier","src":"4986:3:66"},"nativeSrc":"4986:11:66","nodeType":"YulFunctionCall","src":"4986:11:66"},{"arguments":[{"kind":"number","nativeSrc":"5003:1:66","nodeType":"YulLiteral","src":"5003:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"4999:3:66","nodeType":"YulIdentifier","src":"4999:3:66"},"nativeSrc":"4999:6:66","nodeType":"YulFunctionCall","src":"4999:6:66"}],"functionName":{"name":"shr","nativeSrc":"4982:3:66","nodeType":"YulIdentifier","src":"4982:3:66"},"nativeSrc":"4982:24:66","nodeType":"YulFunctionCall","src":"4982:24:66"}],"functionName":{"name":"not","nativeSrc":"4978:3:66","nodeType":"YulIdentifier","src":"4978:3:66"},"nativeSrc":"4978:29:66","nodeType":"YulFunctionCall","src":"4978:29:66"}],"functionName":{"name":"and","nativeSrc":"4968:3:66","nodeType":"YulIdentifier","src":"4968:3:66"},"nativeSrc":"4968:40:66","nodeType":"YulFunctionCall","src":"4968:40:66"},{"arguments":[{"kind":"number","nativeSrc":"5014:1:66","nodeType":"YulLiteral","src":"5014:1:66","type":"","value":"1"},{"name":"len","nativeSrc":"5017:3:66","nodeType":"YulIdentifier","src":"5017:3:66"}],"functionName":{"name":"shl","nativeSrc":"5010:3:66","nodeType":"YulIdentifier","src":"5010:3:66"},"nativeSrc":"5010:11:66","nodeType":"YulFunctionCall","src":"5010:11:66"}],"functionName":{"name":"or","nativeSrc":"4965:2:66","nodeType":"YulIdentifier","src":"4965:2:66"},"nativeSrc":"4965:57:66","nodeType":"YulFunctionCall","src":"4965:57:66"},"variableNames":[{"name":"used","nativeSrc":"4957:4:66","nodeType":"YulIdentifier","src":"4957:4:66"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"4862:166:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"4924:4:66","nodeType":"YulTypedName","src":"4924:4:66","type":""},{"name":"len","nativeSrc":"4930:3:66","nodeType":"YulTypedName","src":"4930:3:66","type":""}],"returnVariables":[{"name":"used","nativeSrc":"4938:4:66","nodeType":"YulTypedName","src":"4938:4:66","type":""}],"src":"4862:166:66"},{"body":{"nativeSrc":"5129:1203:66","nodeType":"YulBlock","src":"5129:1203:66","statements":[{"nativeSrc":"5139:24:66","nodeType":"YulVariableDeclaration","src":"5139:24:66","value":{"arguments":[{"name":"src","nativeSrc":"5159:3:66","nodeType":"YulIdentifier","src":"5159:3:66"}],"functionName":{"name":"mload","nativeSrc":"5153:5:66","nodeType":"YulIdentifier","src":"5153:5:66"},"nativeSrc":"5153:10:66","nodeType":"YulFunctionCall","src":"5153:10:66"},"variables":[{"name":"newLen","nativeSrc":"5143:6:66","nodeType":"YulTypedName","src":"5143:6:66","type":""}]},{"body":{"nativeSrc":"5206:22:66","nodeType":"YulBlock","src":"5206:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"5208:16:66","nodeType":"YulIdentifier","src":"5208:16:66"},"nativeSrc":"5208:18:66","nodeType":"YulFunctionCall","src":"5208:18:66"},"nativeSrc":"5208:18:66","nodeType":"YulExpressionStatement","src":"5208:18:66"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"5178:6:66","nodeType":"YulIdentifier","src":"5178:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5194:2:66","nodeType":"YulLiteral","src":"5194:2:66","type":"","value":"64"},{"kind":"number","nativeSrc":"5198:1:66","nodeType":"YulLiteral","src":"5198:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"5190:3:66","nodeType":"YulIdentifier","src":"5190:3:66"},"nativeSrc":"5190:10:66","nodeType":"YulFunctionCall","src":"5190:10:66"},{"kind":"number","nativeSrc":"5202:1:66","nodeType":"YulLiteral","src":"5202:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"5186:3:66","nodeType":"YulIdentifier","src":"5186:3:66"},"nativeSrc":"5186:18:66","nodeType":"YulFunctionCall","src":"5186:18:66"}],"functionName":{"name":"gt","nativeSrc":"5175:2:66","nodeType":"YulIdentifier","src":"5175:2:66"},"nativeSrc":"5175:30:66","nodeType":"YulFunctionCall","src":"5175:30:66"},"nativeSrc":"5172:56:66","nodeType":"YulIf","src":"5172:56:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"5281:4:66","nodeType":"YulIdentifier","src":"5281:4:66"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"5319:4:66","nodeType":"YulIdentifier","src":"5319:4:66"}],"functionName":{"name":"sload","nativeSrc":"5313:5:66","nodeType":"YulIdentifier","src":"5313:5:66"},"nativeSrc":"5313:11:66","nodeType":"YulFunctionCall","src":"5313:11:66"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"5287:25:66","nodeType":"YulIdentifier","src":"5287:25:66"},"nativeSrc":"5287:38:66","nodeType":"YulFunctionCall","src":"5287:38:66"},{"name":"newLen","nativeSrc":"5327:6:66","nodeType":"YulIdentifier","src":"5327:6:66"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"5237:43:66","nodeType":"YulIdentifier","src":"5237:43:66"},"nativeSrc":"5237:97:66","nodeType":"YulFunctionCall","src":"5237:97:66"},"nativeSrc":"5237:97:66","nodeType":"YulExpressionStatement","src":"5237:97:66"},{"nativeSrc":"5343:18:66","nodeType":"YulVariableDeclaration","src":"5343:18:66","value":{"kind":"number","nativeSrc":"5360:1:66","nodeType":"YulLiteral","src":"5360:1:66","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"5347:9:66","nodeType":"YulTypedName","src":"5347:9:66","type":""}]},{"nativeSrc":"5370:17:66","nodeType":"YulAssignment","src":"5370:17:66","value":{"kind":"number","nativeSrc":"5383:4:66","nodeType":"YulLiteral","src":"5383:4:66","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"5370:9:66","nodeType":"YulIdentifier","src":"5370:9:66"}]},{"cases":[{"body":{"nativeSrc":"5433:642:66","nodeType":"YulBlock","src":"5433:642:66","statements":[{"nativeSrc":"5447:35:66","nodeType":"YulVariableDeclaration","src":"5447:35:66","value":{"arguments":[{"name":"newLen","nativeSrc":"5466:6:66","nodeType":"YulIdentifier","src":"5466:6:66"},{"arguments":[{"kind":"number","nativeSrc":"5478:2:66","nodeType":"YulLiteral","src":"5478:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"5474:3:66","nodeType":"YulIdentifier","src":"5474:3:66"},"nativeSrc":"5474:7:66","nodeType":"YulFunctionCall","src":"5474:7:66"}],"functionName":{"name":"and","nativeSrc":"5462:3:66","nodeType":"YulIdentifier","src":"5462:3:66"},"nativeSrc":"5462:20:66","nodeType":"YulFunctionCall","src":"5462:20:66"},"variables":[{"name":"loopEnd","nativeSrc":"5451:7:66","nodeType":"YulTypedName","src":"5451:7:66","type":""}]},{"nativeSrc":"5495:49:66","nodeType":"YulVariableDeclaration","src":"5495:49:66","value":{"arguments":[{"name":"slot","nativeSrc":"5539:4:66","nodeType":"YulIdentifier","src":"5539:4:66"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"5509:29:66","nodeType":"YulIdentifier","src":"5509:29:66"},"nativeSrc":"5509:35:66","nodeType":"YulFunctionCall","src":"5509:35:66"},"variables":[{"name":"dstPtr","nativeSrc":"5499:6:66","nodeType":"YulTypedName","src":"5499:6:66","type":""}]},{"nativeSrc":"5557:10:66","nodeType":"YulVariableDeclaration","src":"5557:10:66","value":{"kind":"number","nativeSrc":"5566:1:66","nodeType":"YulLiteral","src":"5566:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"5561:1:66","nodeType":"YulTypedName","src":"5561:1:66","type":""}]},{"body":{"nativeSrc":"5637:165:66","nodeType":"YulBlock","src":"5637:165:66","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"5662:6:66","nodeType":"YulIdentifier","src":"5662:6:66"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"5680:3:66","nodeType":"YulIdentifier","src":"5680:3:66"},{"name":"srcOffset","nativeSrc":"5685:9:66","nodeType":"YulIdentifier","src":"5685:9:66"}],"functionName":{"name":"add","nativeSrc":"5676:3:66","nodeType":"YulIdentifier","src":"5676:3:66"},"nativeSrc":"5676:19:66","nodeType":"YulFunctionCall","src":"5676:19:66"}],"functionName":{"name":"mload","nativeSrc":"5670:5:66","nodeType":"YulIdentifier","src":"5670:5:66"},"nativeSrc":"5670:26:66","nodeType":"YulFunctionCall","src":"5670:26:66"}],"functionName":{"name":"sstore","nativeSrc":"5655:6:66","nodeType":"YulIdentifier","src":"5655:6:66"},"nativeSrc":"5655:42:66","nodeType":"YulFunctionCall","src":"5655:42:66"},"nativeSrc":"5655:42:66","nodeType":"YulExpressionStatement","src":"5655:42:66"},{"nativeSrc":"5714:24:66","nodeType":"YulAssignment","src":"5714:24:66","value":{"arguments":[{"name":"dstPtr","nativeSrc":"5728:6:66","nodeType":"YulIdentifier","src":"5728:6:66"},{"kind":"number","nativeSrc":"5736:1:66","nodeType":"YulLiteral","src":"5736:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"5724:3:66","nodeType":"YulIdentifier","src":"5724:3:66"},"nativeSrc":"5724:14:66","nodeType":"YulFunctionCall","src":"5724:14:66"},"variableNames":[{"name":"dstPtr","nativeSrc":"5714:6:66","nodeType":"YulIdentifier","src":"5714:6:66"}]},{"nativeSrc":"5755:33:66","nodeType":"YulAssignment","src":"5755:33:66","value":{"arguments":[{"name":"srcOffset","nativeSrc":"5772:9:66","nodeType":"YulIdentifier","src":"5772:9:66"},{"kind":"number","nativeSrc":"5783:4:66","nodeType":"YulLiteral","src":"5783:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5768:3:66","nodeType":"YulIdentifier","src":"5768:3:66"},"nativeSrc":"5768:20:66","nodeType":"YulFunctionCall","src":"5768:20:66"},"variableNames":[{"name":"srcOffset","nativeSrc":"5755:9:66","nodeType":"YulIdentifier","src":"5755:9:66"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"5591:1:66","nodeType":"YulIdentifier","src":"5591:1:66"},{"name":"loopEnd","nativeSrc":"5594:7:66","nodeType":"YulIdentifier","src":"5594:7:66"}],"functionName":{"name":"lt","nativeSrc":"5588:2:66","nodeType":"YulIdentifier","src":"5588:2:66"},"nativeSrc":"5588:14:66","nodeType":"YulFunctionCall","src":"5588:14:66"},"nativeSrc":"5580:222:66","nodeType":"YulForLoop","post":{"nativeSrc":"5603:21:66","nodeType":"YulBlock","src":"5603:21:66","statements":[{"nativeSrc":"5605:17:66","nodeType":"YulAssignment","src":"5605:17:66","value":{"arguments":[{"name":"i","nativeSrc":"5614:1:66","nodeType":"YulIdentifier","src":"5614:1:66"},{"kind":"number","nativeSrc":"5617:4:66","nodeType":"YulLiteral","src":"5617:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5610:3:66","nodeType":"YulIdentifier","src":"5610:3:66"},"nativeSrc":"5610:12:66","nodeType":"YulFunctionCall","src":"5610:12:66"},"variableNames":[{"name":"i","nativeSrc":"5605:1:66","nodeType":"YulIdentifier","src":"5605:1:66"}]}]},"pre":{"nativeSrc":"5584:3:66","nodeType":"YulBlock","src":"5584:3:66","statements":[]},"src":"5580:222:66"},{"body":{"nativeSrc":"5850:166:66","nodeType":"YulBlock","src":"5850:166:66","statements":[{"nativeSrc":"5868:43:66","nodeType":"YulVariableDeclaration","src":"5868:43:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"5895:3:66","nodeType":"YulIdentifier","src":"5895:3:66"},{"name":"srcOffset","nativeSrc":"5900:9:66","nodeType":"YulIdentifier","src":"5900:9:66"}],"functionName":{"name":"add","nativeSrc":"5891:3:66","nodeType":"YulIdentifier","src":"5891:3:66"},"nativeSrc":"5891:19:66","nodeType":"YulFunctionCall","src":"5891:19:66"}],"functionName":{"name":"mload","nativeSrc":"5885:5:66","nodeType":"YulIdentifier","src":"5885:5:66"},"nativeSrc":"5885:26:66","nodeType":"YulFunctionCall","src":"5885:26:66"},"variables":[{"name":"lastValue","nativeSrc":"5872:9:66","nodeType":"YulTypedName","src":"5872:9:66","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"5935:6:66","nodeType":"YulIdentifier","src":"5935:6:66"},{"arguments":[{"name":"lastValue","nativeSrc":"5947:9:66","nodeType":"YulIdentifier","src":"5947:9:66"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5974:1:66","nodeType":"YulLiteral","src":"5974:1:66","type":"","value":"3"},{"name":"newLen","nativeSrc":"5977:6:66","nodeType":"YulIdentifier","src":"5977:6:66"}],"functionName":{"name":"shl","nativeSrc":"5970:3:66","nodeType":"YulIdentifier","src":"5970:3:66"},"nativeSrc":"5970:14:66","nodeType":"YulFunctionCall","src":"5970:14:66"},{"kind":"number","nativeSrc":"5986:3:66","nodeType":"YulLiteral","src":"5986:3:66","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"5966:3:66","nodeType":"YulIdentifier","src":"5966:3:66"},"nativeSrc":"5966:24:66","nodeType":"YulFunctionCall","src":"5966:24:66"},{"arguments":[{"kind":"number","nativeSrc":"5996:1:66","nodeType":"YulLiteral","src":"5996:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"5992:3:66","nodeType":"YulIdentifier","src":"5992:3:66"},"nativeSrc":"5992:6:66","nodeType":"YulFunctionCall","src":"5992:6:66"}],"functionName":{"name":"shr","nativeSrc":"5962:3:66","nodeType":"YulIdentifier","src":"5962:3:66"},"nativeSrc":"5962:37:66","nodeType":"YulFunctionCall","src":"5962:37:66"}],"functionName":{"name":"not","nativeSrc":"5958:3:66","nodeType":"YulIdentifier","src":"5958:3:66"},"nativeSrc":"5958:42:66","nodeType":"YulFunctionCall","src":"5958:42:66"}],"functionName":{"name":"and","nativeSrc":"5943:3:66","nodeType":"YulIdentifier","src":"5943:3:66"},"nativeSrc":"5943:58:66","nodeType":"YulFunctionCall","src":"5943:58:66"}],"functionName":{"name":"sstore","nativeSrc":"5928:6:66","nodeType":"YulIdentifier","src":"5928:6:66"},"nativeSrc":"5928:74:66","nodeType":"YulFunctionCall","src":"5928:74:66"},"nativeSrc":"5928:74:66","nodeType":"YulExpressionStatement","src":"5928:74:66"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"5821:7:66","nodeType":"YulIdentifier","src":"5821:7:66"},{"name":"newLen","nativeSrc":"5830:6:66","nodeType":"YulIdentifier","src":"5830:6:66"}],"functionName":{"name":"lt","nativeSrc":"5818:2:66","nodeType":"YulIdentifier","src":"5818:2:66"},"nativeSrc":"5818:19:66","nodeType":"YulFunctionCall","src":"5818:19:66"},"nativeSrc":"5815:201:66","nodeType":"YulIf","src":"5815:201:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"6036:4:66","nodeType":"YulIdentifier","src":"6036:4:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6050:1:66","nodeType":"YulLiteral","src":"6050:1:66","type":"","value":"1"},{"name":"newLen","nativeSrc":"6053:6:66","nodeType":"YulIdentifier","src":"6053:6:66"}],"functionName":{"name":"shl","nativeSrc":"6046:3:66","nodeType":"YulIdentifier","src":"6046:3:66"},"nativeSrc":"6046:14:66","nodeType":"YulFunctionCall","src":"6046:14:66"},{"kind":"number","nativeSrc":"6062:1:66","nodeType":"YulLiteral","src":"6062:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6042:3:66","nodeType":"YulIdentifier","src":"6042:3:66"},"nativeSrc":"6042:22:66","nodeType":"YulFunctionCall","src":"6042:22:66"}],"functionName":{"name":"sstore","nativeSrc":"6029:6:66","nodeType":"YulIdentifier","src":"6029:6:66"},"nativeSrc":"6029:36:66","nodeType":"YulFunctionCall","src":"6029:36:66"},"nativeSrc":"6029:36:66","nodeType":"YulExpressionStatement","src":"6029:36:66"}]},"nativeSrc":"5426:649:66","nodeType":"YulCase","src":"5426:649:66","value":{"kind":"number","nativeSrc":"5431:1:66","nodeType":"YulLiteral","src":"5431:1:66","type":"","value":"1"}},{"body":{"nativeSrc":"6092:234:66","nodeType":"YulBlock","src":"6092:234:66","statements":[{"nativeSrc":"6106:14:66","nodeType":"YulVariableDeclaration","src":"6106:14:66","value":{"kind":"number","nativeSrc":"6119:1:66","nodeType":"YulLiteral","src":"6119:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"6110:5:66","nodeType":"YulTypedName","src":"6110:5:66","type":""}]},{"body":{"nativeSrc":"6155:67:66","nodeType":"YulBlock","src":"6155:67:66","statements":[{"nativeSrc":"6173:35:66","nodeType":"YulAssignment","src":"6173:35:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"6192:3:66","nodeType":"YulIdentifier","src":"6192:3:66"},{"name":"srcOffset","nativeSrc":"6197:9:66","nodeType":"YulIdentifier","src":"6197:9:66"}],"functionName":{"name":"add","nativeSrc":"6188:3:66","nodeType":"YulIdentifier","src":"6188:3:66"},"nativeSrc":"6188:19:66","nodeType":"YulFunctionCall","src":"6188:19:66"}],"functionName":{"name":"mload","nativeSrc":"6182:5:66","nodeType":"YulIdentifier","src":"6182:5:66"},"nativeSrc":"6182:26:66","nodeType":"YulFunctionCall","src":"6182:26:66"},"variableNames":[{"name":"value","nativeSrc":"6173:5:66","nodeType":"YulIdentifier","src":"6173:5:66"}]}]},"condition":{"name":"newLen","nativeSrc":"6136:6:66","nodeType":"YulIdentifier","src":"6136:6:66"},"nativeSrc":"6133:89:66","nodeType":"YulIf","src":"6133:89:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"6242:4:66","nodeType":"YulIdentifier","src":"6242:4:66"},{"arguments":[{"name":"value","nativeSrc":"6301:5:66","nodeType":"YulIdentifier","src":"6301:5:66"},{"name":"newLen","nativeSrc":"6308:6:66","nodeType":"YulIdentifier","src":"6308:6:66"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"6248:52:66","nodeType":"YulIdentifier","src":"6248:52:66"},"nativeSrc":"6248:67:66","nodeType":"YulFunctionCall","src":"6248:67:66"}],"functionName":{"name":"sstore","nativeSrc":"6235:6:66","nodeType":"YulIdentifier","src":"6235:6:66"},"nativeSrc":"6235:81:66","nodeType":"YulFunctionCall","src":"6235:81:66"},"nativeSrc":"6235:81:66","nodeType":"YulExpressionStatement","src":"6235:81:66"}]},"nativeSrc":"6084:242:66","nodeType":"YulCase","src":"6084:242:66","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"5406:6:66","nodeType":"YulIdentifier","src":"5406:6:66"},{"kind":"number","nativeSrc":"5414:2:66","nodeType":"YulLiteral","src":"5414:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"5403:2:66","nodeType":"YulIdentifier","src":"5403:2:66"},"nativeSrc":"5403:14:66","nodeType":"YulFunctionCall","src":"5403:14:66"},"nativeSrc":"5396:930:66","nodeType":"YulSwitch","src":"5396:930:66"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"5033:1299:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"5114:4:66","nodeType":"YulTypedName","src":"5114:4:66","type":""},{"name":"src","nativeSrc":"5120:3:66","nodeType":"YulTypedName","src":"5120:3:66","type":""}],"src":"5033:1299:66"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := mload(offset)\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(add(memPtr, i), 0x20), mload(add(add(offset, i), 0x20)))\n        }\n        mstore(add(add(memPtr, length), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, sub(shl(64, 1), 1)) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n        value2 := abi_decode_address_fromMemory(add(headStart, 64))\n        value3 := abi_decode_address_fromMemory(add(headStart, 96))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint8(x, y) -> diff\n    {\n        diff := sub(and(x, 0xff), and(y, 0xff))\n        if gt(diff, 0xff) { panic_error_0x11() }\n    }\n    function checked_exp_helper(_base, exponent, max) -> power, base\n    {\n        power := 1\n        base := _base\n        for { } gt(exponent, 1) { }\n        {\n            if gt(base, div(max, base)) { panic_error_0x11() }\n            if and(exponent, 1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(1, exponent)\n        }\n    }\n    function checked_exp_unsigned(base, exponent) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            let _1 := 0\n            _1 := 0\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            let _2 := 0\n            _2 := 0\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent, not(0))\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, and(exponent, 0xff))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}","id":66,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60c060405234801561001057600080fd5b5060405161385638038061385683398101604081905261002f916102ab565b83838383838360128484818181818d6001600160a01b03811661006c57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61007581610181565b506001600160a01b0380831660805281166100a357604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b1580156100ea57600080fd5b505af11580156100fe573d6000803e3d6000fd5b50505050505050506101146101d160201b60201c565b60ff168360ff16101561013a576040516301e9714b60e41b815260040160405180910390fd5b61014560068461034b565b61015090600a610451565b60a0525060089150610164905083826104f0565b50600961017182826104f0565b50505050505050505050506105ae565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126101fd57600080fd5b81516001600160401b03811115610216576102166101d6565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610244576102446101d6565b60405281815283820160200185101561025c57600080fd5b60005b8281101561027b5760208186018101518383018201520161025f565b506000918101602001919091529392505050565b80516001600160a01b03811681146102a657600080fd5b919050565b600080600080608085870312156102c157600080fd5b84516001600160401b038111156102d757600080fd5b6102e3878288016101ec565b602087015190955090506001600160401b0381111561030157600080fd5b61030d878288016101ec565b93505061031c6040860161028f565b915061032a6060860161028f565b905092959194509250565b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111561036457610364610335565b92915050565b6001815b60018411156103a55780850481111561038957610389610335565b600184161561039757908102905b60019390931c92800261036e565b935093915050565b6000826103bc57506001610364565b816103c957506000610364565b81600181146103df57600281146103e957610405565b6001915050610364565b60ff8411156103fa576103fa610335565b50506001821b610364565b5060208310610133831016604e8410600b8410161715610428575081810a610364565b610435600019848461036a565b806000190482111561044957610449610335565b029392505050565b600061046060ff8416836103ad565b9392505050565b600181811c9082168061047b57607f821691505b60208210810361049b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156104eb57806000526020600020601f840160051c810160208510156104c85750805b601f840160051c820191505b818110156104e857600081556001016104d4565b50505b505050565b81516001600160401b03811115610509576105096101d6565b61051d816105178454610467565b846104a1565b6020601f82116001811461055157600083156105395750848201515b600019600385901b1c1916600184901b1784556104e8565b600084815260208120601f198516915b828110156105815787850151825560209485019460019092019101610561565b508482101561059f5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05161323d6106196000396000818161067301528181611b7d01528181611bf20152611d4d01526000818161053201528181610aa201528181611143015281816113ba0152818161172501528181611e45015281816120d10152612188015261323d6000f3fe6080604052600436106102675760003560e01c8063715018a611610144578063bb0b6a53116100b6578063d045a0dc1161007a578063d045a0dc146107aa578063d4243885146107bd578063dd62ed3e146107dd578063f2fde38b14610823578063fc0c546a146104b6578063ff7bd03d1461084357600080fd5b8063bb0b6a5314610709578063bc70b35414610736578063bd815db014610756578063c7c7f5b314610769578063ca5eb5e11461078a57600080fd5b806395d89b411161010857806395d89b411461064c578063963efcaa146106615780639f68b96414610695578063a9059cbb146106a9578063b731ea0a146106c9578063b98bd070146106e957600080fd5b8063715018a6146105aa5780637d25a05e146105bf57806382413eac146105fa578063857749b01461061a5780638da5cb5b1461062e57600080fd5b8063313ce567116101dd57806352ae2879116101a157806352ae2879146104b65780635535d461146104c95780635a0dfe4d146104e95780635e280f11146105205780636fc1b31e1461055457806370a082311461057457600080fd5b8063313ce5671461040857806332cb6b0c1461042a5780633400288b146104495780633b6f743b1461046957806340c10f191461049657600080fd5b8063134d4f251161022f578063134d4f2514610343578063156a0d0f1461036b57806317442b701461039257806318160ddd146103b45780631f5e1334146103d357806323b872dd146103e857600080fd5b806306fdde031461026c578063095ea7b3146102975780630d35b415146102c7578063111ecdad146102f657806313137d651461032e575b600080fd5b34801561027857600080fd5b50610281610863565b60405161028e9190612300565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004612328565b6108f5565b604051901515815260200161028e565b3480156102d357600080fd5b506102e76102e236600461236c565b61090f565b60405161028e939291906123a0565b34801561030257600080fd5b50600454610316906001600160a01b031681565b6040516001600160a01b03909116815260200161028e565b61034161033c366004612497565b610aa0565b005b34801561034f57600080fd5b50610358600281565b60405161ffff909116815260200161028e565b34801561037757600080fd5b506040805162b9270b60e21b8152600160208201520161028e565b34801561039e57600080fd5b506040805160018152600260208201520161028e565b3480156103c057600080fd5b506007545b60405190815260200161028e565b3480156103df57600080fd5b50610358600181565b3480156103f457600080fd5b506102b7610403366004612538565b610b60565b34801561041457600080fd5b5060125b60405160ff909116815260200161028e565b34801561043657600080fd5b506103c56a108b2a2c2802909400000081565b34801561045557600080fd5b50610341610464366004612592565b610b86565b34801561047557600080fd5b506104896104843660046125bc565b610b9c565b60405161028e919061260d565b3480156104a257600080fd5b506103416104b1366004612328565b610c03565b3480156104c257600080fd5b5030610316565b3480156104d557600080fd5b506102816104e4366004612636565b610c54565b3480156104f557600080fd5b506102b7610504366004612592565b63ffffffff919091166000908152600160205260409020541490565b34801561052c57600080fd5b506103167f000000000000000000000000000000000000000000000000000000000000000081565b34801561056057600080fd5b5061034161056f366004612669565b610cf9565b34801561058057600080fd5b506103c561058f366004612669565b6001600160a01b031660009081526005602052604090205490565b3480156105b657600080fd5b50610341610d56565b3480156105cb57600080fd5b506105e26105da366004612592565b600092915050565b6040516001600160401b03909116815260200161028e565b34801561060657600080fd5b506102b7610615366004612686565b610d6a565b34801561062657600080fd5b506006610418565b34801561063a57600080fd5b506000546001600160a01b0316610316565b34801561065857600080fd5b50610281610d7f565b34801561066d57600080fd5b506103c57f000000000000000000000000000000000000000000000000000000000000000081565b3480156106a157600080fd5b5060006102b7565b3480156106b557600080fd5b506102b76106c4366004612328565b610d8e565b3480156106d557600080fd5b50600254610316906001600160a01b031681565b3480156106f557600080fd5b50610341610704366004612730565b610d9c565b34801561071557600080fd5b506103c5610724366004612771565b60016020526000908152604090205481565b34801561074257600080fd5b5061028161075136600461278c565b610db6565b610341610764366004612730565b610f5e565b61077c6107773660046127ec565b6110e8565b60405161028e929190612859565b34801561079657600080fd5b506103416107a5366004612669565b61111c565b6103416107b8366004612497565b6111a2565b3480156107c957600080fd5b506103416107d8366004612669565b6111d1565b3480156107e957600080fd5b506103c56107f83660046128ab565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561082f57600080fd5b5061034161083e366004612669565b611227565b34801561084f57600080fd5b506102b761085e3660046128d9565b611265565b606060088054610872906128f5565b80601f016020809104026020016040519081016040528092919081815260200182805461089e906128f5565b80156108eb5780601f106108c0576101008083540402835291602001916108eb565b820191906000526020600020905b8154815290600101906020018083116108ce57829003601f168201915b5050505050905090565b60003361090381858561129b565b60019150505b92915050565b60408051808201909152600080825260208201526060610942604051806040016040528060008152602001600081525090565b600080306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a79190612929565b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190612946565b60408051808201825284815260208082018490528251600080825291810190935290975091925090610a5d565b604080518082019091526000815260606020820152815260200190600190039081610a355790505b509350600080610a82604089013560608a0135610a7d60208c018c612771565b6112ad565b60408051808201909152918252602082015296989597505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610af0576040516391ac5e4f60e01b81523360048201526024015b60405180910390fd5b60208701803590610b0a90610b05908a612771565b6112e9565b14610b4857610b1c6020880188612771565b60405163309afaf360e21b815263ffffffff909116600482015260208801356024820152604401610ae7565b610b5787878787878787611325565b50505050505050565b600033610b6e85828561148c565b610b7985858561150b565b60019150505b9392505050565b610b8e61156a565b610b988282611597565b5050565b60408051808201909152600080825260208201526000610bcc60408501356060860135610a7d6020880188612771565b915050600080610bdc86846115ec565b9092509050610bf9610bf16020880188612771565b83838861170f565b9695505050505050565b610c0b61156a565b6a108b2a2c2802909400000081610c2160075490565b610c2b919061298b565b1115610c4a57604051638a164f6360e01b815260040160405180910390fd5b610b9882826117f0565b600360209081526000928352604080842090915290825290208054610c78906128f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca4906128f5565b8015610cf15780601f10610cc657610100808354040283529160200191610cf1565b820191906000526020600020905b815481529060010190602001808311610cd457829003601f168201915b505050505081565b610d0161156a565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610d5e61156a565b610d686000611826565b565b6001600160a01b03811630145b949350505050565b606060098054610872906128f5565b60003361090381858561150b565b610da461156a565b610b98610db18284612a3f565b611876565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610dea906128f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e16906128f5565b8015610e635780601f10610e3857610100808354040283529160200191610e63565b820191906000526020600020905b815481529060010190602001808311610e4657829003601f168201915b505050505090508051600003610eb35783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610d779350505050565b6000839003610ec3579050610d77565b60028310610f4157610f0a84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061197d92505050565b80610f188460028188612b68565b604051602001610f2a93929190612b92565b604051602081830303815290604052915050610d77565b8383604051639a6d49cd60e01b8152600401610ae7929190612be3565b60005b818110156110675736838383818110610f7c57610f7c612bf7565b9050602002810190610f8e9190612c0d565b9050610fc1610fa06020830183612771565b602083013563ffffffff919091166000908152600160205260409020541490565b610fcb575061105f565b3063d045a0dc60c08301358360a0810135610fea610100830183612c2e565b610ffb610100890160e08a01612669565b6110096101208a018a612c2e565b6040518963ffffffff1660e01b815260040161102b9796959493929190612c89565b6000604051808303818588803b15801561104457600080fd5b505af1158015611058573d6000803e3d6000fd5b5050505050505b600101610f61565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa1580156110a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110ce9190810190612d0f565b604051638351eea760e01b8152600401610ae79190612300565b6110f0612269565b604080518082019091526000808252602082015261110f8585856119a9565b915091505b935093915050565b61112461156a565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561118757600080fd5b505af115801561119b573d6000803e3d6000fd5b5050505050565b3330146111c25760405163029a949d60e31b815260040160405180910390fd5b610b5787878787878787610b48565b6111d961156a565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610d4b565b61122f61156a565b6001600160a01b03811661125957604051631e4fbdf760e01b815260006004820152602401610ae7565b61126281611826565b50565b600060208201803590600190839061127d9086612771565b63ffffffff1681526020810191909152604001600020541492915050565b6112a88383836001611aa4565b505050565b6000806112b985611b79565b915081905083811015611114576040516371c4efed60e01b81526004810182905260248101859052604401610ae7565b63ffffffff8116600090815260016020526040812054806109095760405163f6ff4fb760e01b815263ffffffff84166004820152602401610ae7565b60006113376113348787611bb0565b90565b905060006113638261135161134c8a8a611bc8565b611beb565b61135e60208d018d612771565b611c20565b9050602886111561142a5760006113a061138360608c0160408d01612d7c565b61139060208d018d612771565b8461139b8c8c611c6c565b611cb7565b604051633e5ac80960e11b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906113f69086908d906000908790600401612d99565b600060405180830381600087803b15801561141057600080fd5b505af1158015611424573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61146360208d018d612771565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b6001600160a01b0383811660009081526006602090815260408083209386168352929052205460001981101561150557818110156114f657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610ae7565b61150584848484036000611aa4565b50505050565b6001600160a01b03831661153557604051634b637e8f60e11b815260006004820152602401610ae7565b6001600160a01b03821661155f5760405163ec442f0560e01b815260006004820152602401610ae7565b6112a8838383611ce9565b6000546001600160a01b03163314610d685760405163118cdaa760e01b8152336004820152602401610ae7565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6060806000611649856020013561160286611d46565b61160f60a0890189612c2e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d7292505050565b909350905060008161165c57600161165f565b60025b905061167f6116716020880188612771565b8261075160808a018a612c2e565b6004549093506001600160a01b031680156117055760405163043a78eb60e01b81526001600160a01b0382169063043a78eb906116c29088908890600401612dca565b602060405180830381865afa1580156116df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117039190612def565b505b5050509250929050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff168152602001611772896112e9565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b81526004016117a7929190612e0c565b6040805180830381865afa1580156117c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e79190612eb6565b95945050505050565b6001600160a01b03821661181a5760405163ec442f0560e01b815260006004820152602401610ae7565b610b9860008383611ce9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b815181101561194d576118a882828151811061189757611897612bf7565b60200260200101516040015161197d565b8181815181106118ba576118ba612bf7565b602002602001015160400151600360008484815181106118dc576118dc612bf7565b60200260200101516000015163ffffffff1663ffffffff168152602001908152602001600020600084848151811061191657611916612bf7565b60200260200101516020015161ffff1661ffff16815260200190815260200160002090816119449190612f19565b50600101611879565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610d4b9190612fd7565b600281015161ffff8116600314610b985781604051639a6d49cd60e01b8152600401610ae79190612300565b6119b1612269565b60408051808201909152600080825260208201526000806119e833604089013560608a01356119e360208c018c612771565b611dec565b915091506000806119f989846115ec565b9092509050611a25611a0e60208b018b612771565b8383611a1f368d90038d018d613067565b8b611e12565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90611a73908d018d612771565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b6001600160a01b038416611ace5760405163e602df0560e01b815260006004820152602401610ae7565b6001600160a01b038316611af857604051634a1406b160e11b815260006004820152602401610ae7565b6001600160a01b038085166000908152600660209081526040808320938716835292905220829055801561150557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611b6b91815260200190565b60405180910390a350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000611ba6818461309a565b61090991906130bc565b6000611bbf6020828486612b68565b610b7f916130d3565b6000611bd8602860208486612b68565b611be1916130f1565b60c01c9392505050565b60006109097f00000000000000000000000000000000000000000000000000000000000000006001600160401b0384166130bc565b60006a108b2a2c2802909400000083611c3860075490565b611c42919061298b565b1115611c6157604051638a164f6360e01b815260040160405180910390fd5b610d77848484611f1d565b6060611c7b8260288186612b68565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611cd09493929190613129565b6040516020818303038152906040529050949350505050565b6001600160a01b038316158015611d1d57506a108b2a2c2802909400000081611d1160075490565b611d1b919061298b565b115b15611d3b57604051638a164f6360e01b815260040160405180910390fd5b6112a8838383611f45565b60006109097f00000000000000000000000000000000000000000000000000000000000000008361309a565b8051606090151580611dbb578484604051602001611da792919091825260c01b6001600160c01b031916602082015260280190565b604051602081830303815290604052611de2565b84843385604051602001611dd29493929190613178565b6040516020818303038152906040525b9150935093915050565b600080611dfa8585856112ad565b9092509050611e09868361206f565b94509492505050565b611e1a612269565b6000611e2984600001516120a5565b602085015190915015611e4357611e4384602001516120cd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff168152602001611e938c6112e9565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611ecf929190612e0c565b60806040518083038185885af1158015611eed573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f1291906131bb565b979650505050505050565b60006001600160a01b038416611f335761dead93505b611f3d84846117f0565b509092915050565b6001600160a01b038316611f70578060076000828254611f65919061298b565b90915550611fe29050565b6001600160a01b03831660009081526005602052604090205481811015611fc35760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610ae7565b6001600160a01b03841660009081526005602052604090209082900390555b6001600160a01b038216611ffe5760078054829003905561201d565b6001600160a01b03821660009081526005602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161206291815260200190565b60405180910390a3505050565b6001600160a01b03821661209957604051634b637e8f60e11b815260006004820152602401610ae7565b610b9882600083611ce9565b60008134146120c9576040516304fb820960e51b8152346004820152602401610ae7565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121519190612929565b90506001600160a01b03811661217a576040516329b99a9560e11b815260040160405180910390fd5b6040805133602482018190527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381811660448501526064808501889052855180860390910181526084909401909452602080840180516001600160e01b03166323b872dd60e01b1781528451610b9896881695899361150593889360009283929091839182885af18061221b576040513d6000823e3d81fd5b50506000513d91508115612233578060011415612240565b6001600160a01b0384163b155b1561150557604051635274afe760e01b81526001600160a01b0385166004820152602401610ae7565b60405180606001604052806000801916815260200160006001600160401b031681526020016122ab604051806040016040528060008152602001600081525090565b905290565b60005b838110156122cb5781810151838201526020016122b3565b50506000910152565b600081518084526122ec8160208601602086016122b0565b601f01601f19169290920160200192915050565b602081526000610b7f60208301846122d4565b6001600160a01b038116811461126257600080fd5b6000806040838503121561233b57600080fd5b823561234681612313565b946020939093013593505050565b600060e0828403121561236657600080fd5b50919050565b60006020828403121561237e57600080fd5b81356001600160401b0381111561239457600080fd5b610d7784828501612354565b8351815260208085015190820152600060a0820160a0604084015280855180835260c08501915060c08160051b86010192506020870160005b828110156124215760bf19878603018452815180518652602081015190506040602087015261240b60408701826122d4565b95505060209384019391909101906001016123d9565b5050855160608601525050602084015160808401529050610d77565b60006060828403121561236657600080fd5b60008083601f84011261246157600080fd5b5081356001600160401b0381111561247857600080fd5b60208301915083602082850101111561249057600080fd5b9250929050565b600080600080600080600060e0888a0312156124b257600080fd5b6124bc898961243d565b96506060880135955060808801356001600160401b038111156124de57600080fd5b6124ea8a828b0161244f565b90965094505060a08801356124fe81612313565b925060c08801356001600160401b0381111561251957600080fd5b6125258a828b0161244f565b989b979a50959850939692959293505050565b60008060006060848603121561254d57600080fd5b833561255881612313565b9250602084013561256881612313565b929592945050506040919091013590565b803563ffffffff8116811461258d57600080fd5b919050565b600080604083850312156125a557600080fd5b61234683612579565b801515811461126257600080fd5b600080604083850312156125cf57600080fd5b82356001600160401b038111156125e557600080fd5b6125f185828601612354565b9250506020830135612602816125ae565b809150509250929050565b815181526020808301519082015260408101610909565b803561ffff8116811461258d57600080fd5b6000806040838503121561264957600080fd5b61265283612579565b915061266060208401612624565b90509250929050565b60006020828403121561267b57600080fd5b8135610b7f81612313565b60008060008060a0858703121561269c57600080fd5b6126a6868661243d565b935060608501356001600160401b038111156126c157600080fd5b6126cd8782880161244f565b90945092505060808501356126e181612313565b939692955090935050565b60008083601f8401126126fe57600080fd5b5081356001600160401b0381111561271557600080fd5b6020830191508360208260051b850101111561249057600080fd5b6000806020838503121561274357600080fd5b82356001600160401b0381111561275957600080fd5b612765858286016126ec565b90969095509350505050565b60006020828403121561278357600080fd5b610b7f82612579565b600080600080606085870312156127a257600080fd5b6127ab85612579565b93506127b960208601612624565b925060408501356001600160401b038111156127d457600080fd5b6127e08782880161244f565b95989497509550505050565b6000806000838503608081121561280257600080fd5b84356001600160401b0381111561281857600080fd5b61282487828801612354565b9450506040601f198201121561283957600080fd5b50602084019150606084013561284e81612313565b809150509250925092565b600060c082019050835182526001600160401b0360208501511660208301526040840151612894604084018280518252602090810151910152565b5082516080830152602083015160a0830152610b7f565b600080604083850312156128be57600080fd5b82356128c981612313565b9150602083013561260281612313565b6000606082840312156128eb57600080fd5b610b7f838361243d565b600181811c9082168061290957607f821691505b60208210810361236657634e487b7160e01b600052602260045260246000fd5b60006020828403121561293b57600080fd5b8151610b7f81612313565b60006020828403121561295857600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561090957610909612975565b604051606081016001600160401b03811182821017156129c0576129c061295f565b60405290565b604080519081016001600160401b03811182821017156129c0576129c061295f565b604051601f8201601f191681016001600160401b0381118282101715612a1057612a1061295f565b604052919050565b60006001600160401b03821115612a3157612a3161295f565b50601f01601f191660200190565b60006001600160401b03831115612a5857612a5861295f565b8260051b612a68602082016129e8565b84815290830190602081019036831115612a8157600080fd5b845b83811015612b5e5780356001600160401b03811115612aa157600080fd5b86016060368290031215612ab457600080fd5b612abc61299e565b612ac582612579565b8152612ad360208301612624565b602082015260408201356001600160401b03811115612af157600080fd5b919091019036601f830112612b0557600080fd5b8135612b18612b1382612a18565b6129e8565b818152366020838601011115612b2d57600080fd5b8160208501602083013760006020838301015280604084015250508085525050602083019250602081019050612a83565b5095945050505050565b60008085851115612b7857600080fd5b83861115612b8557600080fd5b5050820193919092039150565b60008451612ba48184602089016122b0565b8201838582376000930192835250909392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610d77602083018486612bba565b634e487b7160e01b600052603260045260246000fd5b6000823561013e19833603018112612c2457600080fd5b9190910192915050565b6000808335601e19843603018112612c4557600080fd5b8301803591506001600160401b03821115612c5f57600080fd5b60200191503681900382131561249057600080fd5b6001600160401b038116811461126257600080fd5b63ffffffff612c9789612579565b1681526020888101359082015260006040890135612cb481612c74565b6001600160401b03811660408401525087606083015260e06080830152612cdf60e083018789612bba565b6001600160a01b03861660a084015282810360c0840152612d01818587612bba565b9a9950505050505050505050565b600060208284031215612d2157600080fd5b81516001600160401b03811115612d3757600080fd5b8201601f81018413612d4857600080fd5b8051612d56612b1382612a18565b818152856020838501011115612d6b57600080fd5b6117e78260208301602086016122b0565b600060208284031215612d8e57600080fd5b8135610b7f81612c74565b60018060a01b038516815283602082015261ffff83166040820152608060608201526000610bf960808301846122d4565b604081526000612ddd60408301856122d4565b82810360208401526117e781856122d4565b600060208284031215612e0157600080fd5b8151610b7f816125ae565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152612e4260e08401826122d4565b90506060850151603f198483030160a0850152612e5f82826122d4565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b600060408284031215612e9757600080fd5b612e9f6129c6565b825181526020928301519281019290925250919050565b600060408284031215612ec857600080fd5b610b7f8383612e85565b601f8211156112a857806000526020600020601f840160051c81016020851015612ef95750805b601f840160051c820191505b8181101561119b5760008155600101612f05565b81516001600160401b03811115612f3257612f3261295f565b612f4681612f4084546128f5565b84612ed2565b6020601f821160018114612f7a5760008315612f625750848201515b600019600385901b1c1916600184901b17845561119b565b600084815260208120601f198516915b82811015612faa5787850151825560209485019460019092019101612f8a565b5084821015612fc85786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561305b57603f19878603018452815163ffffffff815116865261ffff6020820151166020870152604081015190506060604087015261304560608701826122d4565b9550506020938401939190910190600101612fff565b50929695505050505050565b6000604082840312801561307a57600080fd5b506130836129c6565b823581526020928301359281019290925250919050565b6000826130b757634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761090957610909612975565b8035602083101561090957600019602084900360031b1b1692915050565b80356001600160c01b03198116906008841015613122576001600160c01b0319600885900360031b81901b82161691505b5092915050565b6001600160401b0360c01b8560c01b16815263ffffffff60e01b8460e01b16600882015282600c8201526000825161316881602c8501602087016122b0565b91909101602c0195945050505050565b8481526001600160401b0360c01b8460c01b166020820152826028820152600082516131ab8160488501602087016122b0565b9190910160480195945050505050565b600060808284031280156131ce57600080fd5b506131d761299e565b8251815260208301516131e981612c74565b60208201526131fb8460408501612e85565b6040820152939250505056fea2646970667358221220c68cc336aa6c3f40258b0c3ad54353a64779235c6fca359dddc5bbeab4a6242e64736f6c634300081c0033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x3856 CODESIZE SUB DUP1 PUSH2 0x3856 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x2AB JUMP JUMPDEST DUP4 DUP4 DUP4 DUP4 DUP4 DUP4 PUSH1 0x12 DUP5 DUP5 DUP2 DUP2 DUP2 DUP2 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x6C JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x75 DUP2 PUSH2 0x181 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x80 MSTORE DUP2 AND PUSH2 0xA3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2D618D81 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x40 MLOAD PUSH4 0xCA5EB5E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0xCA5EB5E1 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP PUSH2 0x114 PUSH2 0x1D1 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0xFF AND DUP4 PUSH1 0xFF AND LT ISZERO PUSH2 0x13A JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E9714B PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x145 PUSH1 0x6 DUP5 PUSH2 0x34B JUMP JUMPDEST PUSH2 0x150 SWAP1 PUSH1 0xA PUSH2 0x451 JUMP JUMPDEST PUSH1 0xA0 MSTORE POP PUSH1 0x8 SWAP2 POP PUSH2 0x164 SWAP1 POP DUP4 DUP3 PUSH2 0x4F0 JUMP JUMPDEST POP PUSH1 0x9 PUSH2 0x171 DUP3 DUP3 PUSH2 0x4F0 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x6 SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x216 JUMPI PUSH2 0x216 PUSH2 0x1D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x244 JUMPI PUSH2 0x244 PUSH2 0x1D6 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x27B JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP4 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x25F JUMP JUMPDEST POP PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E3 DUP8 DUP3 DUP9 ADD PUSH2 0x1EC JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD SWAP1 SWAP6 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30D DUP8 DUP3 DUP9 ADD PUSH2 0x1EC JUMP JUMPDEST SWAP4 POP POP PUSH2 0x31C PUSH1 0x40 DUP7 ADD PUSH2 0x28F JUMP JUMPDEST SWAP2 POP PUSH2 0x32A PUSH1 0x60 DUP7 ADD PUSH2 0x28F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0xFF DUP3 DUP2 AND DUP3 DUP3 AND SUB SWAP1 DUP2 GT ISZERO PUSH2 0x364 JUMPI PUSH2 0x364 PUSH2 0x335 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 JUMPDEST PUSH1 0x1 DUP5 GT ISZERO PUSH2 0x3A5 JUMPI DUP1 DUP6 DIV DUP2 GT ISZERO PUSH2 0x389 JUMPI PUSH2 0x389 PUSH2 0x335 JUMP JUMPDEST PUSH1 0x1 DUP5 AND ISZERO PUSH2 0x397 JUMPI SWAP1 DUP2 MUL SWAP1 JUMPDEST PUSH1 0x1 SWAP4 SWAP1 SWAP4 SHR SWAP3 DUP1 MUL PUSH2 0x36E JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3BC JUMPI POP PUSH1 0x1 PUSH2 0x364 JUMP JUMPDEST DUP2 PUSH2 0x3C9 JUMPI POP PUSH1 0x0 PUSH2 0x364 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x3DF JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x3E9 JUMPI PUSH2 0x405 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x364 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x3FA JUMPI PUSH2 0x3FA PUSH2 0x335 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x364 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x428 JUMPI POP DUP2 DUP2 EXP PUSH2 0x364 JUMP JUMPDEST PUSH2 0x435 PUSH1 0x0 NOT DUP5 DUP5 PUSH2 0x36A JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH2 0x449 JUMPI PUSH2 0x449 PUSH2 0x335 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x460 PUSH1 0xFF DUP5 AND DUP4 PUSH2 0x3AD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x47B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x49B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x4EB JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x4C8 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x4D4 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x509 JUMPI PUSH2 0x509 PUSH2 0x1D6 JUMP JUMPDEST PUSH2 0x51D DUP2 PUSH2 0x517 DUP5 SLOAD PUSH2 0x467 JUMP JUMPDEST DUP5 PUSH2 0x4A1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x551 JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x539 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x4E8 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x581 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x561 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x59F JUMPI DUP7 DUP5 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH2 0x323D PUSH2 0x619 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x673 ADD MSTORE DUP2 DUP2 PUSH2 0x1B7D ADD MSTORE DUP2 DUP2 PUSH2 0x1BF2 ADD MSTORE PUSH2 0x1D4D ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x532 ADD MSTORE DUP2 DUP2 PUSH2 0xAA2 ADD MSTORE DUP2 DUP2 PUSH2 0x1143 ADD MSTORE DUP2 DUP2 PUSH2 0x13BA ADD MSTORE DUP2 DUP2 PUSH2 0x1725 ADD MSTORE DUP2 DUP2 PUSH2 0x1E45 ADD MSTORE DUP2 DUP2 PUSH2 0x20D1 ADD MSTORE PUSH2 0x2188 ADD MSTORE PUSH2 0x323D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x267 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x144 JUMPI DUP1 PUSH4 0xBB0B6A53 GT PUSH2 0xB6 JUMPI DUP1 PUSH4 0xD045A0DC GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xD045A0DC EQ PUSH2 0x7AA JUMPI DUP1 PUSH4 0xD4243885 EQ PUSH2 0x7BD JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x7DD JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x823 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0xFF7BD03D EQ PUSH2 0x843 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBB0B6A53 EQ PUSH2 0x709 JUMPI DUP1 PUSH4 0xBC70B354 EQ PUSH2 0x736 JUMPI DUP1 PUSH4 0xBD815DB0 EQ PUSH2 0x756 JUMPI DUP1 PUSH4 0xC7C7F5B3 EQ PUSH2 0x769 JUMPI DUP1 PUSH4 0xCA5EB5E1 EQ PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x108 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x64C JUMPI DUP1 PUSH4 0x963EFCAA EQ PUSH2 0x661 JUMPI DUP1 PUSH4 0x9F68B964 EQ PUSH2 0x695 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x6A9 JUMPI DUP1 PUSH4 0xB731EA0A EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB98BD070 EQ PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x5AA JUMPI DUP1 PUSH4 0x7D25A05E EQ PUSH2 0x5BF JUMPI DUP1 PUSH4 0x82413EAC EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0x857749B0 EQ PUSH2 0x61A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x62E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x52AE2879 GT PUSH2 0x1A1 JUMPI DUP1 PUSH4 0x52AE2879 EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0x5535D461 EQ PUSH2 0x4C9 JUMPI DUP1 PUSH4 0x5A0DFE4D EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0x5E280F11 EQ PUSH2 0x520 JUMPI DUP1 PUSH4 0x6FC1B31E EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x32CB6B0C EQ PUSH2 0x42A JUMPI DUP1 PUSH4 0x3400288B EQ PUSH2 0x449 JUMPI DUP1 PUSH4 0x3B6F743B EQ PUSH2 0x469 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x134D4F25 GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x134D4F25 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x156A0D0F EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0x17442B70 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3B4 JUMPI DUP1 PUSH4 0x1F5E1334 EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0xD35B415 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x111ECDAD EQ PUSH2 0x2F6 JUMPI DUP1 PUSH4 0x13137D65 EQ PUSH2 0x32E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x2300 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x2B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2328 JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E7 PUSH2 0x2E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x236C JUMP JUMPDEST PUSH2 0x90F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x23A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD PUSH2 0x316 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x341 PUSH2 0x33C CALLDATASIZE PUSH1 0x4 PUSH2 0x2497 JUMP JUMPDEST PUSH2 0xAA0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x358 PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH3 0xB9270B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x7 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x358 PUSH1 0x1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x403 CALLDATASIZE PUSH1 0x4 PUSH2 0x2538 JUMP JUMPDEST PUSH2 0xB60 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x12 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH11 0x108B2A2C28029094000000 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x464 CALLDATASIZE PUSH1 0x4 PUSH2 0x2592 JUMP JUMPDEST PUSH2 0xB86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x489 PUSH2 0x484 CALLDATASIZE PUSH1 0x4 PUSH2 0x25BC JUMP JUMPDEST PUSH2 0xB9C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x260D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x4B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2328 JUMP JUMPDEST PUSH2 0xC03 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADDRESS PUSH2 0x316 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x4E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2636 JUMP JUMPDEST PUSH2 0xC54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x504 CALLDATASIZE PUSH1 0x4 PUSH2 0x2592 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x316 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x56F CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0xCF9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH2 0x58F CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0xD56 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E2 PUSH2 0x5DA CALLDATASIZE PUSH1 0x4 PUSH2 0x2592 JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x615 CALLDATASIZE PUSH1 0x4 PUSH2 0x2686 JUMP JUMPDEST PUSH2 0xD6A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 PUSH2 0x418 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x316 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0xD7F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x2B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x6C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2328 JUMP JUMPDEST PUSH2 0xD8E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x316 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x704 CALLDATASIZE PUSH1 0x4 PUSH2 0x2730 JUMP JUMPDEST PUSH2 0xD9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH2 0x724 CALLDATASIZE PUSH1 0x4 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x751 CALLDATASIZE PUSH1 0x4 PUSH2 0x278C JUMP JUMPDEST PUSH2 0xDB6 JUMP JUMPDEST PUSH2 0x341 PUSH2 0x764 CALLDATASIZE PUSH1 0x4 PUSH2 0x2730 JUMP JUMPDEST PUSH2 0xF5E JUMP JUMPDEST PUSH2 0x77C PUSH2 0x777 CALLDATASIZE PUSH1 0x4 PUSH2 0x27EC JUMP JUMPDEST PUSH2 0x10E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP3 SWAP2 SWAP1 PUSH2 0x2859 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x7A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x111C JUMP JUMPDEST PUSH2 0x341 PUSH2 0x7B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2497 JUMP JUMPDEST PUSH2 0x11A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x7D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x11D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH2 0x7F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x28AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x82F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x83E CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x1227 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x84F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x85E CALLDATASIZE PUSH1 0x4 PUSH2 0x28D9 JUMP JUMPDEST PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x8 DUP1 SLOAD PUSH2 0x872 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x89E SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8EB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8C0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8EB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8CE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x903 DUP2 DUP6 DUP6 PUSH2 0x129B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH2 0x942 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x983 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9A7 SWAP2 SWAP1 PUSH2 0x2929 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA08 SWAP2 SWAP1 PUSH2 0x2946 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP2 DUP2 ADD SWAP1 SWAP4 MSTORE SWAP1 SWAP8 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0xA5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA35 JUMPI SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 DUP1 PUSH2 0xA82 PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP11 ADD CALLDATALOAD PUSH2 0xA7D PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x12AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP7 SWAP9 SWAP6 SWAP8 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAF0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x91AC5E4F PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP8 ADD DUP1 CALLDATALOAD SWAP1 PUSH2 0xB0A SWAP1 PUSH2 0xB05 SWAP1 DUP11 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x12E9 JUMP JUMPDEST EQ PUSH2 0xB48 JUMPI PUSH2 0xB1C PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x309AFAF3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0xB57 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x1325 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0xB6E DUP6 DUP3 DUP6 PUSH2 0x148C JUMP JUMPDEST PUSH2 0xB79 DUP6 DUP6 DUP6 PUSH2 0x150B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB8E PUSH2 0x156A JUMP JUMPDEST PUSH2 0xB98 DUP3 DUP3 PUSH2 0x1597 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xBCC PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0xA7D PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 DUP1 PUSH2 0xBDC DUP7 DUP5 PUSH2 0x15EC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xBF9 PUSH2 0xBF1 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST DUP4 DUP4 DUP9 PUSH2 0x170F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC0B PUSH2 0x156A JUMP JUMPDEST PUSH11 0x108B2A2C28029094000000 DUP2 PUSH2 0xC21 PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xC2B SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST GT ISZERO PUSH2 0xC4A JUMPI PUSH1 0x40 MLOAD PUSH4 0x8A164F63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB98 DUP3 DUP3 PUSH2 0x17F0 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xC78 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xCA4 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xCF1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xCC6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xCF1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xCD4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0xD01 PUSH2 0x156A JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xF0BE4F1E87349231D80C36B33F9E8639658EEAF474014DEE15A3E6A4D4414197 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xD5E PUSH2 0x156A JUMP JUMPDEST PUSH2 0xD68 PUSH1 0x0 PUSH2 0x1826 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ADDRESS EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x9 DUP1 SLOAD PUSH2 0x872 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x903 DUP2 DUP6 DUP6 PUSH2 0x150B JUMP JUMPDEST PUSH2 0xDA4 PUSH2 0x156A JUMP JUMPDEST PUSH2 0xB98 PUSH2 0xDB1 DUP3 DUP5 PUSH2 0x2A3F JUMP JUMPDEST PUSH2 0x1876 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP3 SWAP2 SWAP1 PUSH2 0xDEA SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xE16 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE63 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE38 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE63 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE46 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xEB3 JUMPI DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 POP PUSH2 0xD77 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 SWAP1 SUB PUSH2 0xEC3 JUMPI SWAP1 POP PUSH2 0xD77 JUMP JUMPDEST PUSH1 0x2 DUP4 LT PUSH2 0xF41 JUMPI PUSH2 0xF0A DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x197D SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH2 0xF18 DUP5 PUSH1 0x2 DUP2 DUP9 PUSH2 0x2B68 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF2A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0xD77 JUMP JUMPDEST DUP4 DUP4 PUSH1 0x40 MLOAD PUSH4 0x9A6D49CD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP3 SWAP2 SWAP1 PUSH2 0x2BE3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1067 JUMPI CALLDATASIZE DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0xF7C JUMPI PUSH2 0xF7C PUSH2 0x2BF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xF8E SWAP2 SWAP1 PUSH2 0x2C0D JUMP JUMPDEST SWAP1 POP PUSH2 0xFC1 PUSH2 0xFA0 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ SWAP1 JUMP JUMPDEST PUSH2 0xFCB JUMPI POP PUSH2 0x105F JUMP JUMPDEST ADDRESS PUSH4 0xD045A0DC PUSH1 0xC0 DUP4 ADD CALLDATALOAD DUP4 PUSH1 0xA0 DUP2 ADD CALLDATALOAD PUSH2 0xFEA PUSH2 0x100 DUP4 ADD DUP4 PUSH2 0x2C2E JUMP JUMPDEST PUSH2 0xFFB PUSH2 0x100 DUP10 ADD PUSH1 0xE0 DUP11 ADD PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x1009 PUSH2 0x120 DUP11 ADD DUP11 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x102B SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1058 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xF61 JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8E9E7099 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x10CE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2D0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8351EEA7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP2 SWAP1 PUSH2 0x2300 JUMP JUMPDEST PUSH2 0x10F0 PUSH2 0x2269 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x110F DUP6 DUP6 DUP6 PUSH2 0x19A9 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1124 PUSH2 0x156A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCA5EB5E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xCA5EB5E1 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x119B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x11C2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x29A949D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB57 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xB48 JUMP JUMPDEST PUSH2 0x11D9 PUSH2 0x156A JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xD48D879CEF83A1C0BDDA516F27B13DDB1B3F8BBAC1C9E1511BB2A659C2427760 SWAP1 PUSH1 0x20 ADD PUSH2 0xD4B JUMP JUMPDEST PUSH2 0x122F PUSH2 0x156A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1259 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x1262 DUP2 PUSH2 0x1826 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 SWAP1 DUP4 SWAP1 PUSH2 0x127D SWAP1 DUP7 PUSH2 0x2771 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x12A8 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1AA4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x12B9 DUP6 PUSH2 0x1B79 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x1114 JUMPI PUSH1 0x40 MLOAD PUSH4 0x71C4EFED PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x909 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF6FF4FB7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1337 PUSH2 0x1334 DUP8 DUP8 PUSH2 0x1BB0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1363 DUP3 PUSH2 0x1351 PUSH2 0x134C DUP11 DUP11 PUSH2 0x1BC8 JUMP JUMPDEST PUSH2 0x1BEB JUMP JUMPDEST PUSH2 0x135E PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x1C20 JUMP JUMPDEST SWAP1 POP PUSH1 0x28 DUP7 GT ISZERO PUSH2 0x142A JUMPI PUSH1 0x0 PUSH2 0x13A0 PUSH2 0x1383 PUSH1 0x60 DUP13 ADD PUSH1 0x40 DUP14 ADD PUSH2 0x2D7C JUMP JUMPDEST PUSH2 0x1390 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST DUP5 PUSH2 0x139B DUP13 DUP13 PUSH2 0x1C6C JUMP JUMPDEST PUSH2 0x1CB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3E5AC809 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x7CB59012 SWAP1 PUSH2 0x13F6 SWAP1 DUP7 SWAP1 DUP14 SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D99 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1424 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP9 PUSH32 0xEFED6D3500546B29533B128A29E3A94D70788727F0507505AC12EAF2E578FD9C PUSH2 0x1463 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 LT ISZERO PUSH2 0x1505 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x14F6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x1505 DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x1AA4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1535 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x155F JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x12A8 DUP4 DUP4 DUP4 PUSH2 0x1CE9 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD68 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x238399D427B947898EDB290F5FF0F9109849B1C3BA196A42E35F00C50A54B98B SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x1649 DUP6 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1602 DUP7 PUSH2 0x1D46 JUMP JUMPDEST PUSH2 0x160F PUSH1 0xA0 DUP10 ADD DUP10 PUSH2 0x2C2E JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D72 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x165C JUMPI PUSH1 0x1 PUSH2 0x165F JUMP JUMPDEST PUSH1 0x2 JUMPDEST SWAP1 POP PUSH2 0x167F PUSH2 0x1671 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST DUP3 PUSH2 0x751 PUSH1 0x80 DUP11 ADD DUP11 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x1705 JUMPI PUSH1 0x40 MLOAD PUSH4 0x43A78EB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x43A78EB SWAP1 PUSH2 0x16C2 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2DCA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1703 SWAP2 SWAP1 PUSH2 0x2DEF JUMP JUMPDEST POP JUMPDEST POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDDC28C58 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1772 DUP10 PUSH2 0x12E9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE POP ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17A7 SWAP3 SWAP2 SWAP1 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17E7 SWAP2 SWAP1 PUSH2 0x2EB6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x181A JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0xB98 PUSH1 0x0 DUP4 DUP4 PUSH2 0x1CE9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x194D JUMPI PUSH2 0x18A8 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1897 JUMPI PUSH2 0x1897 PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x197D JUMP JUMPDEST DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x18BA JUMPI PUSH2 0x18BA PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x3 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x18DC JUMPI PUSH2 0x18DC PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1916 JUMPI PUSH2 0x1916 PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP2 PUSH2 0x1944 SWAP2 SWAP1 PUSH2 0x2F19 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1879 JUMP JUMPDEST POP PUSH32 0xBE4864A8E820971C0247F5992E2DA559595F7BF076A21CB5928D443D2A13B674 DUP2 PUSH1 0x40 MLOAD PUSH2 0xD4B SWAP2 SWAP1 PUSH2 0x2FD7 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD MLOAD PUSH2 0xFFFF DUP2 AND PUSH1 0x3 EQ PUSH2 0xB98 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x9A6D49CD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP2 SWAP1 PUSH2 0x2300 JUMP JUMPDEST PUSH2 0x19B1 PUSH2 0x2269 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP1 PUSH2 0x19E8 CALLER PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP11 ADD CALLDATALOAD PUSH2 0x19E3 PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x1DEC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x19F9 DUP10 DUP5 PUSH2 0x15EC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1A25 PUSH2 0x1A0E PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2771 JUMP JUMPDEST DUP4 DUP4 PUSH2 0x1A1F CALLDATASIZE DUP14 SWAP1 SUB DUP14 ADD DUP14 PUSH2 0x3067 JUMP JUMPDEST DUP12 PUSH2 0x1E12 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD SWAP3 SWAP9 POP SWAP1 SWAP7 POP CALLER SWAP2 SWAP1 PUSH32 0x85496B760A4B7F8D66384B9DF21B381F5D1B1E79F229A47AAF4C232EDC2FE59A SWAP1 PUSH2 0x1A73 SWAP1 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP10 SWAP1 MSTORE DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1ACE JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1AF8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1505 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1B6B SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0x1BA6 DUP2 DUP5 PUSH2 0x309A JUMP JUMPDEST PUSH2 0x909 SWAP2 SWAP1 PUSH2 0x30BC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BBF PUSH1 0x20 DUP3 DUP5 DUP7 PUSH2 0x2B68 JUMP JUMPDEST PUSH2 0xB7F SWAP2 PUSH2 0x30D3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BD8 PUSH1 0x28 PUSH1 0x20 DUP5 DUP7 PUSH2 0x2B68 JUMP JUMPDEST PUSH2 0x1BE1 SWAP2 PUSH2 0x30F1 JUMP JUMPDEST PUSH1 0xC0 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x909 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 AND PUSH2 0x30BC JUMP JUMPDEST PUSH1 0x0 PUSH11 0x108B2A2C28029094000000 DUP4 PUSH2 0x1C38 PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1C42 SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST GT ISZERO PUSH2 0x1C61 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8A164F63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD77 DUP5 DUP5 DUP5 PUSH2 0x1F1D JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1C7B DUP3 PUSH1 0x28 DUP2 DUP7 PUSH2 0x2B68 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1CD0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3129 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO PUSH2 0x1D1D JUMPI POP PUSH11 0x108B2A2C28029094000000 DUP2 PUSH2 0x1D11 PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1D1B SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST GT JUMPDEST ISZERO PUSH2 0x1D3B JUMPI PUSH1 0x40 MLOAD PUSH4 0x8A164F63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12A8 DUP4 DUP4 DUP4 PUSH2 0x1F45 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x909 PUSH32 0x0 DUP4 PUSH2 0x309A JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x1DBB JUMPI DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DA7 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0xC0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x28 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x1DE2 JUMP JUMPDEST DUP5 DUP5 CALLER DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DD2 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3178 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DFA DUP6 DUP6 DUP6 PUSH2 0x12AD JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1E09 DUP7 DUP4 PUSH2 0x206F JUMP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1E1A PUSH2 0x2269 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E29 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x20A5 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x1E43 JUMPI PUSH2 0x1E43 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x20CD JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2637A450 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E93 DUP13 PUSH2 0x12E9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP10 PUSH1 0x20 ADD MLOAD GT ISZERO ISZERO DUP2 MSTORE POP DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1ECF SWAP3 SWAP2 SWAP1 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F12 SWAP2 SWAP1 PUSH2 0x31BB JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1F33 JUMPI PUSH2 0xDEAD SWAP4 POP JUMPDEST PUSH2 0x1F3D DUP5 DUP5 PUSH2 0x17F0 JUMP JUMPDEST POP SWAP1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1F70 JUMPI DUP1 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1F65 SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1FE2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x1FC3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1FFE JUMPI PUSH1 0x7 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x201D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x2062 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2099 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0xB98 DUP3 PUSH1 0x0 DUP4 PUSH2 0x1CE9 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLVALUE EQ PUSH2 0x20C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4FB8209 PUSH1 0xE5 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE4FE1D94 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x212D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2151 SWAP2 SWAP1 PUSH2 0x2929 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x217A JUMPI PUSH1 0x40 MLOAD PUSH4 0x29B99A95 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP1 DUP6 ADD DUP9 SWAP1 MSTORE DUP6 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP5 ADD SWAP1 SWAP5 MSTORE PUSH1 0x20 DUP1 DUP5 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE DUP5 MLOAD PUSH2 0xB98 SWAP7 DUP9 AND SWAP6 DUP10 SWAP4 PUSH2 0x1505 SWAP4 DUP9 SWAP4 PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 SWAP2 DUP4 SWAP2 DUP3 DUP9 GAS CALL DUP1 PUSH2 0x221B JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH1 0x0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x2233 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x2240 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1505 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22AB PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22CB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x22B3 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x22EC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x22B0 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xB7F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x233B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2346 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x237E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD77 DUP5 DUP3 DUP6 ADD PUSH2 0x2354 JUMP JUMPDEST DUP4 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH1 0xA0 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0xC0 DUP6 ADD SWAP2 POP PUSH1 0xC0 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2421 JUMPI PUSH1 0xBF NOT DUP8 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 POP PUSH1 0x40 PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x240B PUSH1 0x40 DUP8 ADD DUP3 PUSH2 0x22D4 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x23D9 JUMP JUMPDEST POP POP DUP6 MLOAD PUSH1 0x60 DUP7 ADD MSTORE POP POP PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE SWAP1 POP PUSH2 0xD77 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x24B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24BC DUP10 DUP10 PUSH2 0x243D JUMP JUMPDEST SWAP7 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x24DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24EA DUP11 DUP3 DUP12 ADD PUSH2 0x244F JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0x24FE DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2525 DUP11 DUP3 DUP12 ADD PUSH2 0x244F JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x254D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2558 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2568 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x258D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2346 DUP4 PUSH2 0x2579 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x25E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x25F1 DUP6 DUP3 DUP7 ADD PUSH2 0x2354 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2602 DUP2 PUSH2 0x25AE JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD PUSH2 0x909 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x258D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2652 DUP4 PUSH2 0x2579 JUMP JUMPDEST SWAP2 POP PUSH2 0x2660 PUSH1 0x20 DUP5 ADD PUSH2 0x2624 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x267B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB7F DUP2 PUSH2 0x2313 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x269C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26A6 DUP7 DUP7 PUSH2 0x243D JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x26C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26CD DUP8 DUP3 DUP9 ADD PUSH2 0x244F JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x80 DUP6 ADD CALLDATALOAD PUSH2 0x26E1 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x26FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2759 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2765 DUP6 DUP3 DUP7 ADD PUSH2 0x26EC JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB7F DUP3 PUSH2 0x2579 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x27A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27AB DUP6 PUSH2 0x2579 JUMP JUMPDEST SWAP4 POP PUSH2 0x27B9 PUSH1 0x20 DUP7 ADD PUSH2 0x2624 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x27D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27E0 DUP8 DUP3 DUP9 ADD PUSH2 0x244F JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP6 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x2802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2818 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2824 DUP8 DUP3 DUP9 ADD PUSH2 0x2354 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH1 0x1F NOT DUP3 ADD SLT ISZERO PUSH2 0x2839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP5 ADD SWAP2 POP PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x284E DUP2 PUSH2 0x2313 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP DUP4 MLOAD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x2894 PUSH1 0x40 DUP5 ADD DUP3 DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST POP DUP3 MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x28BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x28C9 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2602 DUP2 PUSH2 0x2313 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB7F DUP4 DUP4 PUSH2 0x243D JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2909 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2366 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x293B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB7F DUP2 PUSH2 0x2313 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2958 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x909 JUMPI PUSH2 0x909 PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x29C0 JUMPI PUSH2 0x29C0 PUSH2 0x295F JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x29C0 JUMPI PUSH2 0x29C0 PUSH2 0x295F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2A10 JUMPI PUSH2 0x2A10 PUSH2 0x295F JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2A31 JUMPI PUSH2 0x2A31 PUSH2 0x295F JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT ISZERO PUSH2 0x2A58 JUMPI PUSH2 0x2A58 PUSH2 0x295F JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x2A68 PUSH1 0x20 DUP3 ADD PUSH2 0x29E8 JUMP JUMPDEST DUP5 DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATASIZE DUP4 GT ISZERO PUSH2 0x2A81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B5E JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2AA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x60 CALLDATASIZE DUP3 SWAP1 SUB SLT ISZERO PUSH2 0x2AB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2ABC PUSH2 0x299E JUMP JUMPDEST PUSH2 0x2AC5 DUP3 PUSH2 0x2579 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2AD3 PUSH1 0x20 DUP4 ADD PUSH2 0x2624 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2AF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP1 CALLDATASIZE PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B18 PUSH2 0x2B13 DUP3 PUSH2 0x2A18 JUMP JUMPDEST PUSH2 0x29E8 JUMP JUMPDEST DUP2 DUP2 MSTORE CALLDATASIZE PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x2B2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE POP POP DUP1 DUP6 MSTORE POP POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2A83 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x2B78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2B85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x2BA4 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x22B0 JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY PUSH1 0x0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xD77 PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x2BBA JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x13E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2C24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2C45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2C5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH2 0x2C97 DUP10 PUSH2 0x2579 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP9 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x2CB4 DUP2 PUSH2 0x2C74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND PUSH1 0x40 DUP5 ADD MSTORE POP DUP8 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xE0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x2CDF PUSH1 0xE0 DUP4 ADD DUP8 DUP10 PUSH2 0x2BBA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x2D01 DUP2 DUP6 DUP8 PUSH2 0x2BBA JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2D37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x2D48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2D56 PUSH2 0x2B13 DUP3 PUSH2 0x2A18 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x2D6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17E7 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x22B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB7F DUP2 PUSH2 0x2C74 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE DUP4 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xBF9 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2DDD PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x22D4 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x17E7 DUP2 DUP6 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB7F DUP2 PUSH2 0x25AE JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH4 0xFFFFFFFF DUP4 MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xA0 PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x2E42 PUSH1 0xE0 DUP5 ADD DUP3 PUSH2 0x22D4 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x3F NOT DUP5 DUP4 SUB ADD PUSH1 0xA0 DUP6 ADD MSTORE PUSH2 0x2E5F DUP3 DUP3 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x80 SWAP7 SWAP1 SWAP7 ADD MLOAD ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E9F PUSH2 0x29C6 JUMP JUMPDEST DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB7F DUP4 DUP4 PUSH2 0x2E85 JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x12A8 JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2EF9 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x119B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2F05 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2F32 JUMPI PUSH2 0x2F32 PUSH2 0x295F JUMP JUMPDEST PUSH2 0x2F46 DUP2 PUSH2 0x2F40 DUP5 SLOAD PUSH2 0x28F5 JUMP JUMPDEST DUP5 PUSH2 0x2ED2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2F7A JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x2F62 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x119B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2FAA JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2F8A JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x2FC8 JUMPI DUP7 DUP5 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD PUSH1 0x20 DUP4 MSTORE DUP1 DUP5 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP6 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP7 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x305B JUMPI PUSH1 0x3F NOT DUP8 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD PUSH4 0xFFFFFFFF DUP2 MLOAD AND DUP7 MSTORE PUSH2 0xFFFF PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD SWAP1 POP PUSH1 0x60 PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x3045 PUSH1 0x60 DUP8 ADD DUP3 PUSH2 0x22D4 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2FFF JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x307A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3083 PUSH2 0x29C6 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x30B7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x909 JUMPI PUSH2 0x909 PUSH2 0x2975 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x20 DUP4 LT ISZERO PUSH2 0x909 JUMPI PUSH1 0x0 NOT PUSH1 0x20 DUP5 SWAP1 SUB PUSH1 0x3 SHL SHL AND SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT DUP2 AND SWAP1 PUSH1 0x8 DUP5 LT ISZERO PUSH2 0x3122 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT PUSH1 0x8 DUP6 SWAP1 SUB PUSH1 0x3 SHL DUP2 SWAP1 SHL DUP3 AND AND SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL DUP6 PUSH1 0xC0 SHL AND DUP2 MSTORE PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP5 PUSH1 0xE0 SHL AND PUSH1 0x8 DUP3 ADD MSTORE DUP3 PUSH1 0xC DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x3168 DUP2 PUSH1 0x2C DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x22B0 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD PUSH1 0x2C ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL DUP5 PUSH1 0xC0 SHL AND PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x31AB DUP2 PUSH1 0x48 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x22B0 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD PUSH1 0x48 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x31CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31D7 PUSH2 0x299E JUMP JUMPDEST DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x31E9 DUP2 PUSH2 0x2C74 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x31FB DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x2E85 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 DUP13 0xC3 CALLDATASIZE 0xAA PUSH13 0x3F40258B0C3AD54353A6477923 TLOAD PUSH16 0xCA359DDDC5BBEAB4A6242E64736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ","sourceMap":"189:1641:61:-:0;;;312:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;450:5;457:7;466:11;479:9;450:5;457:7;2761:2:36;823:11:23;836:9;823:11;836:9;823:11;836:9;498::61;-1:-1:-1;;;;;1273:26:28;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:28;;1350:1;1322:31;;;2046:51:66;2019:18;;1322:31:28;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;;;;;;1047:42:11;;;;;1104:23;;1100:53;;1136:17;;-1:-1:-1;;;1136:17:11;;;;;;;;;;;1100:53;1163:8;;:31;;-1:-1:-1;;;1163:31:11;;-1:-1:-1;;;;;2064:32:66;;;1163:31:11;;;2046:51:66;1163:20:11;;;;;;2019:18:66;;1163:31:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;987:214;;965:83:10;;2831:16:24::1;:14;;;:16;;:::i;:::-;2814:33;;:14;:33;;;2810:68;;;2856:22;;-1:-1:-1::0;;;2856:22:24::1;;;;;;;;;;;2810:68;2919:33;4301:1:::0;2919:14;:33:::1;:::i;:::-;2912:41;::::0;:2:::1;:41;:::i;:::-;2888:65;::::0;-1:-1:-1;1648:5:36;;-1:-1:-1;1648:13:36;;-1:-1:-1;1656:5:36;1648;:13;:::i;:::-;-1:-1:-1;1671:7:36;:17;1681:7;1671;:17;:::i;:::-;;1582:113;;647:202:23;;;;312:199:61;;;;189:1641;;2912:187:28;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:28;;;-1:-1:-1;;;;;;3020:17:28;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;4222:87:24:-;4301:1;;4222:87::o;14:127:66:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:834;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:66;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:66;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:66;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:66;;;725:1;722;715:12;670:59;747:1;757:143;771:6;768:1;765:13;757:143;;;883:4;867:14;;;863:25;;857:32;834:14;;;830:25;;823:67;786:12;757:143;;;-1:-1:-1;948:1:66;920:19;;;941:4;916:30;909:41;;;;924:6;146:834;-1:-1:-1;;;146:834:66:o;985:177::-;1064:13;;-1:-1:-1;;;;;1106:31:66;;1096:42;;1086:70;;1152:1;1149;1142:12;1086:70;985:177;;;:::o;1167:728::-;1284:6;1292;1300;1308;1361:3;1349:9;1340:7;1336:23;1332:33;1329:53;;;1378:1;1375;1368:12;1329:53;1405:16;;-1:-1:-1;;;;;1433:30:66;;1430:50;;;1476:1;1473;1466:12;1430:50;1499:61;1552:7;1543:6;1532:9;1528:22;1499:61;:::i;:::-;1606:2;1591:18;;1585:25;1489:71;;-1:-1:-1;1585:25:66;-1:-1:-1;;;;;;1622:32:66;;1619:52;;;1667:1;1664;1657:12;1619:52;1690:63;1745:7;1734:8;1723:9;1719:24;1690:63;:::i;:::-;1680:73;;;1772:49;1817:2;1806:9;1802:18;1772:49;:::i;:::-;1762:59;;1840:49;1885:2;1874:9;1870:18;1840:49;:::i;:::-;1830:59;;1167:728;;;;;;;:::o;2108:127::-;2169:10;2164:3;2160:20;2157:1;2150:31;2200:4;2197:1;2190:15;2224:4;2221:1;2214:15;2240:151;2330:4;2323:12;;;2309;;;2305:31;;2348:14;;2345:40;;;2365:18;;:::i;:::-;2240:151;;;;:::o;2396:375::-;2484:1;2502:5;2516:249;2537:1;2527:8;2524:15;2516:249;;;2587:4;2582:3;2578:14;2572:4;2569:24;2566:50;;;2596:18;;:::i;:::-;2646:1;2636:8;2632:16;2629:49;;;2660:16;;;;2629:49;2743:1;2739:16;;;;;2699:15;;2516:249;;;2396:375;;;;;;:::o;2776:902::-;2825:5;2855:8;2845:80;;-1:-1:-1;2896:1:66;2910:5;;2845:80;2944:4;2934:76;;-1:-1:-1;2981:1:66;2995:5;;2934:76;3026:4;3044:1;3039:59;;;;3112:1;3107:174;;;;3019:262;;3039:59;3069:1;3060:10;;3083:5;;;3107:174;3144:3;3134:8;3131:17;3128:43;;;3151:18;;:::i;:::-;-1:-1:-1;;3207:1:66;3193:16;;3266:5;;3019:262;;3365:2;3355:8;3352:16;3346:3;3340:4;3337:13;3333:36;3327:2;3317:8;3314:16;3309:2;3303:4;3300:12;3296:35;3293:77;3290:203;;;-1:-1:-1;3402:19:66;;;3478:5;;3290:203;3525:42;-1:-1:-1;;3550:8:66;3544:4;3525:42;:::i;:::-;3603:6;3599:1;3595:6;3591:19;3582:7;3579:32;3576:58;;;3614:18;;:::i;:::-;3652:20;;2776:902;-1:-1:-1;;;2776:902:66:o;3683:140::-;3741:5;3770:47;3811:4;3801:8;3797:19;3791:4;3770:47;:::i;:::-;3761:56;3683:140;-1:-1:-1;;;3683:140:66:o;3828:380::-;3907:1;3903:12;;;;3950;;;3971:61;;4025:4;4017:6;4013:17;4003:27;;3971:61;4078:2;4070:6;4067:14;4047:18;4044:38;4041:161;;4124:10;4119:3;4115:20;4112:1;4105:31;4159:4;4156:1;4149:15;4187:4;4184:1;4177:15;4041:161;;3828:380;;;:::o;4339:518::-;4441:2;4436:3;4433:11;4430:421;;;4477:5;4474:1;4467:16;4521:4;4518:1;4508:18;4591:2;4579:10;4575:19;4572:1;4568:27;4562:4;4558:38;4627:4;4615:10;4612:20;4609:47;;;-1:-1:-1;4650:4:66;4609:47;4705:2;4700:3;4696:12;4693:1;4689:20;4683:4;4679:31;4669:41;;4760:81;4778:2;4771:5;4768:13;4760:81;;;4837:1;4823:16;;4804:1;4793:13;4760:81;;;4764:3;;4430:421;4339:518;;;:::o;5033:1299::-;5153:10;;-1:-1:-1;;;;;5175:30:66;;5172:56;;;5208:18;;:::i;:::-;5237:97;5327:6;5287:38;5319:4;5313:11;5287:38;:::i;:::-;5281:4;5237:97;:::i;:::-;5383:4;5414:2;5403:14;;5431:1;5426:649;;;;6119:1;6136:6;6133:89;;;-1:-1:-1;6188:19:66;;;6182:26;6133:89;-1:-1:-1;;4990:1:66;4986:11;;;4982:24;4978:29;4968:40;5014:1;5010:11;;;4965:57;6235:81;;5396:930;;5426:649;4286:1;4279:14;;;4323:4;4310:18;;-1:-1:-1;;5462:20:66;;;5580:222;5594:7;5591:1;5588:14;5580:222;;;5676:19;;;5670:26;5655:42;;5783:4;5768:20;;;;5736:1;5724:14;;;;5610:12;5580:222;;;5584:3;5830:6;5821:7;5818:19;5815:201;;;5891:19;;;5885:26;-1:-1:-1;;5974:1:66;5970:14;;;5986:3;5966:24;5962:37;5958:42;5943:58;5928:74;;5815:201;-1:-1:-1;;;;6062:1:66;6046:14;;;6042:22;6029:36;;-1:-1:-1;5033:1299:66:o;:::-;189:1641:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@MAX_SUPPLY_13168":{"entryPoint":null,"id":13168,"parameterSlots":0,"returnSlots":0},"@SEND_2781":{"entryPoint":null,"id":2781,"parameterSlots":0,"returnSlots":0},"@SEND_AND_CALL_2784":{"entryPoint":null,"id":2784,"parameterSlots":0,"returnSlots":0},"@_approve_4655":{"entryPoint":4763,"id":4655,"parameterSlots":3,"returnSlots":0},"@_approve_4715":{"entryPoint":6820,"id":4715,"parameterSlots":4,"returnSlots":0},"@_assertOptionsType3_2148":{"entryPoint":6525,"id":2148,"parameterSlots":1,"returnSlots":0},"@_buildMsgAndOptions_3139":{"entryPoint":5612,"id":3139,"parameterSlots":2,"returnSlots":2},"@_burn_4637":{"entryPoint":8303,"id":4637,"parameterSlots":2,"returnSlots":0},"@_callOptionalReturn_5290":{"entryPoint":null,"id":5290,"parameterSlots":2,"returnSlots":0},"@_checkOwner_3917":{"entryPoint":5482,"id":3917,"parameterSlots":0,"returnSlots":0},"@_credit_13250":{"entryPoint":7200,"id":13250,"parameterSlots":3,"returnSlots":1},"@_credit_2735":{"entryPoint":7965,"id":2735,"parameterSlots":3,"returnSlots":1},"@_debitView_3336":{"entryPoint":4781,"id":3336,"parameterSlots":3,"returnSlots":2},"@_debit_2700":{"entryPoint":7660,"id":2700,"parameterSlots":4,"returnSlots":2},"@_getPeerOrRevert_1485":{"entryPoint":4841,"id":1485,"parameterSlots":1,"returnSlots":1},"@_lzReceiveSimulate_3238":{"entryPoint":null,"id":3238,"parameterSlots":7,"returnSlots":0},"@_lzReceive_3213":{"entryPoint":4901,"id":3213,"parameterSlots":7,"returnSlots":0},"@_lzSend_1781":{"entryPoint":7698,"id":1781,"parameterSlots":5,"returnSlots":1},"@_mint_4604":{"entryPoint":6128,"id":4604,"parameterSlots":2,"returnSlots":0},"@_msgSender_6667":{"entryPoint":null,"id":6667,"parameterSlots":0,"returnSlots":1},"@_payLzToken_1838":{"entryPoint":8397,"id":1838,"parameterSlots":1,"returnSlots":0},"@_payNative_1802":{"entryPoint":8357,"id":1802,"parameterSlots":1,"returnSlots":1},"@_quote_1726":{"entryPoint":5903,"id":1726,"parameterSlots":4,"returnSlots":1},"@_removeDust_3272":{"entryPoint":7033,"id":3272,"parameterSlots":1,"returnSlots":1},"@_send_3071":{"entryPoint":6569,"id":3071,"parameterSlots":3,"returnSlots":2},"@_setEnforcedOptions_2071":{"entryPoint":6262,"id":2071,"parameterSlots":1,"returnSlots":0},"@_setPeer_1457":{"entryPoint":5527,"id":1457,"parameterSlots":2,"returnSlots":0},"@_spendAllowance_4763":{"entryPoint":5260,"id":4763,"parameterSlots":3,"returnSlots":0},"@_toLD_3285":{"entryPoint":7147,"id":3285,"parameterSlots":1,"returnSlots":1},"@_toSD_3301":{"entryPoint":7494,"id":3301,"parameterSlots":1,"returnSlots":1},"@_transferOwnership_3979":{"entryPoint":6182,"id":3979,"parameterSlots":1,"returnSlots":0},"@_transfer_4494":{"entryPoint":5387,"id":4494,"parameterSlots":3,"returnSlots":0},"@_update_13288":{"entryPoint":7401,"id":13288,"parameterSlots":3,"returnSlots":0},"@_update_4571":{"entryPoint":8005,"id":4571,"parameterSlots":3,"returnSlots":0},"@addressToBytes32_3811":{"entryPoint":null,"id":3811,"parameterSlots":1,"returnSlots":1},"@allowInitializePath_1572":{"entryPoint":4709,"id":1572,"parameterSlots":1,"returnSlots":1},"@allowance_4391":{"entryPoint":null,"id":4391,"parameterSlots":2,"returnSlots":1},"@amountSD_3778":{"entryPoint":7112,"id":3778,"parameterSlots":2,"returnSlots":1},"@approvalRequired_2667":{"entryPoint":null,"id":2667,"parameterSlots":0,"returnSlots":1},"@approve_4415":{"entryPoint":2293,"id":4415,"parameterSlots":2,"returnSlots":1},"@balanceOf_4350":{"entryPoint":null,"id":4350,"parameterSlots":1,"returnSlots":1},"@bytes32ToAddress_3831":{"entryPoint":null,"id":3831,"parameterSlots":1,"returnSlots":1},"@combineOptions_2129":{"entryPoint":3510,"id":2129,"parameterSlots":4,"returnSlots":1},"@composeMsg_3791":{"entryPoint":7276,"id":3791,"parameterSlots":2,"returnSlots":1},"@decimalConversionRate_2778":{"entryPoint":null,"id":2778,"parameterSlots":0,"returnSlots":0},"@decimals_4328":{"entryPoint":null,"id":4328,"parameterSlots":0,"returnSlots":1},"@encode_3548":{"entryPoint":7351,"id":3548,"parameterSlots":4,"returnSlots":1},"@encode_3728":{"entryPoint":7538,"id":3728,"parameterSlots":3,"returnSlots":2},"@endpoint_1386":{"entryPoint":null,"id":1386,"parameterSlots":0,"returnSlots":0},"@enforcedOptions_2006":{"entryPoint":3156,"id":2006,"parameterSlots":0,"returnSlots":0},"@isComposeMsgSender_1554":{"entryPoint":3434,"id":1554,"parameterSlots":4,"returnSlots":1},"@isComposed_3742":{"entryPoint":null,"id":3742,"parameterSlots":2,"returnSlots":1},"@isPeer_3256":{"entryPoint":null,"id":3256,"parameterSlots":2,"returnSlots":1},"@lzReceiveAndRevert_2262":{"entryPoint":3934,"id":2262,"parameterSlots":2,"returnSlots":0},"@lzReceiveSimulate_2297":{"entryPoint":4514,"id":2297,"parameterSlots":7,"returnSlots":0},"@lzReceive_1637":{"entryPoint":2720,"id":1637,"parameterSlots":7,"returnSlots":0},"@mint_13218":{"entryPoint":3075,"id":13218,"parameterSlots":2,"returnSlots":0},"@msgInspector_2786":{"entryPoint":null,"id":2786,"parameterSlots":0,"returnSlots":0},"@name_4310":{"entryPoint":2147,"id":4310,"parameterSlots":0,"returnSlots":1},"@nextNonce_1585":{"entryPoint":null,"id":1585,"parameterSlots":2,"returnSlots":1},"@oAppVersion_1370":{"entryPoint":null,"id":1370,"parameterSlots":0,"returnSlots":2},"@oApp_2178":{"entryPoint":null,"id":2178,"parameterSlots":0,"returnSlots":1},"@oftVersion_2839":{"entryPoint":null,"id":2839,"parameterSlots":0,"returnSlots":2},"@owner_3900":{"entryPoint":null,"id":3900,"parameterSlots":0,"returnSlots":1},"@peers_1390":{"entryPoint":null,"id":1390,"parameterSlots":0,"returnSlots":0},"@preCrime_2166":{"entryPoint":null,"id":2166,"parameterSlots":0,"returnSlots":0},"@quoteOFT_2933":{"entryPoint":2319,"id":2933,"parameterSlots":1,"returnSlots":3},"@quoteSend_2974":{"entryPoint":2972,"id":2974,"parameterSlots":2,"returnSlots":1},"@renounceOwnership_3931":{"entryPoint":3414,"id":3931,"parameterSlots":0,"returnSlots":0},"@safeTransferFrom_4940":{"entryPoint":null,"id":4940,"parameterSlots":4,"returnSlots":0},"@sendTo_3758":{"entryPoint":7088,"id":3758,"parameterSlots":2,"returnSlots":1},"@send_2999":{"entryPoint":4328,"id":2999,"parameterSlots":3,"returnSlots":2},"@setDelegate_1500":{"entryPoint":4380,"id":1500,"parameterSlots":1,"returnSlots":0},"@setEnforcedOptions_2021":{"entryPoint":3484,"id":2021,"parameterSlots":2,"returnSlots":0},"@setMsgInspector_2865":{"entryPoint":3321,"id":2865,"parameterSlots":1,"returnSlots":0},"@setPeer_1437":{"entryPoint":2950,"id":1437,"parameterSlots":2,"returnSlots":0},"@setPreCrime_2195":{"entryPoint":4561,"id":2195,"parameterSlots":1,"returnSlots":0},"@sharedDecimals_2848":{"entryPoint":null,"id":2848,"parameterSlots":0,"returnSlots":1},"@symbol_4319":{"entryPoint":3455,"id":4319,"parameterSlots":0,"returnSlots":1},"@token_2658":{"entryPoint":null,"id":2658,"parameterSlots":0,"returnSlots":1},"@totalSupply_4337":{"entryPoint":null,"id":4337,"parameterSlots":0,"returnSlots":1},"@transferFrom_4447":{"entryPoint":2912,"id":4447,"parameterSlots":3,"returnSlots":1},"@transferOwnership_3959":{"entryPoint":4647,"id":3959,"parameterSlots":1,"returnSlots":0},"@transfer_4374":{"entryPoint":3470,"id":4374,"parameterSlots":2,"returnSlots":1},"abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata":{"entryPoint":9964,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_bytes_calldata":{"entryPoint":9295,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_struct_MessagingFee_fromMemory":{"entryPoint":11909,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_Origin_calldata":{"entryPoint":9277,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_struct_SendParam_calldata":{"entryPoint":9044,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":9833,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":10537,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":10411,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":9528,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":9000,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":10032,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":11759,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":11535,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr":{"entryPoint":12391,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr_fromMemory":{"entryPoint":11958,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_fromMemory":{"entryPoint":12731,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptr":{"entryPoint":10457,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes32t_bytes_calldata_ptrt_addresst_bytes_calldata_ptr":{"entryPoint":9367,"id":null,"parameterSlots":2,"returnSlots":7},"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes_calldata_ptrt_address":{"entryPoint":9862,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptr":{"entryPoint":9068,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_bool":{"entryPoint":9660,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_struct$_MessagingFee_$33_calldata_ptrt_address":{"entryPoint":10220,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":10566,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint32":{"entryPoint":10097,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint32t_bytes32":{"entryPoint":9618,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint32t_uint16":{"entryPoint":9782,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint32t_uint16t_bytes_calldata_ptr":{"entryPoint":10124,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_uint64":{"entryPoint":11644,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_uint16":{"entryPoint":9764,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_uint32":{"entryPoint":9593,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_bytes_calldata":{"entryPoint":11194,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_string":{"entryPoint":8916,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_OFTLimit":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_bytes32_t_uint64__to_t_bytes32_t_uint64__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":12664,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_calldata_ptr_slice__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":11154,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_packed_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__to_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":12585,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes32_t_rational_0_by_1_t_bytes_memory_ptr__to_t_address_t_bytes32_t_uint16_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11673,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":12247,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes4_t_uint64__to_t_bytes4_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11235,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11722,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_ILayerZeroEndpointV2_$202__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8960,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_MessagingFee_$33_memory_ptr__to_t_struct$_MessagingFee_$33_memory_ptr__fromStack_reversed":{"entryPoint":9741,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_MessagingParams_$20_memory_ptr_t_address__to_t_struct$_MessagingParams_$20_memory_ptr_t_address__fromStack_reversed":{"entryPoint":11788,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed":{"entryPoint":10329,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed":{"entryPoint":9120,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_struct$_Origin_$40_calldata_ptr_t_bytes32_t_bytes_calldata_ptr_t_address_t_bytes_calldata_ptr__to_t_struct$_Origin_$40_memory_ptr_t_bytes32_t_bytes_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11401,"id":null,"parameterSlots":8,"returnSlots":1},"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint32_t_bytes32__to_t_uint32_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint32_t_uint256_t_uint256__to_t_uint32_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint64_t_uint64__to_t_uint64_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"access_calldata_tail_t_bytes_calldata_ptr":{"entryPoint":11310,"id":null,"parameterSlots":2,"returnSlots":2},"access_calldata_tail_t_struct$_InboundPacket_$2486_calldata_ptr":{"entryPoint":11277,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":10728,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory_3873":{"entryPoint":10654,"id":null,"parameterSlots":0,"returnSlots":1},"allocate_memory_3874":{"entryPoint":10694,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_bytes":{"entryPoint":10776,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_bytes_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":11112,"id":null,"parameterSlots":4,"returnSlots":2},"checked_add_t_uint256":{"entryPoint":10635,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":12442,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":12476,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_bytes_storage":{"entryPoint":11986,"id":null,"parameterSlots":3,"returnSlots":0},"convert_array_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr":{"entryPoint":10815,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes32":{"entryPoint":12499,"id":null,"parameterSlots":2,"returnSlots":1},"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes8":{"entryPoint":12529,"id":null,"parameterSlots":2,"returnSlots":1},"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage":{"entryPoint":12057,"id":null,"parameterSlots":2,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":8880,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":10485,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":10613,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":11255,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":10591,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":8979,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":9646,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_uint64":{"entryPoint":11380,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:34459:66","nodeType":"YulBlock","src":"0:34459:66","statements":[{"nativeSrc":"6:3:66","nodeType":"YulBlock","src":"6:3:66","statements":[]},{"body":{"nativeSrc":"80:184:66","nodeType":"YulBlock","src":"80:184:66","statements":[{"nativeSrc":"90:10:66","nodeType":"YulVariableDeclaration","src":"90:10:66","value":{"kind":"number","nativeSrc":"99:1:66","nodeType":"YulLiteral","src":"99:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"94:1:66","nodeType":"YulTypedName","src":"94:1:66","type":""}]},{"body":{"nativeSrc":"159:63:66","nodeType":"YulBlock","src":"159:63:66","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"184:3:66","nodeType":"YulIdentifier","src":"184:3:66"},{"name":"i","nativeSrc":"189:1:66","nodeType":"YulIdentifier","src":"189:1:66"}],"functionName":{"name":"add","nativeSrc":"180:3:66","nodeType":"YulIdentifier","src":"180:3:66"},"nativeSrc":"180:11:66","nodeType":"YulFunctionCall","src":"180:11:66"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"203:3:66","nodeType":"YulIdentifier","src":"203:3:66"},{"name":"i","nativeSrc":"208:1:66","nodeType":"YulIdentifier","src":"208:1:66"}],"functionName":{"name":"add","nativeSrc":"199:3:66","nodeType":"YulIdentifier","src":"199:3:66"},"nativeSrc":"199:11:66","nodeType":"YulFunctionCall","src":"199:11:66"}],"functionName":{"name":"mload","nativeSrc":"193:5:66","nodeType":"YulIdentifier","src":"193:5:66"},"nativeSrc":"193:18:66","nodeType":"YulFunctionCall","src":"193:18:66"}],"functionName":{"name":"mstore","nativeSrc":"173:6:66","nodeType":"YulIdentifier","src":"173:6:66"},"nativeSrc":"173:39:66","nodeType":"YulFunctionCall","src":"173:39:66"},"nativeSrc":"173:39:66","nodeType":"YulExpressionStatement","src":"173:39:66"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"120:1:66","nodeType":"YulIdentifier","src":"120:1:66"},{"name":"length","nativeSrc":"123:6:66","nodeType":"YulIdentifier","src":"123:6:66"}],"functionName":{"name":"lt","nativeSrc":"117:2:66","nodeType":"YulIdentifier","src":"117:2:66"},"nativeSrc":"117:13:66","nodeType":"YulFunctionCall","src":"117:13:66"},"nativeSrc":"109:113:66","nodeType":"YulForLoop","post":{"nativeSrc":"131:19:66","nodeType":"YulBlock","src":"131:19:66","statements":[{"nativeSrc":"133:15:66","nodeType":"YulAssignment","src":"133:15:66","value":{"arguments":[{"name":"i","nativeSrc":"142:1:66","nodeType":"YulIdentifier","src":"142:1:66"},{"kind":"number","nativeSrc":"145:2:66","nodeType":"YulLiteral","src":"145:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"138:3:66","nodeType":"YulIdentifier","src":"138:3:66"},"nativeSrc":"138:10:66","nodeType":"YulFunctionCall","src":"138:10:66"},"variableNames":[{"name":"i","nativeSrc":"133:1:66","nodeType":"YulIdentifier","src":"133:1:66"}]}]},"pre":{"nativeSrc":"113:3:66","nodeType":"YulBlock","src":"113:3:66","statements":[]},"src":"109:113:66"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"242:3:66","nodeType":"YulIdentifier","src":"242:3:66"},{"name":"length","nativeSrc":"247:6:66","nodeType":"YulIdentifier","src":"247:6:66"}],"functionName":{"name":"add","nativeSrc":"238:3:66","nodeType":"YulIdentifier","src":"238:3:66"},"nativeSrc":"238:16:66","nodeType":"YulFunctionCall","src":"238:16:66"},{"kind":"number","nativeSrc":"256:1:66","nodeType":"YulLiteral","src":"256:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"231:6:66","nodeType":"YulIdentifier","src":"231:6:66"},"nativeSrc":"231:27:66","nodeType":"YulFunctionCall","src":"231:27:66"},"nativeSrc":"231:27:66","nodeType":"YulExpressionStatement","src":"231:27:66"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"14:250:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"58:3:66","nodeType":"YulTypedName","src":"58:3:66","type":""},{"name":"dst","nativeSrc":"63:3:66","nodeType":"YulTypedName","src":"63:3:66","type":""},{"name":"length","nativeSrc":"68:6:66","nodeType":"YulTypedName","src":"68:6:66","type":""}],"src":"14:250:66"},{"body":{"nativeSrc":"319:221:66","nodeType":"YulBlock","src":"319:221:66","statements":[{"nativeSrc":"329:26:66","nodeType":"YulVariableDeclaration","src":"329:26:66","value":{"arguments":[{"name":"value","nativeSrc":"349:5:66","nodeType":"YulIdentifier","src":"349:5:66"}],"functionName":{"name":"mload","nativeSrc":"343:5:66","nodeType":"YulIdentifier","src":"343:5:66"},"nativeSrc":"343:12:66","nodeType":"YulFunctionCall","src":"343:12:66"},"variables":[{"name":"length","nativeSrc":"333:6:66","nodeType":"YulTypedName","src":"333:6:66","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"371:3:66","nodeType":"YulIdentifier","src":"371:3:66"},{"name":"length","nativeSrc":"376:6:66","nodeType":"YulIdentifier","src":"376:6:66"}],"functionName":{"name":"mstore","nativeSrc":"364:6:66","nodeType":"YulIdentifier","src":"364:6:66"},"nativeSrc":"364:19:66","nodeType":"YulFunctionCall","src":"364:19:66"},"nativeSrc":"364:19:66","nodeType":"YulExpressionStatement","src":"364:19:66"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"431:5:66","nodeType":"YulIdentifier","src":"431:5:66"},{"kind":"number","nativeSrc":"438:4:66","nodeType":"YulLiteral","src":"438:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"427:3:66","nodeType":"YulIdentifier","src":"427:3:66"},"nativeSrc":"427:16:66","nodeType":"YulFunctionCall","src":"427:16:66"},{"arguments":[{"name":"pos","nativeSrc":"449:3:66","nodeType":"YulIdentifier","src":"449:3:66"},{"kind":"number","nativeSrc":"454:4:66","nodeType":"YulLiteral","src":"454:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"445:3:66","nodeType":"YulIdentifier","src":"445:3:66"},"nativeSrc":"445:14:66","nodeType":"YulFunctionCall","src":"445:14:66"},{"name":"length","nativeSrc":"461:6:66","nodeType":"YulIdentifier","src":"461:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"392:34:66","nodeType":"YulIdentifier","src":"392:34:66"},"nativeSrc":"392:76:66","nodeType":"YulFunctionCall","src":"392:76:66"},"nativeSrc":"392:76:66","nodeType":"YulExpressionStatement","src":"392:76:66"},{"nativeSrc":"477:57:66","nodeType":"YulAssignment","src":"477:57:66","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"492:3:66","nodeType":"YulIdentifier","src":"492:3:66"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"505:6:66","nodeType":"YulIdentifier","src":"505:6:66"},{"kind":"number","nativeSrc":"513:2:66","nodeType":"YulLiteral","src":"513:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"501:3:66","nodeType":"YulIdentifier","src":"501:3:66"},"nativeSrc":"501:15:66","nodeType":"YulFunctionCall","src":"501:15:66"},{"arguments":[{"kind":"number","nativeSrc":"522:2:66","nodeType":"YulLiteral","src":"522:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"518:3:66","nodeType":"YulIdentifier","src":"518:3:66"},"nativeSrc":"518:7:66","nodeType":"YulFunctionCall","src":"518:7:66"}],"functionName":{"name":"and","nativeSrc":"497:3:66","nodeType":"YulIdentifier","src":"497:3:66"},"nativeSrc":"497:29:66","nodeType":"YulFunctionCall","src":"497:29:66"}],"functionName":{"name":"add","nativeSrc":"488:3:66","nodeType":"YulIdentifier","src":"488:3:66"},"nativeSrc":"488:39:66","nodeType":"YulFunctionCall","src":"488:39:66"},{"kind":"number","nativeSrc":"529:4:66","nodeType":"YulLiteral","src":"529:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"484:3:66","nodeType":"YulIdentifier","src":"484:3:66"},"nativeSrc":"484:50:66","nodeType":"YulFunctionCall","src":"484:50:66"},"variableNames":[{"name":"end","nativeSrc":"477:3:66","nodeType":"YulIdentifier","src":"477:3:66"}]}]},"name":"abi_encode_string","nativeSrc":"269:271:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"296:5:66","nodeType":"YulTypedName","src":"296:5:66","type":""},{"name":"pos","nativeSrc":"303:3:66","nodeType":"YulTypedName","src":"303:3:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"311:3:66","nodeType":"YulTypedName","src":"311:3:66","type":""}],"src":"269:271:66"},{"body":{"nativeSrc":"666:99:66","nodeType":"YulBlock","src":"666:99:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"683:9:66","nodeType":"YulIdentifier","src":"683:9:66"},{"kind":"number","nativeSrc":"694:2:66","nodeType":"YulLiteral","src":"694:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"676:6:66","nodeType":"YulIdentifier","src":"676:6:66"},"nativeSrc":"676:21:66","nodeType":"YulFunctionCall","src":"676:21:66"},"nativeSrc":"676:21:66","nodeType":"YulExpressionStatement","src":"676:21:66"},{"nativeSrc":"706:53:66","nodeType":"YulAssignment","src":"706:53:66","value":{"arguments":[{"name":"value0","nativeSrc":"732:6:66","nodeType":"YulIdentifier","src":"732:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"744:9:66","nodeType":"YulIdentifier","src":"744:9:66"},{"kind":"number","nativeSrc":"755:2:66","nodeType":"YulLiteral","src":"755:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"740:3:66","nodeType":"YulIdentifier","src":"740:3:66"},"nativeSrc":"740:18:66","nodeType":"YulFunctionCall","src":"740:18:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"714:17:66","nodeType":"YulIdentifier","src":"714:17:66"},"nativeSrc":"714:45:66","nodeType":"YulFunctionCall","src":"714:45:66"},"variableNames":[{"name":"tail","nativeSrc":"706:4:66","nodeType":"YulIdentifier","src":"706:4:66"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"545:220:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"635:9:66","nodeType":"YulTypedName","src":"635:9:66","type":""},{"name":"value0","nativeSrc":"646:6:66","nodeType":"YulTypedName","src":"646:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"657:4:66","nodeType":"YulTypedName","src":"657:4:66","type":""}],"src":"545:220:66"},{"body":{"nativeSrc":"815:86:66","nodeType":"YulBlock","src":"815:86:66","statements":[{"body":{"nativeSrc":"879:16:66","nodeType":"YulBlock","src":"879:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"888:1:66","nodeType":"YulLiteral","src":"888:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"891:1:66","nodeType":"YulLiteral","src":"891:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"881:6:66","nodeType":"YulIdentifier","src":"881:6:66"},"nativeSrc":"881:12:66","nodeType":"YulFunctionCall","src":"881:12:66"},"nativeSrc":"881:12:66","nodeType":"YulExpressionStatement","src":"881:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"838:5:66","nodeType":"YulIdentifier","src":"838:5:66"},{"arguments":[{"name":"value","nativeSrc":"849:5:66","nodeType":"YulIdentifier","src":"849:5:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"864:3:66","nodeType":"YulLiteral","src":"864:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"869:1:66","nodeType":"YulLiteral","src":"869:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"860:3:66","nodeType":"YulIdentifier","src":"860:3:66"},"nativeSrc":"860:11:66","nodeType":"YulFunctionCall","src":"860:11:66"},{"kind":"number","nativeSrc":"873:1:66","nodeType":"YulLiteral","src":"873:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"856:3:66","nodeType":"YulIdentifier","src":"856:3:66"},"nativeSrc":"856:19:66","nodeType":"YulFunctionCall","src":"856:19:66"}],"functionName":{"name":"and","nativeSrc":"845:3:66","nodeType":"YulIdentifier","src":"845:3:66"},"nativeSrc":"845:31:66","nodeType":"YulFunctionCall","src":"845:31:66"}],"functionName":{"name":"eq","nativeSrc":"835:2:66","nodeType":"YulIdentifier","src":"835:2:66"},"nativeSrc":"835:42:66","nodeType":"YulFunctionCall","src":"835:42:66"}],"functionName":{"name":"iszero","nativeSrc":"828:6:66","nodeType":"YulIdentifier","src":"828:6:66"},"nativeSrc":"828:50:66","nodeType":"YulFunctionCall","src":"828:50:66"},"nativeSrc":"825:70:66","nodeType":"YulIf","src":"825:70:66"}]},"name":"validator_revert_address","nativeSrc":"770:131:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"804:5:66","nodeType":"YulTypedName","src":"804:5:66","type":""}],"src":"770:131:66"},{"body":{"nativeSrc":"993:280:66","nodeType":"YulBlock","src":"993:280:66","statements":[{"body":{"nativeSrc":"1039:16:66","nodeType":"YulBlock","src":"1039:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1048:1:66","nodeType":"YulLiteral","src":"1048:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1051:1:66","nodeType":"YulLiteral","src":"1051:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1041:6:66","nodeType":"YulIdentifier","src":"1041:6:66"},"nativeSrc":"1041:12:66","nodeType":"YulFunctionCall","src":"1041:12:66"},"nativeSrc":"1041:12:66","nodeType":"YulExpressionStatement","src":"1041:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1014:7:66","nodeType":"YulIdentifier","src":"1014:7:66"},{"name":"headStart","nativeSrc":"1023:9:66","nodeType":"YulIdentifier","src":"1023:9:66"}],"functionName":{"name":"sub","nativeSrc":"1010:3:66","nodeType":"YulIdentifier","src":"1010:3:66"},"nativeSrc":"1010:23:66","nodeType":"YulFunctionCall","src":"1010:23:66"},{"kind":"number","nativeSrc":"1035:2:66","nodeType":"YulLiteral","src":"1035:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"1006:3:66","nodeType":"YulIdentifier","src":"1006:3:66"},"nativeSrc":"1006:32:66","nodeType":"YulFunctionCall","src":"1006:32:66"},"nativeSrc":"1003:52:66","nodeType":"YulIf","src":"1003:52:66"},{"nativeSrc":"1064:36:66","nodeType":"YulVariableDeclaration","src":"1064:36:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1090:9:66","nodeType":"YulIdentifier","src":"1090:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"1077:12:66","nodeType":"YulIdentifier","src":"1077:12:66"},"nativeSrc":"1077:23:66","nodeType":"YulFunctionCall","src":"1077:23:66"},"variables":[{"name":"value","nativeSrc":"1068:5:66","nodeType":"YulTypedName","src":"1068:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"1134:5:66","nodeType":"YulIdentifier","src":"1134:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"1109:24:66","nodeType":"YulIdentifier","src":"1109:24:66"},"nativeSrc":"1109:31:66","nodeType":"YulFunctionCall","src":"1109:31:66"},"nativeSrc":"1109:31:66","nodeType":"YulExpressionStatement","src":"1109:31:66"},{"nativeSrc":"1149:15:66","nodeType":"YulAssignment","src":"1149:15:66","value":{"name":"value","nativeSrc":"1159:5:66","nodeType":"YulIdentifier","src":"1159:5:66"},"variableNames":[{"name":"value0","nativeSrc":"1149:6:66","nodeType":"YulIdentifier","src":"1149:6:66"}]},{"nativeSrc":"1173:16:66","nodeType":"YulVariableDeclaration","src":"1173:16:66","value":{"kind":"number","nativeSrc":"1188:1:66","nodeType":"YulLiteral","src":"1188:1:66","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"1177:7:66","nodeType":"YulTypedName","src":"1177:7:66","type":""}]},{"nativeSrc":"1198:43:66","nodeType":"YulAssignment","src":"1198:43:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1226:9:66","nodeType":"YulIdentifier","src":"1226:9:66"},{"kind":"number","nativeSrc":"1237:2:66","nodeType":"YulLiteral","src":"1237:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1222:3:66","nodeType":"YulIdentifier","src":"1222:3:66"},"nativeSrc":"1222:18:66","nodeType":"YulFunctionCall","src":"1222:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"1209:12:66","nodeType":"YulIdentifier","src":"1209:12:66"},"nativeSrc":"1209:32:66","nodeType":"YulFunctionCall","src":"1209:32:66"},"variableNames":[{"name":"value_1","nativeSrc":"1198:7:66","nodeType":"YulIdentifier","src":"1198:7:66"}]},{"nativeSrc":"1250:17:66","nodeType":"YulAssignment","src":"1250:17:66","value":{"name":"value_1","nativeSrc":"1260:7:66","nodeType":"YulIdentifier","src":"1260:7:66"},"variableNames":[{"name":"value1","nativeSrc":"1250:6:66","nodeType":"YulIdentifier","src":"1250:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"906:367:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"951:9:66","nodeType":"YulTypedName","src":"951:9:66","type":""},{"name":"dataEnd","nativeSrc":"962:7:66","nodeType":"YulTypedName","src":"962:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"974:6:66","nodeType":"YulTypedName","src":"974:6:66","type":""},{"name":"value1","nativeSrc":"982:6:66","nodeType":"YulTypedName","src":"982:6:66","type":""}],"src":"906:367:66"},{"body":{"nativeSrc":"1373:92:66","nodeType":"YulBlock","src":"1373:92:66","statements":[{"nativeSrc":"1383:26:66","nodeType":"YulAssignment","src":"1383:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1395:9:66","nodeType":"YulIdentifier","src":"1395:9:66"},{"kind":"number","nativeSrc":"1406:2:66","nodeType":"YulLiteral","src":"1406:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1391:3:66","nodeType":"YulIdentifier","src":"1391:3:66"},"nativeSrc":"1391:18:66","nodeType":"YulFunctionCall","src":"1391:18:66"},"variableNames":[{"name":"tail","nativeSrc":"1383:4:66","nodeType":"YulIdentifier","src":"1383:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1425:9:66","nodeType":"YulIdentifier","src":"1425:9:66"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"1450:6:66","nodeType":"YulIdentifier","src":"1450:6:66"}],"functionName":{"name":"iszero","nativeSrc":"1443:6:66","nodeType":"YulIdentifier","src":"1443:6:66"},"nativeSrc":"1443:14:66","nodeType":"YulFunctionCall","src":"1443:14:66"}],"functionName":{"name":"iszero","nativeSrc":"1436:6:66","nodeType":"YulIdentifier","src":"1436:6:66"},"nativeSrc":"1436:22:66","nodeType":"YulFunctionCall","src":"1436:22:66"}],"functionName":{"name":"mstore","nativeSrc":"1418:6:66","nodeType":"YulIdentifier","src":"1418:6:66"},"nativeSrc":"1418:41:66","nodeType":"YulFunctionCall","src":"1418:41:66"},"nativeSrc":"1418:41:66","nodeType":"YulExpressionStatement","src":"1418:41:66"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"1278:187:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1342:9:66","nodeType":"YulTypedName","src":"1342:9:66","type":""},{"name":"value0","nativeSrc":"1353:6:66","nodeType":"YulTypedName","src":"1353:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1364:4:66","nodeType":"YulTypedName","src":"1364:4:66","type":""}],"src":"1278:187:66"},{"body":{"nativeSrc":"1542:86:66","nodeType":"YulBlock","src":"1542:86:66","statements":[{"body":{"nativeSrc":"1582:16:66","nodeType":"YulBlock","src":"1582:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1591:1:66","nodeType":"YulLiteral","src":"1591:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1594:1:66","nodeType":"YulLiteral","src":"1594:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1584:6:66","nodeType":"YulIdentifier","src":"1584:6:66"},"nativeSrc":"1584:12:66","nodeType":"YulFunctionCall","src":"1584:12:66"},"nativeSrc":"1584:12:66","nodeType":"YulExpressionStatement","src":"1584:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"1563:3:66","nodeType":"YulIdentifier","src":"1563:3:66"},{"name":"offset","nativeSrc":"1568:6:66","nodeType":"YulIdentifier","src":"1568:6:66"}],"functionName":{"name":"sub","nativeSrc":"1559:3:66","nodeType":"YulIdentifier","src":"1559:3:66"},"nativeSrc":"1559:16:66","nodeType":"YulFunctionCall","src":"1559:16:66"},{"kind":"number","nativeSrc":"1577:3:66","nodeType":"YulLiteral","src":"1577:3:66","type":"","value":"224"}],"functionName":{"name":"slt","nativeSrc":"1555:3:66","nodeType":"YulIdentifier","src":"1555:3:66"},"nativeSrc":"1555:26:66","nodeType":"YulFunctionCall","src":"1555:26:66"},"nativeSrc":"1552:46:66","nodeType":"YulIf","src":"1552:46:66"},{"nativeSrc":"1607:15:66","nodeType":"YulAssignment","src":"1607:15:66","value":{"name":"offset","nativeSrc":"1616:6:66","nodeType":"YulIdentifier","src":"1616:6:66"},"variableNames":[{"name":"value","nativeSrc":"1607:5:66","nodeType":"YulIdentifier","src":"1607:5:66"}]}]},"name":"abi_decode_struct_SendParam_calldata","nativeSrc":"1470:158:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1516:6:66","nodeType":"YulTypedName","src":"1516:6:66","type":""},{"name":"end","nativeSrc":"1524:3:66","nodeType":"YulTypedName","src":"1524:3:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1532:5:66","nodeType":"YulTypedName","src":"1532:5:66","type":""}],"src":"1470:158:66"},{"body":{"nativeSrc":"1732:261:66","nodeType":"YulBlock","src":"1732:261:66","statements":[{"body":{"nativeSrc":"1778:16:66","nodeType":"YulBlock","src":"1778:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1787:1:66","nodeType":"YulLiteral","src":"1787:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1790:1:66","nodeType":"YulLiteral","src":"1790:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1780:6:66","nodeType":"YulIdentifier","src":"1780:6:66"},"nativeSrc":"1780:12:66","nodeType":"YulFunctionCall","src":"1780:12:66"},"nativeSrc":"1780:12:66","nodeType":"YulExpressionStatement","src":"1780:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1753:7:66","nodeType":"YulIdentifier","src":"1753:7:66"},{"name":"headStart","nativeSrc":"1762:9:66","nodeType":"YulIdentifier","src":"1762:9:66"}],"functionName":{"name":"sub","nativeSrc":"1749:3:66","nodeType":"YulIdentifier","src":"1749:3:66"},"nativeSrc":"1749:23:66","nodeType":"YulFunctionCall","src":"1749:23:66"},{"kind":"number","nativeSrc":"1774:2:66","nodeType":"YulLiteral","src":"1774:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1745:3:66","nodeType":"YulIdentifier","src":"1745:3:66"},"nativeSrc":"1745:32:66","nodeType":"YulFunctionCall","src":"1745:32:66"},"nativeSrc":"1742:52:66","nodeType":"YulIf","src":"1742:52:66"},{"nativeSrc":"1803:37:66","nodeType":"YulVariableDeclaration","src":"1803:37:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1830:9:66","nodeType":"YulIdentifier","src":"1830:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"1817:12:66","nodeType":"YulIdentifier","src":"1817:12:66"},"nativeSrc":"1817:23:66","nodeType":"YulFunctionCall","src":"1817:23:66"},"variables":[{"name":"offset","nativeSrc":"1807:6:66","nodeType":"YulTypedName","src":"1807:6:66","type":""}]},{"body":{"nativeSrc":"1883:16:66","nodeType":"YulBlock","src":"1883:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1892:1:66","nodeType":"YulLiteral","src":"1892:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1895:1:66","nodeType":"YulLiteral","src":"1895:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1885:6:66","nodeType":"YulIdentifier","src":"1885:6:66"},"nativeSrc":"1885:12:66","nodeType":"YulFunctionCall","src":"1885:12:66"},"nativeSrc":"1885:12:66","nodeType":"YulExpressionStatement","src":"1885:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1855:6:66","nodeType":"YulIdentifier","src":"1855:6:66"},{"kind":"number","nativeSrc":"1863:18:66","nodeType":"YulLiteral","src":"1863:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1852:2:66","nodeType":"YulIdentifier","src":"1852:2:66"},"nativeSrc":"1852:30:66","nodeType":"YulFunctionCall","src":"1852:30:66"},"nativeSrc":"1849:50:66","nodeType":"YulIf","src":"1849:50:66"},{"nativeSrc":"1908:79:66","nodeType":"YulAssignment","src":"1908:79:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1959:9:66","nodeType":"YulIdentifier","src":"1959:9:66"},{"name":"offset","nativeSrc":"1970:6:66","nodeType":"YulIdentifier","src":"1970:6:66"}],"functionName":{"name":"add","nativeSrc":"1955:3:66","nodeType":"YulIdentifier","src":"1955:3:66"},"nativeSrc":"1955:22:66","nodeType":"YulFunctionCall","src":"1955:22:66"},{"name":"dataEnd","nativeSrc":"1979:7:66","nodeType":"YulIdentifier","src":"1979:7:66"}],"functionName":{"name":"abi_decode_struct_SendParam_calldata","nativeSrc":"1918:36:66","nodeType":"YulIdentifier","src":"1918:36:66"},"nativeSrc":"1918:69:66","nodeType":"YulFunctionCall","src":"1918:69:66"},"variableNames":[{"name":"value0","nativeSrc":"1908:6:66","nodeType":"YulIdentifier","src":"1908:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptr","nativeSrc":"1633:360:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1698:9:66","nodeType":"YulTypedName","src":"1698:9:66","type":""},{"name":"dataEnd","nativeSrc":"1709:7:66","nodeType":"YulTypedName","src":"1709:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1721:6:66","nodeType":"YulTypedName","src":"1721:6:66","type":""}],"src":"1633:360:66"},{"body":{"nativeSrc":"2050:97:66","nodeType":"YulBlock","src":"2050:97:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"2067:3:66","nodeType":"YulIdentifier","src":"2067:3:66"},{"arguments":[{"name":"value","nativeSrc":"2078:5:66","nodeType":"YulIdentifier","src":"2078:5:66"}],"functionName":{"name":"mload","nativeSrc":"2072:5:66","nodeType":"YulIdentifier","src":"2072:5:66"},"nativeSrc":"2072:12:66","nodeType":"YulFunctionCall","src":"2072:12:66"}],"functionName":{"name":"mstore","nativeSrc":"2060:6:66","nodeType":"YulIdentifier","src":"2060:6:66"},"nativeSrc":"2060:25:66","nodeType":"YulFunctionCall","src":"2060:25:66"},"nativeSrc":"2060:25:66","nodeType":"YulExpressionStatement","src":"2060:25:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2105:3:66","nodeType":"YulIdentifier","src":"2105:3:66"},{"kind":"number","nativeSrc":"2110:4:66","nodeType":"YulLiteral","src":"2110:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2101:3:66","nodeType":"YulIdentifier","src":"2101:3:66"},"nativeSrc":"2101:14:66","nodeType":"YulFunctionCall","src":"2101:14:66"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2127:5:66","nodeType":"YulIdentifier","src":"2127:5:66"},{"kind":"number","nativeSrc":"2134:4:66","nodeType":"YulLiteral","src":"2134:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2123:3:66","nodeType":"YulIdentifier","src":"2123:3:66"},"nativeSrc":"2123:16:66","nodeType":"YulFunctionCall","src":"2123:16:66"}],"functionName":{"name":"mload","nativeSrc":"2117:5:66","nodeType":"YulIdentifier","src":"2117:5:66"},"nativeSrc":"2117:23:66","nodeType":"YulFunctionCall","src":"2117:23:66"}],"functionName":{"name":"mstore","nativeSrc":"2094:6:66","nodeType":"YulIdentifier","src":"2094:6:66"},"nativeSrc":"2094:47:66","nodeType":"YulFunctionCall","src":"2094:47:66"},"nativeSrc":"2094:47:66","nodeType":"YulExpressionStatement","src":"2094:47:66"}]},"name":"abi_encode_struct_OFTLimit","nativeSrc":"1998:149:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2034:5:66","nodeType":"YulTypedName","src":"2034:5:66","type":""},{"name":"pos","nativeSrc":"2041:3:66","nodeType":"YulTypedName","src":"2041:3:66","type":""}],"src":"1998:149:66"},{"body":{"nativeSrc":"2527:925:66","nodeType":"YulBlock","src":"2527:925:66","statements":[{"nativeSrc":"2537:33:66","nodeType":"YulVariableDeclaration","src":"2537:33:66","value":{"arguments":[{"name":"headStart","nativeSrc":"2555:9:66","nodeType":"YulIdentifier","src":"2555:9:66"},{"kind":"number","nativeSrc":"2566:3:66","nodeType":"YulLiteral","src":"2566:3:66","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"2551:3:66","nodeType":"YulIdentifier","src":"2551:3:66"},"nativeSrc":"2551:19:66","nodeType":"YulFunctionCall","src":"2551:19:66"},"variables":[{"name":"tail_1","nativeSrc":"2541:6:66","nodeType":"YulTypedName","src":"2541:6:66","type":""}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"2606:6:66","nodeType":"YulIdentifier","src":"2606:6:66"},{"name":"headStart","nativeSrc":"2614:9:66","nodeType":"YulIdentifier","src":"2614:9:66"}],"functionName":{"name":"abi_encode_struct_OFTLimit","nativeSrc":"2579:26:66","nodeType":"YulIdentifier","src":"2579:26:66"},"nativeSrc":"2579:45:66","nodeType":"YulFunctionCall","src":"2579:45:66"},"nativeSrc":"2579:45:66","nodeType":"YulExpressionStatement","src":"2579:45:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2644:9:66","nodeType":"YulIdentifier","src":"2644:9:66"},{"kind":"number","nativeSrc":"2655:2:66","nodeType":"YulLiteral","src":"2655:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2640:3:66","nodeType":"YulIdentifier","src":"2640:3:66"},"nativeSrc":"2640:18:66","nodeType":"YulFunctionCall","src":"2640:18:66"},{"kind":"number","nativeSrc":"2660:3:66","nodeType":"YulLiteral","src":"2660:3:66","type":"","value":"160"}],"functionName":{"name":"mstore","nativeSrc":"2633:6:66","nodeType":"YulIdentifier","src":"2633:6:66"},"nativeSrc":"2633:31:66","nodeType":"YulFunctionCall","src":"2633:31:66"},"nativeSrc":"2633:31:66","nodeType":"YulExpressionStatement","src":"2633:31:66"},{"nativeSrc":"2673:17:66","nodeType":"YulVariableDeclaration","src":"2673:17:66","value":{"name":"tail_1","nativeSrc":"2684:6:66","nodeType":"YulIdentifier","src":"2684:6:66"},"variables":[{"name":"pos","nativeSrc":"2677:3:66","nodeType":"YulTypedName","src":"2677:3:66","type":""}]},{"nativeSrc":"2699:27:66","nodeType":"YulVariableDeclaration","src":"2699:27:66","value":{"arguments":[{"name":"value1","nativeSrc":"2719:6:66","nodeType":"YulIdentifier","src":"2719:6:66"}],"functionName":{"name":"mload","nativeSrc":"2713:5:66","nodeType":"YulIdentifier","src":"2713:5:66"},"nativeSrc":"2713:13:66","nodeType":"YulFunctionCall","src":"2713:13:66"},"variables":[{"name":"length","nativeSrc":"2703:6:66","nodeType":"YulTypedName","src":"2703:6:66","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"2742:6:66","nodeType":"YulIdentifier","src":"2742:6:66"},{"name":"length","nativeSrc":"2750:6:66","nodeType":"YulIdentifier","src":"2750:6:66"}],"functionName":{"name":"mstore","nativeSrc":"2735:6:66","nodeType":"YulIdentifier","src":"2735:6:66"},"nativeSrc":"2735:22:66","nodeType":"YulFunctionCall","src":"2735:22:66"},"nativeSrc":"2735:22:66","nodeType":"YulExpressionStatement","src":"2735:22:66"},{"nativeSrc":"2766:26:66","nodeType":"YulAssignment","src":"2766:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"2777:9:66","nodeType":"YulIdentifier","src":"2777:9:66"},{"kind":"number","nativeSrc":"2788:3:66","nodeType":"YulLiteral","src":"2788:3:66","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"2773:3:66","nodeType":"YulIdentifier","src":"2773:3:66"},"nativeSrc":"2773:19:66","nodeType":"YulFunctionCall","src":"2773:19:66"},"variableNames":[{"name":"pos","nativeSrc":"2766:3:66","nodeType":"YulIdentifier","src":"2766:3:66"}]},{"nativeSrc":"2801:54:66","nodeType":"YulVariableDeclaration","src":"2801:54:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2823:9:66","nodeType":"YulIdentifier","src":"2823:9:66"},{"arguments":[{"kind":"number","nativeSrc":"2838:1:66","nodeType":"YulLiteral","src":"2838:1:66","type":"","value":"5"},{"name":"length","nativeSrc":"2841:6:66","nodeType":"YulIdentifier","src":"2841:6:66"}],"functionName":{"name":"shl","nativeSrc":"2834:3:66","nodeType":"YulIdentifier","src":"2834:3:66"},"nativeSrc":"2834:14:66","nodeType":"YulFunctionCall","src":"2834:14:66"}],"functionName":{"name":"add","nativeSrc":"2819:3:66","nodeType":"YulIdentifier","src":"2819:3:66"},"nativeSrc":"2819:30:66","nodeType":"YulFunctionCall","src":"2819:30:66"},{"kind":"number","nativeSrc":"2851:3:66","nodeType":"YulLiteral","src":"2851:3:66","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"2815:3:66","nodeType":"YulIdentifier","src":"2815:3:66"},"nativeSrc":"2815:40:66","nodeType":"YulFunctionCall","src":"2815:40:66"},"variables":[{"name":"tail_2","nativeSrc":"2805:6:66","nodeType":"YulTypedName","src":"2805:6:66","type":""}]},{"nativeSrc":"2864:31:66","nodeType":"YulVariableDeclaration","src":"2864:31:66","value":{"arguments":[{"name":"value1","nativeSrc":"2882:6:66","nodeType":"YulIdentifier","src":"2882:6:66"},{"kind":"number","nativeSrc":"2890:4:66","nodeType":"YulLiteral","src":"2890:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2878:3:66","nodeType":"YulIdentifier","src":"2878:3:66"},"nativeSrc":"2878:17:66","nodeType":"YulFunctionCall","src":"2878:17:66"},"variables":[{"name":"srcPtr","nativeSrc":"2868:6:66","nodeType":"YulTypedName","src":"2868:6:66","type":""}]},{"nativeSrc":"2904:10:66","nodeType":"YulVariableDeclaration","src":"2904:10:66","value":{"kind":"number","nativeSrc":"2913:1:66","nodeType":"YulLiteral","src":"2913:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"2908:1:66","nodeType":"YulTypedName","src":"2908:1:66","type":""}]},{"body":{"nativeSrc":"2972:388:66","nodeType":"YulBlock","src":"2972:388:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"2993:3:66","nodeType":"YulIdentifier","src":"2993:3:66"},{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"3006:6:66","nodeType":"YulIdentifier","src":"3006:6:66"},{"name":"headStart","nativeSrc":"3014:9:66","nodeType":"YulIdentifier","src":"3014:9:66"}],"functionName":{"name":"sub","nativeSrc":"3002:3:66","nodeType":"YulIdentifier","src":"3002:3:66"},"nativeSrc":"3002:22:66","nodeType":"YulFunctionCall","src":"3002:22:66"},{"arguments":[{"kind":"number","nativeSrc":"3030:3:66","nodeType":"YulLiteral","src":"3030:3:66","type":"","value":"191"}],"functionName":{"name":"not","nativeSrc":"3026:3:66","nodeType":"YulIdentifier","src":"3026:3:66"},"nativeSrc":"3026:8:66","nodeType":"YulFunctionCall","src":"3026:8:66"}],"functionName":{"name":"add","nativeSrc":"2998:3:66","nodeType":"YulIdentifier","src":"2998:3:66"},"nativeSrc":"2998:37:66","nodeType":"YulFunctionCall","src":"2998:37:66"}],"functionName":{"name":"mstore","nativeSrc":"2986:6:66","nodeType":"YulIdentifier","src":"2986:6:66"},"nativeSrc":"2986:50:66","nodeType":"YulFunctionCall","src":"2986:50:66"},"nativeSrc":"2986:50:66","nodeType":"YulExpressionStatement","src":"2986:50:66"},{"nativeSrc":"3049:23:66","nodeType":"YulVariableDeclaration","src":"3049:23:66","value":{"arguments":[{"name":"srcPtr","nativeSrc":"3065:6:66","nodeType":"YulIdentifier","src":"3065:6:66"}],"functionName":{"name":"mload","nativeSrc":"3059:5:66","nodeType":"YulIdentifier","src":"3059:5:66"},"nativeSrc":"3059:13:66","nodeType":"YulFunctionCall","src":"3059:13:66"},"variables":[{"name":"_1","nativeSrc":"3053:2:66","nodeType":"YulTypedName","src":"3053:2:66","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nativeSrc":"3092:6:66","nodeType":"YulIdentifier","src":"3092:6:66"},{"arguments":[{"name":"_1","nativeSrc":"3106:2:66","nodeType":"YulIdentifier","src":"3106:2:66"}],"functionName":{"name":"mload","nativeSrc":"3100:5:66","nodeType":"YulIdentifier","src":"3100:5:66"},"nativeSrc":"3100:9:66","nodeType":"YulFunctionCall","src":"3100:9:66"}],"functionName":{"name":"mstore","nativeSrc":"3085:6:66","nodeType":"YulIdentifier","src":"3085:6:66"},"nativeSrc":"3085:25:66","nodeType":"YulFunctionCall","src":"3085:25:66"},"nativeSrc":"3085:25:66","nodeType":"YulExpressionStatement","src":"3085:25:66"},{"nativeSrc":"3123:40:66","nodeType":"YulVariableDeclaration","src":"3123:40:66","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"3153:2:66","nodeType":"YulIdentifier","src":"3153:2:66"},{"kind":"number","nativeSrc":"3157:4:66","nodeType":"YulLiteral","src":"3157:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3149:3:66","nodeType":"YulIdentifier","src":"3149:3:66"},"nativeSrc":"3149:13:66","nodeType":"YulFunctionCall","src":"3149:13:66"}],"functionName":{"name":"mload","nativeSrc":"3143:5:66","nodeType":"YulIdentifier","src":"3143:5:66"},"nativeSrc":"3143:20:66","nodeType":"YulFunctionCall","src":"3143:20:66"},"variables":[{"name":"memberValue0","nativeSrc":"3127:12:66","nodeType":"YulTypedName","src":"3127:12:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"3187:6:66","nodeType":"YulIdentifier","src":"3187:6:66"},{"kind":"number","nativeSrc":"3195:4:66","nodeType":"YulLiteral","src":"3195:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3183:3:66","nodeType":"YulIdentifier","src":"3183:3:66"},"nativeSrc":"3183:17:66","nodeType":"YulFunctionCall","src":"3183:17:66"},{"kind":"number","nativeSrc":"3202:2:66","nodeType":"YulLiteral","src":"3202:2:66","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"3176:6:66","nodeType":"YulIdentifier","src":"3176:6:66"},"nativeSrc":"3176:29:66","nodeType":"YulFunctionCall","src":"3176:29:66"},"nativeSrc":"3176:29:66","nodeType":"YulExpressionStatement","src":"3176:29:66"},{"nativeSrc":"3218:58:66","nodeType":"YulAssignment","src":"3218:58:66","value":{"arguments":[{"name":"memberValue0","nativeSrc":"3246:12:66","nodeType":"YulIdentifier","src":"3246:12:66"},{"arguments":[{"name":"tail_2","nativeSrc":"3264:6:66","nodeType":"YulIdentifier","src":"3264:6:66"},{"kind":"number","nativeSrc":"3272:2:66","nodeType":"YulLiteral","src":"3272:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3260:3:66","nodeType":"YulIdentifier","src":"3260:3:66"},"nativeSrc":"3260:15:66","nodeType":"YulFunctionCall","src":"3260:15:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"3228:17:66","nodeType":"YulIdentifier","src":"3228:17:66"},"nativeSrc":"3228:48:66","nodeType":"YulFunctionCall","src":"3228:48:66"},"variableNames":[{"name":"tail_2","nativeSrc":"3218:6:66","nodeType":"YulIdentifier","src":"3218:6:66"}]},{"nativeSrc":"3289:27:66","nodeType":"YulAssignment","src":"3289:27:66","value":{"arguments":[{"name":"srcPtr","nativeSrc":"3303:6:66","nodeType":"YulIdentifier","src":"3303:6:66"},{"kind":"number","nativeSrc":"3311:4:66","nodeType":"YulLiteral","src":"3311:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3299:3:66","nodeType":"YulIdentifier","src":"3299:3:66"},"nativeSrc":"3299:17:66","nodeType":"YulFunctionCall","src":"3299:17:66"},"variableNames":[{"name":"srcPtr","nativeSrc":"3289:6:66","nodeType":"YulIdentifier","src":"3289:6:66"}]},{"nativeSrc":"3329:21:66","nodeType":"YulAssignment","src":"3329:21:66","value":{"arguments":[{"name":"pos","nativeSrc":"3340:3:66","nodeType":"YulIdentifier","src":"3340:3:66"},{"kind":"number","nativeSrc":"3345:4:66","nodeType":"YulLiteral","src":"3345:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3336:3:66","nodeType":"YulIdentifier","src":"3336:3:66"},"nativeSrc":"3336:14:66","nodeType":"YulFunctionCall","src":"3336:14:66"},"variableNames":[{"name":"pos","nativeSrc":"3329:3:66","nodeType":"YulIdentifier","src":"3329:3:66"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"2934:1:66","nodeType":"YulIdentifier","src":"2934:1:66"},{"name":"length","nativeSrc":"2937:6:66","nodeType":"YulIdentifier","src":"2937:6:66"}],"functionName":{"name":"lt","nativeSrc":"2931:2:66","nodeType":"YulIdentifier","src":"2931:2:66"},"nativeSrc":"2931:13:66","nodeType":"YulFunctionCall","src":"2931:13:66"},"nativeSrc":"2923:437:66","nodeType":"YulForLoop","post":{"nativeSrc":"2945:18:66","nodeType":"YulBlock","src":"2945:18:66","statements":[{"nativeSrc":"2947:14:66","nodeType":"YulAssignment","src":"2947:14:66","value":{"arguments":[{"name":"i","nativeSrc":"2956:1:66","nodeType":"YulIdentifier","src":"2956:1:66"},{"kind":"number","nativeSrc":"2959:1:66","nodeType":"YulLiteral","src":"2959:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2952:3:66","nodeType":"YulIdentifier","src":"2952:3:66"},"nativeSrc":"2952:9:66","nodeType":"YulFunctionCall","src":"2952:9:66"},"variableNames":[{"name":"i","nativeSrc":"2947:1:66","nodeType":"YulIdentifier","src":"2947:1:66"}]}]},"pre":{"nativeSrc":"2927:3:66","nodeType":"YulBlock","src":"2927:3:66","statements":[]},"src":"2923:437:66"},{"nativeSrc":"3369:14:66","nodeType":"YulAssignment","src":"3369:14:66","value":{"name":"tail_2","nativeSrc":"3377:6:66","nodeType":"YulIdentifier","src":"3377:6:66"},"variableNames":[{"name":"tail","nativeSrc":"3369:4:66","nodeType":"YulIdentifier","src":"3369:4:66"}]},{"expression":{"arguments":[{"name":"value2","nativeSrc":"3419:6:66","nodeType":"YulIdentifier","src":"3419:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"3431:9:66","nodeType":"YulIdentifier","src":"3431:9:66"},{"kind":"number","nativeSrc":"3442:2:66","nodeType":"YulLiteral","src":"3442:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3427:3:66","nodeType":"YulIdentifier","src":"3427:3:66"},"nativeSrc":"3427:18:66","nodeType":"YulFunctionCall","src":"3427:18:66"}],"functionName":{"name":"abi_encode_struct_OFTLimit","nativeSrc":"3392:26:66","nodeType":"YulIdentifier","src":"3392:26:66"},"nativeSrc":"3392:54:66","nodeType":"YulFunctionCall","src":"3392:54:66"},"nativeSrc":"3392:54:66","nodeType":"YulExpressionStatement","src":"3392:54:66"}]},"name":"abi_encode_tuple_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed","nativeSrc":"2152:1300:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2480:9:66","nodeType":"YulTypedName","src":"2480:9:66","type":""},{"name":"value2","nativeSrc":"2491:6:66","nodeType":"YulTypedName","src":"2491:6:66","type":""},{"name":"value1","nativeSrc":"2499:6:66","nodeType":"YulTypedName","src":"2499:6:66","type":""},{"name":"value0","nativeSrc":"2507:6:66","nodeType":"YulTypedName","src":"2507:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2518:4:66","nodeType":"YulTypedName","src":"2518:4:66","type":""}],"src":"2152:1300:66"},{"body":{"nativeSrc":"3558:102:66","nodeType":"YulBlock","src":"3558:102:66","statements":[{"nativeSrc":"3568:26:66","nodeType":"YulAssignment","src":"3568:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"3580:9:66","nodeType":"YulIdentifier","src":"3580:9:66"},{"kind":"number","nativeSrc":"3591:2:66","nodeType":"YulLiteral","src":"3591:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3576:3:66","nodeType":"YulIdentifier","src":"3576:3:66"},"nativeSrc":"3576:18:66","nodeType":"YulFunctionCall","src":"3576:18:66"},"variableNames":[{"name":"tail","nativeSrc":"3568:4:66","nodeType":"YulIdentifier","src":"3568:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3610:9:66","nodeType":"YulIdentifier","src":"3610:9:66"},{"arguments":[{"name":"value0","nativeSrc":"3625:6:66","nodeType":"YulIdentifier","src":"3625:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3641:3:66","nodeType":"YulLiteral","src":"3641:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"3646:1:66","nodeType":"YulLiteral","src":"3646:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3637:3:66","nodeType":"YulIdentifier","src":"3637:3:66"},"nativeSrc":"3637:11:66","nodeType":"YulFunctionCall","src":"3637:11:66"},{"kind":"number","nativeSrc":"3650:1:66","nodeType":"YulLiteral","src":"3650:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3633:3:66","nodeType":"YulIdentifier","src":"3633:3:66"},"nativeSrc":"3633:19:66","nodeType":"YulFunctionCall","src":"3633:19:66"}],"functionName":{"name":"and","nativeSrc":"3621:3:66","nodeType":"YulIdentifier","src":"3621:3:66"},"nativeSrc":"3621:32:66","nodeType":"YulFunctionCall","src":"3621:32:66"}],"functionName":{"name":"mstore","nativeSrc":"3603:6:66","nodeType":"YulIdentifier","src":"3603:6:66"},"nativeSrc":"3603:51:66","nodeType":"YulFunctionCall","src":"3603:51:66"},"nativeSrc":"3603:51:66","nodeType":"YulExpressionStatement","src":"3603:51:66"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"3457:203:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3527:9:66","nodeType":"YulTypedName","src":"3527:9:66","type":""},{"name":"value0","nativeSrc":"3538:6:66","nodeType":"YulTypedName","src":"3538:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3549:4:66","nodeType":"YulTypedName","src":"3549:4:66","type":""}],"src":"3457:203:66"},{"body":{"nativeSrc":"3734:85:66","nodeType":"YulBlock","src":"3734:85:66","statements":[{"body":{"nativeSrc":"3773:16:66","nodeType":"YulBlock","src":"3773:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3782:1:66","nodeType":"YulLiteral","src":"3782:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"3785:1:66","nodeType":"YulLiteral","src":"3785:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3775:6:66","nodeType":"YulIdentifier","src":"3775:6:66"},"nativeSrc":"3775:12:66","nodeType":"YulFunctionCall","src":"3775:12:66"},"nativeSrc":"3775:12:66","nodeType":"YulExpressionStatement","src":"3775:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"3755:3:66","nodeType":"YulIdentifier","src":"3755:3:66"},{"name":"offset","nativeSrc":"3760:6:66","nodeType":"YulIdentifier","src":"3760:6:66"}],"functionName":{"name":"sub","nativeSrc":"3751:3:66","nodeType":"YulIdentifier","src":"3751:3:66"},"nativeSrc":"3751:16:66","nodeType":"YulFunctionCall","src":"3751:16:66"},{"kind":"number","nativeSrc":"3769:2:66","nodeType":"YulLiteral","src":"3769:2:66","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"3747:3:66","nodeType":"YulIdentifier","src":"3747:3:66"},"nativeSrc":"3747:25:66","nodeType":"YulFunctionCall","src":"3747:25:66"},"nativeSrc":"3744:45:66","nodeType":"YulIf","src":"3744:45:66"},{"nativeSrc":"3798:15:66","nodeType":"YulAssignment","src":"3798:15:66","value":{"name":"offset","nativeSrc":"3807:6:66","nodeType":"YulIdentifier","src":"3807:6:66"},"variableNames":[{"name":"value","nativeSrc":"3798:5:66","nodeType":"YulIdentifier","src":"3798:5:66"}]}]},"name":"abi_decode_struct_Origin_calldata","nativeSrc":"3665:154:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3708:6:66","nodeType":"YulTypedName","src":"3708:6:66","type":""},{"name":"end","nativeSrc":"3716:3:66","nodeType":"YulTypedName","src":"3716:3:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"3724:5:66","nodeType":"YulTypedName","src":"3724:5:66","type":""}],"src":"3665:154:66"},{"body":{"nativeSrc":"3896:275:66","nodeType":"YulBlock","src":"3896:275:66","statements":[{"body":{"nativeSrc":"3945:16:66","nodeType":"YulBlock","src":"3945:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3954:1:66","nodeType":"YulLiteral","src":"3954:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"3957:1:66","nodeType":"YulLiteral","src":"3957:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3947:6:66","nodeType":"YulIdentifier","src":"3947:6:66"},"nativeSrc":"3947:12:66","nodeType":"YulFunctionCall","src":"3947:12:66"},"nativeSrc":"3947:12:66","nodeType":"YulExpressionStatement","src":"3947:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"3924:6:66","nodeType":"YulIdentifier","src":"3924:6:66"},{"kind":"number","nativeSrc":"3932:4:66","nodeType":"YulLiteral","src":"3932:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"3920:3:66","nodeType":"YulIdentifier","src":"3920:3:66"},"nativeSrc":"3920:17:66","nodeType":"YulFunctionCall","src":"3920:17:66"},{"name":"end","nativeSrc":"3939:3:66","nodeType":"YulIdentifier","src":"3939:3:66"}],"functionName":{"name":"slt","nativeSrc":"3916:3:66","nodeType":"YulIdentifier","src":"3916:3:66"},"nativeSrc":"3916:27:66","nodeType":"YulFunctionCall","src":"3916:27:66"}],"functionName":{"name":"iszero","nativeSrc":"3909:6:66","nodeType":"YulIdentifier","src":"3909:6:66"},"nativeSrc":"3909:35:66","nodeType":"YulFunctionCall","src":"3909:35:66"},"nativeSrc":"3906:55:66","nodeType":"YulIf","src":"3906:55:66"},{"nativeSrc":"3970:30:66","nodeType":"YulAssignment","src":"3970:30:66","value":{"arguments":[{"name":"offset","nativeSrc":"3993:6:66","nodeType":"YulIdentifier","src":"3993:6:66"}],"functionName":{"name":"calldataload","nativeSrc":"3980:12:66","nodeType":"YulIdentifier","src":"3980:12:66"},"nativeSrc":"3980:20:66","nodeType":"YulFunctionCall","src":"3980:20:66"},"variableNames":[{"name":"length","nativeSrc":"3970:6:66","nodeType":"YulIdentifier","src":"3970:6:66"}]},{"body":{"nativeSrc":"4043:16:66","nodeType":"YulBlock","src":"4043:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4052:1:66","nodeType":"YulLiteral","src":"4052:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4055:1:66","nodeType":"YulLiteral","src":"4055:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4045:6:66","nodeType":"YulIdentifier","src":"4045:6:66"},"nativeSrc":"4045:12:66","nodeType":"YulFunctionCall","src":"4045:12:66"},"nativeSrc":"4045:12:66","nodeType":"YulExpressionStatement","src":"4045:12:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"4015:6:66","nodeType":"YulIdentifier","src":"4015:6:66"},{"kind":"number","nativeSrc":"4023:18:66","nodeType":"YulLiteral","src":"4023:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4012:2:66","nodeType":"YulIdentifier","src":"4012:2:66"},"nativeSrc":"4012:30:66","nodeType":"YulFunctionCall","src":"4012:30:66"},"nativeSrc":"4009:50:66","nodeType":"YulIf","src":"4009:50:66"},{"nativeSrc":"4068:29:66","nodeType":"YulAssignment","src":"4068:29:66","value":{"arguments":[{"name":"offset","nativeSrc":"4084:6:66","nodeType":"YulIdentifier","src":"4084:6:66"},{"kind":"number","nativeSrc":"4092:4:66","nodeType":"YulLiteral","src":"4092:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4080:3:66","nodeType":"YulIdentifier","src":"4080:3:66"},"nativeSrc":"4080:17:66","nodeType":"YulFunctionCall","src":"4080:17:66"},"variableNames":[{"name":"arrayPos","nativeSrc":"4068:8:66","nodeType":"YulIdentifier","src":"4068:8:66"}]},{"body":{"nativeSrc":"4149:16:66","nodeType":"YulBlock","src":"4149:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4158:1:66","nodeType":"YulLiteral","src":"4158:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4161:1:66","nodeType":"YulLiteral","src":"4161:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4151:6:66","nodeType":"YulIdentifier","src":"4151:6:66"},"nativeSrc":"4151:12:66","nodeType":"YulFunctionCall","src":"4151:12:66"},"nativeSrc":"4151:12:66","nodeType":"YulExpressionStatement","src":"4151:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"4120:6:66","nodeType":"YulIdentifier","src":"4120:6:66"},{"name":"length","nativeSrc":"4128:6:66","nodeType":"YulIdentifier","src":"4128:6:66"}],"functionName":{"name":"add","nativeSrc":"4116:3:66","nodeType":"YulIdentifier","src":"4116:3:66"},"nativeSrc":"4116:19:66","nodeType":"YulFunctionCall","src":"4116:19:66"},{"kind":"number","nativeSrc":"4137:4:66","nodeType":"YulLiteral","src":"4137:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4112:3:66","nodeType":"YulIdentifier","src":"4112:3:66"},"nativeSrc":"4112:30:66","nodeType":"YulFunctionCall","src":"4112:30:66"},{"name":"end","nativeSrc":"4144:3:66","nodeType":"YulIdentifier","src":"4144:3:66"}],"functionName":{"name":"gt","nativeSrc":"4109:2:66","nodeType":"YulIdentifier","src":"4109:2:66"},"nativeSrc":"4109:39:66","nodeType":"YulFunctionCall","src":"4109:39:66"},"nativeSrc":"4106:59:66","nodeType":"YulIf","src":"4106:59:66"}]},"name":"abi_decode_bytes_calldata","nativeSrc":"3824:347:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"3859:6:66","nodeType":"YulTypedName","src":"3859:6:66","type":""},{"name":"end","nativeSrc":"3867:3:66","nodeType":"YulTypedName","src":"3867:3:66","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"3875:8:66","nodeType":"YulTypedName","src":"3875:8:66","type":""},{"name":"length","nativeSrc":"3885:6:66","nodeType":"YulTypedName","src":"3885:6:66","type":""}],"src":"3824:347:66"},{"body":{"nativeSrc":"4376:893:66","nodeType":"YulBlock","src":"4376:893:66","statements":[{"body":{"nativeSrc":"4423:16:66","nodeType":"YulBlock","src":"4423:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4432:1:66","nodeType":"YulLiteral","src":"4432:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4435:1:66","nodeType":"YulLiteral","src":"4435:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4425:6:66","nodeType":"YulIdentifier","src":"4425:6:66"},"nativeSrc":"4425:12:66","nodeType":"YulFunctionCall","src":"4425:12:66"},"nativeSrc":"4425:12:66","nodeType":"YulExpressionStatement","src":"4425:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4397:7:66","nodeType":"YulIdentifier","src":"4397:7:66"},{"name":"headStart","nativeSrc":"4406:9:66","nodeType":"YulIdentifier","src":"4406:9:66"}],"functionName":{"name":"sub","nativeSrc":"4393:3:66","nodeType":"YulIdentifier","src":"4393:3:66"},"nativeSrc":"4393:23:66","nodeType":"YulFunctionCall","src":"4393:23:66"},{"kind":"number","nativeSrc":"4418:3:66","nodeType":"YulLiteral","src":"4418:3:66","type":"","value":"224"}],"functionName":{"name":"slt","nativeSrc":"4389:3:66","nodeType":"YulIdentifier","src":"4389:3:66"},"nativeSrc":"4389:33:66","nodeType":"YulFunctionCall","src":"4389:33:66"},"nativeSrc":"4386:53:66","nodeType":"YulIf","src":"4386:53:66"},{"nativeSrc":"4448:63:66","nodeType":"YulAssignment","src":"4448:63:66","value":{"arguments":[{"name":"headStart","nativeSrc":"4492:9:66","nodeType":"YulIdentifier","src":"4492:9:66"},{"name":"dataEnd","nativeSrc":"4503:7:66","nodeType":"YulIdentifier","src":"4503:7:66"}],"functionName":{"name":"abi_decode_struct_Origin_calldata","nativeSrc":"4458:33:66","nodeType":"YulIdentifier","src":"4458:33:66"},"nativeSrc":"4458:53:66","nodeType":"YulFunctionCall","src":"4458:53:66"},"variableNames":[{"name":"value0","nativeSrc":"4448:6:66","nodeType":"YulIdentifier","src":"4448:6:66"}]},{"nativeSrc":"4520:14:66","nodeType":"YulVariableDeclaration","src":"4520:14:66","value":{"kind":"number","nativeSrc":"4533:1:66","nodeType":"YulLiteral","src":"4533:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"4524:5:66","nodeType":"YulTypedName","src":"4524:5:66","type":""}]},{"nativeSrc":"4543:41:66","nodeType":"YulAssignment","src":"4543:41:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4569:9:66","nodeType":"YulIdentifier","src":"4569:9:66"},{"kind":"number","nativeSrc":"4580:2:66","nodeType":"YulLiteral","src":"4580:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4565:3:66","nodeType":"YulIdentifier","src":"4565:3:66"},"nativeSrc":"4565:18:66","nodeType":"YulFunctionCall","src":"4565:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"4552:12:66","nodeType":"YulIdentifier","src":"4552:12:66"},"nativeSrc":"4552:32:66","nodeType":"YulFunctionCall","src":"4552:32:66"},"variableNames":[{"name":"value","nativeSrc":"4543:5:66","nodeType":"YulIdentifier","src":"4543:5:66"}]},{"nativeSrc":"4593:15:66","nodeType":"YulAssignment","src":"4593:15:66","value":{"name":"value","nativeSrc":"4603:5:66","nodeType":"YulIdentifier","src":"4603:5:66"},"variableNames":[{"name":"value1","nativeSrc":"4593:6:66","nodeType":"YulIdentifier","src":"4593:6:66"}]},{"nativeSrc":"4617:47:66","nodeType":"YulVariableDeclaration","src":"4617:47:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4648:9:66","nodeType":"YulIdentifier","src":"4648:9:66"},{"kind":"number","nativeSrc":"4659:3:66","nodeType":"YulLiteral","src":"4659:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"4644:3:66","nodeType":"YulIdentifier","src":"4644:3:66"},"nativeSrc":"4644:19:66","nodeType":"YulFunctionCall","src":"4644:19:66"}],"functionName":{"name":"calldataload","nativeSrc":"4631:12:66","nodeType":"YulIdentifier","src":"4631:12:66"},"nativeSrc":"4631:33:66","nodeType":"YulFunctionCall","src":"4631:33:66"},"variables":[{"name":"offset","nativeSrc":"4621:6:66","nodeType":"YulTypedName","src":"4621:6:66","type":""}]},{"body":{"nativeSrc":"4707:16:66","nodeType":"YulBlock","src":"4707:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4716:1:66","nodeType":"YulLiteral","src":"4716:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4719:1:66","nodeType":"YulLiteral","src":"4719:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4709:6:66","nodeType":"YulIdentifier","src":"4709:6:66"},"nativeSrc":"4709:12:66","nodeType":"YulFunctionCall","src":"4709:12:66"},"nativeSrc":"4709:12:66","nodeType":"YulExpressionStatement","src":"4709:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4679:6:66","nodeType":"YulIdentifier","src":"4679:6:66"},{"kind":"number","nativeSrc":"4687:18:66","nodeType":"YulLiteral","src":"4687:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4676:2:66","nodeType":"YulIdentifier","src":"4676:2:66"},"nativeSrc":"4676:30:66","nodeType":"YulFunctionCall","src":"4676:30:66"},"nativeSrc":"4673:50:66","nodeType":"YulIf","src":"4673:50:66"},{"nativeSrc":"4732:84:66","nodeType":"YulVariableDeclaration","src":"4732:84:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4788:9:66","nodeType":"YulIdentifier","src":"4788:9:66"},{"name":"offset","nativeSrc":"4799:6:66","nodeType":"YulIdentifier","src":"4799:6:66"}],"functionName":{"name":"add","nativeSrc":"4784:3:66","nodeType":"YulIdentifier","src":"4784:3:66"},"nativeSrc":"4784:22:66","nodeType":"YulFunctionCall","src":"4784:22:66"},{"name":"dataEnd","nativeSrc":"4808:7:66","nodeType":"YulIdentifier","src":"4808:7:66"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"4758:25:66","nodeType":"YulIdentifier","src":"4758:25:66"},"nativeSrc":"4758:58:66","nodeType":"YulFunctionCall","src":"4758:58:66"},"variables":[{"name":"value2_1","nativeSrc":"4736:8:66","nodeType":"YulTypedName","src":"4736:8:66","type":""},{"name":"value3_1","nativeSrc":"4746:8:66","nodeType":"YulTypedName","src":"4746:8:66","type":""}]},{"nativeSrc":"4825:18:66","nodeType":"YulAssignment","src":"4825:18:66","value":{"name":"value2_1","nativeSrc":"4835:8:66","nodeType":"YulIdentifier","src":"4835:8:66"},"variableNames":[{"name":"value2","nativeSrc":"4825:6:66","nodeType":"YulIdentifier","src":"4825:6:66"}]},{"nativeSrc":"4852:18:66","nodeType":"YulAssignment","src":"4852:18:66","value":{"name":"value3_1","nativeSrc":"4862:8:66","nodeType":"YulIdentifier","src":"4862:8:66"},"variableNames":[{"name":"value3","nativeSrc":"4852:6:66","nodeType":"YulIdentifier","src":"4852:6:66"}]},{"nativeSrc":"4879:48:66","nodeType":"YulVariableDeclaration","src":"4879:48:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4911:9:66","nodeType":"YulIdentifier","src":"4911:9:66"},{"kind":"number","nativeSrc":"4922:3:66","nodeType":"YulLiteral","src":"4922:3:66","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"4907:3:66","nodeType":"YulIdentifier","src":"4907:3:66"},"nativeSrc":"4907:19:66","nodeType":"YulFunctionCall","src":"4907:19:66"}],"functionName":{"name":"calldataload","nativeSrc":"4894:12:66","nodeType":"YulIdentifier","src":"4894:12:66"},"nativeSrc":"4894:33:66","nodeType":"YulFunctionCall","src":"4894:33:66"},"variables":[{"name":"value_1","nativeSrc":"4883:7:66","nodeType":"YulTypedName","src":"4883:7:66","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"4961:7:66","nodeType":"YulIdentifier","src":"4961:7:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4936:24:66","nodeType":"YulIdentifier","src":"4936:24:66"},"nativeSrc":"4936:33:66","nodeType":"YulFunctionCall","src":"4936:33:66"},"nativeSrc":"4936:33:66","nodeType":"YulExpressionStatement","src":"4936:33:66"},{"nativeSrc":"4978:17:66","nodeType":"YulAssignment","src":"4978:17:66","value":{"name":"value_1","nativeSrc":"4988:7:66","nodeType":"YulIdentifier","src":"4988:7:66"},"variableNames":[{"name":"value4","nativeSrc":"4978:6:66","nodeType":"YulIdentifier","src":"4978:6:66"}]},{"nativeSrc":"5004:49:66","nodeType":"YulVariableDeclaration","src":"5004:49:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5037:9:66","nodeType":"YulIdentifier","src":"5037:9:66"},{"kind":"number","nativeSrc":"5048:3:66","nodeType":"YulLiteral","src":"5048:3:66","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"5033:3:66","nodeType":"YulIdentifier","src":"5033:3:66"},"nativeSrc":"5033:19:66","nodeType":"YulFunctionCall","src":"5033:19:66"}],"functionName":{"name":"calldataload","nativeSrc":"5020:12:66","nodeType":"YulIdentifier","src":"5020:12:66"},"nativeSrc":"5020:33:66","nodeType":"YulFunctionCall","src":"5020:33:66"},"variables":[{"name":"offset_1","nativeSrc":"5008:8:66","nodeType":"YulTypedName","src":"5008:8:66","type":""}]},{"body":{"nativeSrc":"5098:16:66","nodeType":"YulBlock","src":"5098:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5107:1:66","nodeType":"YulLiteral","src":"5107:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"5110:1:66","nodeType":"YulLiteral","src":"5110:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5100:6:66","nodeType":"YulIdentifier","src":"5100:6:66"},"nativeSrc":"5100:12:66","nodeType":"YulFunctionCall","src":"5100:12:66"},"nativeSrc":"5100:12:66","nodeType":"YulExpressionStatement","src":"5100:12:66"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"5068:8:66","nodeType":"YulIdentifier","src":"5068:8:66"},{"kind":"number","nativeSrc":"5078:18:66","nodeType":"YulLiteral","src":"5078:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5065:2:66","nodeType":"YulIdentifier","src":"5065:2:66"},"nativeSrc":"5065:32:66","nodeType":"YulFunctionCall","src":"5065:32:66"},"nativeSrc":"5062:52:66","nodeType":"YulIf","src":"5062:52:66"},{"nativeSrc":"5123:86:66","nodeType":"YulVariableDeclaration","src":"5123:86:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5179:9:66","nodeType":"YulIdentifier","src":"5179:9:66"},{"name":"offset_1","nativeSrc":"5190:8:66","nodeType":"YulIdentifier","src":"5190:8:66"}],"functionName":{"name":"add","nativeSrc":"5175:3:66","nodeType":"YulIdentifier","src":"5175:3:66"},"nativeSrc":"5175:24:66","nodeType":"YulFunctionCall","src":"5175:24:66"},{"name":"dataEnd","nativeSrc":"5201:7:66","nodeType":"YulIdentifier","src":"5201:7:66"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"5149:25:66","nodeType":"YulIdentifier","src":"5149:25:66"},"nativeSrc":"5149:60:66","nodeType":"YulFunctionCall","src":"5149:60:66"},"variables":[{"name":"value5_1","nativeSrc":"5127:8:66","nodeType":"YulTypedName","src":"5127:8:66","type":""},{"name":"value6_1","nativeSrc":"5137:8:66","nodeType":"YulTypedName","src":"5137:8:66","type":""}]},{"nativeSrc":"5218:18:66","nodeType":"YulAssignment","src":"5218:18:66","value":{"name":"value5_1","nativeSrc":"5228:8:66","nodeType":"YulIdentifier","src":"5228:8:66"},"variableNames":[{"name":"value5","nativeSrc":"5218:6:66","nodeType":"YulIdentifier","src":"5218:6:66"}]},{"nativeSrc":"5245:18:66","nodeType":"YulAssignment","src":"5245:18:66","value":{"name":"value6_1","nativeSrc":"5255:8:66","nodeType":"YulIdentifier","src":"5255:8:66"},"variableNames":[{"name":"value6","nativeSrc":"5245:6:66","nodeType":"YulIdentifier","src":"5245:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes32t_bytes_calldata_ptrt_addresst_bytes_calldata_ptr","nativeSrc":"4176:1093:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4294:9:66","nodeType":"YulTypedName","src":"4294:9:66","type":""},{"name":"dataEnd","nativeSrc":"4305:7:66","nodeType":"YulTypedName","src":"4305:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4317:6:66","nodeType":"YulTypedName","src":"4317:6:66","type":""},{"name":"value1","nativeSrc":"4325:6:66","nodeType":"YulTypedName","src":"4325:6:66","type":""},{"name":"value2","nativeSrc":"4333:6:66","nodeType":"YulTypedName","src":"4333:6:66","type":""},{"name":"value3","nativeSrc":"4341:6:66","nodeType":"YulTypedName","src":"4341:6:66","type":""},{"name":"value4","nativeSrc":"4349:6:66","nodeType":"YulTypedName","src":"4349:6:66","type":""},{"name":"value5","nativeSrc":"4357:6:66","nodeType":"YulTypedName","src":"4357:6:66","type":""},{"name":"value6","nativeSrc":"4365:6:66","nodeType":"YulTypedName","src":"4365:6:66","type":""}],"src":"4176:1093:66"},{"body":{"nativeSrc":"5373:89:66","nodeType":"YulBlock","src":"5373:89:66","statements":[{"nativeSrc":"5383:26:66","nodeType":"YulAssignment","src":"5383:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"5395:9:66","nodeType":"YulIdentifier","src":"5395:9:66"},{"kind":"number","nativeSrc":"5406:2:66","nodeType":"YulLiteral","src":"5406:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5391:3:66","nodeType":"YulIdentifier","src":"5391:3:66"},"nativeSrc":"5391:18:66","nodeType":"YulFunctionCall","src":"5391:18:66"},"variableNames":[{"name":"tail","nativeSrc":"5383:4:66","nodeType":"YulIdentifier","src":"5383:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5425:9:66","nodeType":"YulIdentifier","src":"5425:9:66"},{"arguments":[{"name":"value0","nativeSrc":"5440:6:66","nodeType":"YulIdentifier","src":"5440:6:66"},{"kind":"number","nativeSrc":"5448:6:66","nodeType":"YulLiteral","src":"5448:6:66","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"5436:3:66","nodeType":"YulIdentifier","src":"5436:3:66"},"nativeSrc":"5436:19:66","nodeType":"YulFunctionCall","src":"5436:19:66"}],"functionName":{"name":"mstore","nativeSrc":"5418:6:66","nodeType":"YulIdentifier","src":"5418:6:66"},"nativeSrc":"5418:38:66","nodeType":"YulFunctionCall","src":"5418:38:66"},"nativeSrc":"5418:38:66","nodeType":"YulExpressionStatement","src":"5418:38:66"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed","nativeSrc":"5274:188:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5342:9:66","nodeType":"YulTypedName","src":"5342:9:66","type":""},{"name":"value0","nativeSrc":"5353:6:66","nodeType":"YulTypedName","src":"5353:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5364:4:66","nodeType":"YulTypedName","src":"5364:4:66","type":""}],"src":"5274:188:66"},{"body":{"nativeSrc":"5592:171:66","nodeType":"YulBlock","src":"5592:171:66","statements":[{"nativeSrc":"5602:26:66","nodeType":"YulAssignment","src":"5602:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"5614:9:66","nodeType":"YulIdentifier","src":"5614:9:66"},{"kind":"number","nativeSrc":"5625:2:66","nodeType":"YulLiteral","src":"5625:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5610:3:66","nodeType":"YulIdentifier","src":"5610:3:66"},"nativeSrc":"5610:18:66","nodeType":"YulFunctionCall","src":"5610:18:66"},"variableNames":[{"name":"tail","nativeSrc":"5602:4:66","nodeType":"YulIdentifier","src":"5602:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5644:9:66","nodeType":"YulIdentifier","src":"5644:9:66"},{"arguments":[{"name":"value0","nativeSrc":"5659:6:66","nodeType":"YulIdentifier","src":"5659:6:66"},{"arguments":[{"kind":"number","nativeSrc":"5671:3:66","nodeType":"YulLiteral","src":"5671:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"5676:10:66","nodeType":"YulLiteral","src":"5676:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"5667:3:66","nodeType":"YulIdentifier","src":"5667:3:66"},"nativeSrc":"5667:20:66","nodeType":"YulFunctionCall","src":"5667:20:66"}],"functionName":{"name":"and","nativeSrc":"5655:3:66","nodeType":"YulIdentifier","src":"5655:3:66"},"nativeSrc":"5655:33:66","nodeType":"YulFunctionCall","src":"5655:33:66"}],"functionName":{"name":"mstore","nativeSrc":"5637:6:66","nodeType":"YulIdentifier","src":"5637:6:66"},"nativeSrc":"5637:52:66","nodeType":"YulFunctionCall","src":"5637:52:66"},"nativeSrc":"5637:52:66","nodeType":"YulExpressionStatement","src":"5637:52:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5709:9:66","nodeType":"YulIdentifier","src":"5709:9:66"},{"kind":"number","nativeSrc":"5720:2:66","nodeType":"YulLiteral","src":"5720:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5705:3:66","nodeType":"YulIdentifier","src":"5705:3:66"},"nativeSrc":"5705:18:66","nodeType":"YulFunctionCall","src":"5705:18:66"},{"arguments":[{"name":"value1","nativeSrc":"5729:6:66","nodeType":"YulIdentifier","src":"5729:6:66"},{"kind":"number","nativeSrc":"5737:18:66","nodeType":"YulLiteral","src":"5737:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5725:3:66","nodeType":"YulIdentifier","src":"5725:3:66"},"nativeSrc":"5725:31:66","nodeType":"YulFunctionCall","src":"5725:31:66"}],"functionName":{"name":"mstore","nativeSrc":"5698:6:66","nodeType":"YulIdentifier","src":"5698:6:66"},"nativeSrc":"5698:59:66","nodeType":"YulFunctionCall","src":"5698:59:66"},"nativeSrc":"5698:59:66","nodeType":"YulExpressionStatement","src":"5698:59:66"}]},"name":"abi_encode_tuple_t_bytes4_t_uint64__to_t_bytes4_t_uint64__fromStack_reversed","nativeSrc":"5467:296:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5553:9:66","nodeType":"YulTypedName","src":"5553:9:66","type":""},{"name":"value1","nativeSrc":"5564:6:66","nodeType":"YulTypedName","src":"5564:6:66","type":""},{"name":"value0","nativeSrc":"5572:6:66","nodeType":"YulTypedName","src":"5572:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5583:4:66","nodeType":"YulTypedName","src":"5583:4:66","type":""}],"src":"5467:296:66"},{"body":{"nativeSrc":"5893:169:66","nodeType":"YulBlock","src":"5893:169:66","statements":[{"nativeSrc":"5903:26:66","nodeType":"YulAssignment","src":"5903:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"5915:9:66","nodeType":"YulIdentifier","src":"5915:9:66"},{"kind":"number","nativeSrc":"5926:2:66","nodeType":"YulLiteral","src":"5926:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5911:3:66","nodeType":"YulIdentifier","src":"5911:3:66"},"nativeSrc":"5911:18:66","nodeType":"YulFunctionCall","src":"5911:18:66"},"variableNames":[{"name":"tail","nativeSrc":"5903:4:66","nodeType":"YulIdentifier","src":"5903:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5945:9:66","nodeType":"YulIdentifier","src":"5945:9:66"},{"arguments":[{"name":"value0","nativeSrc":"5960:6:66","nodeType":"YulIdentifier","src":"5960:6:66"},{"kind":"number","nativeSrc":"5968:18:66","nodeType":"YulLiteral","src":"5968:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5956:3:66","nodeType":"YulIdentifier","src":"5956:3:66"},"nativeSrc":"5956:31:66","nodeType":"YulFunctionCall","src":"5956:31:66"}],"functionName":{"name":"mstore","nativeSrc":"5938:6:66","nodeType":"YulIdentifier","src":"5938:6:66"},"nativeSrc":"5938:50:66","nodeType":"YulFunctionCall","src":"5938:50:66"},"nativeSrc":"5938:50:66","nodeType":"YulExpressionStatement","src":"5938:50:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6008:9:66","nodeType":"YulIdentifier","src":"6008:9:66"},{"kind":"number","nativeSrc":"6019:2:66","nodeType":"YulLiteral","src":"6019:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6004:3:66","nodeType":"YulIdentifier","src":"6004:3:66"},"nativeSrc":"6004:18:66","nodeType":"YulFunctionCall","src":"6004:18:66"},{"arguments":[{"name":"value1","nativeSrc":"6028:6:66","nodeType":"YulIdentifier","src":"6028:6:66"},{"kind":"number","nativeSrc":"6036:18:66","nodeType":"YulLiteral","src":"6036:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"6024:3:66","nodeType":"YulIdentifier","src":"6024:3:66"},"nativeSrc":"6024:31:66","nodeType":"YulFunctionCall","src":"6024:31:66"}],"functionName":{"name":"mstore","nativeSrc":"5997:6:66","nodeType":"YulIdentifier","src":"5997:6:66"},"nativeSrc":"5997:59:66","nodeType":"YulFunctionCall","src":"5997:59:66"},"nativeSrc":"5997:59:66","nodeType":"YulExpressionStatement","src":"5997:59:66"}]},"name":"abi_encode_tuple_t_uint64_t_uint64__to_t_uint64_t_uint64__fromStack_reversed","nativeSrc":"5768:294:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5854:9:66","nodeType":"YulTypedName","src":"5854:9:66","type":""},{"name":"value1","nativeSrc":"5865:6:66","nodeType":"YulTypedName","src":"5865:6:66","type":""},{"name":"value0","nativeSrc":"5873:6:66","nodeType":"YulTypedName","src":"5873:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5884:4:66","nodeType":"YulTypedName","src":"5884:4:66","type":""}],"src":"5768:294:66"},{"body":{"nativeSrc":"6168:76:66","nodeType":"YulBlock","src":"6168:76:66","statements":[{"nativeSrc":"6178:26:66","nodeType":"YulAssignment","src":"6178:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"6190:9:66","nodeType":"YulIdentifier","src":"6190:9:66"},{"kind":"number","nativeSrc":"6201:2:66","nodeType":"YulLiteral","src":"6201:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6186:3:66","nodeType":"YulIdentifier","src":"6186:3:66"},"nativeSrc":"6186:18:66","nodeType":"YulFunctionCall","src":"6186:18:66"},"variableNames":[{"name":"tail","nativeSrc":"6178:4:66","nodeType":"YulIdentifier","src":"6178:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6220:9:66","nodeType":"YulIdentifier","src":"6220:9:66"},{"name":"value0","nativeSrc":"6231:6:66","nodeType":"YulIdentifier","src":"6231:6:66"}],"functionName":{"name":"mstore","nativeSrc":"6213:6:66","nodeType":"YulIdentifier","src":"6213:6:66"},"nativeSrc":"6213:25:66","nodeType":"YulFunctionCall","src":"6213:25:66"},"nativeSrc":"6213:25:66","nodeType":"YulExpressionStatement","src":"6213:25:66"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"6067:177:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6137:9:66","nodeType":"YulTypedName","src":"6137:9:66","type":""},{"name":"value0","nativeSrc":"6148:6:66","nodeType":"YulTypedName","src":"6148:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6159:4:66","nodeType":"YulTypedName","src":"6159:4:66","type":""}],"src":"6067:177:66"},{"body":{"nativeSrc":"6353:404:66","nodeType":"YulBlock","src":"6353:404:66","statements":[{"body":{"nativeSrc":"6399:16:66","nodeType":"YulBlock","src":"6399:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6408:1:66","nodeType":"YulLiteral","src":"6408:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"6411:1:66","nodeType":"YulLiteral","src":"6411:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6401:6:66","nodeType":"YulIdentifier","src":"6401:6:66"},"nativeSrc":"6401:12:66","nodeType":"YulFunctionCall","src":"6401:12:66"},"nativeSrc":"6401:12:66","nodeType":"YulExpressionStatement","src":"6401:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6374:7:66","nodeType":"YulIdentifier","src":"6374:7:66"},{"name":"headStart","nativeSrc":"6383:9:66","nodeType":"YulIdentifier","src":"6383:9:66"}],"functionName":{"name":"sub","nativeSrc":"6370:3:66","nodeType":"YulIdentifier","src":"6370:3:66"},"nativeSrc":"6370:23:66","nodeType":"YulFunctionCall","src":"6370:23:66"},{"kind":"number","nativeSrc":"6395:2:66","nodeType":"YulLiteral","src":"6395:2:66","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"6366:3:66","nodeType":"YulIdentifier","src":"6366:3:66"},"nativeSrc":"6366:32:66","nodeType":"YulFunctionCall","src":"6366:32:66"},"nativeSrc":"6363:52:66","nodeType":"YulIf","src":"6363:52:66"},{"nativeSrc":"6424:36:66","nodeType":"YulVariableDeclaration","src":"6424:36:66","value":{"arguments":[{"name":"headStart","nativeSrc":"6450:9:66","nodeType":"YulIdentifier","src":"6450:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"6437:12:66","nodeType":"YulIdentifier","src":"6437:12:66"},"nativeSrc":"6437:23:66","nodeType":"YulFunctionCall","src":"6437:23:66"},"variables":[{"name":"value","nativeSrc":"6428:5:66","nodeType":"YulTypedName","src":"6428:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6494:5:66","nodeType":"YulIdentifier","src":"6494:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6469:24:66","nodeType":"YulIdentifier","src":"6469:24:66"},"nativeSrc":"6469:31:66","nodeType":"YulFunctionCall","src":"6469:31:66"},"nativeSrc":"6469:31:66","nodeType":"YulExpressionStatement","src":"6469:31:66"},{"nativeSrc":"6509:15:66","nodeType":"YulAssignment","src":"6509:15:66","value":{"name":"value","nativeSrc":"6519:5:66","nodeType":"YulIdentifier","src":"6519:5:66"},"variableNames":[{"name":"value0","nativeSrc":"6509:6:66","nodeType":"YulIdentifier","src":"6509:6:66"}]},{"nativeSrc":"6533:47:66","nodeType":"YulVariableDeclaration","src":"6533:47:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6565:9:66","nodeType":"YulIdentifier","src":"6565:9:66"},{"kind":"number","nativeSrc":"6576:2:66","nodeType":"YulLiteral","src":"6576:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6561:3:66","nodeType":"YulIdentifier","src":"6561:3:66"},"nativeSrc":"6561:18:66","nodeType":"YulFunctionCall","src":"6561:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"6548:12:66","nodeType":"YulIdentifier","src":"6548:12:66"},"nativeSrc":"6548:32:66","nodeType":"YulFunctionCall","src":"6548:32:66"},"variables":[{"name":"value_1","nativeSrc":"6537:7:66","nodeType":"YulTypedName","src":"6537:7:66","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"6614:7:66","nodeType":"YulIdentifier","src":"6614:7:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6589:24:66","nodeType":"YulIdentifier","src":"6589:24:66"},"nativeSrc":"6589:33:66","nodeType":"YulFunctionCall","src":"6589:33:66"},"nativeSrc":"6589:33:66","nodeType":"YulExpressionStatement","src":"6589:33:66"},{"nativeSrc":"6631:17:66","nodeType":"YulAssignment","src":"6631:17:66","value":{"name":"value_1","nativeSrc":"6641:7:66","nodeType":"YulIdentifier","src":"6641:7:66"},"variableNames":[{"name":"value1","nativeSrc":"6631:6:66","nodeType":"YulIdentifier","src":"6631:6:66"}]},{"nativeSrc":"6657:16:66","nodeType":"YulVariableDeclaration","src":"6657:16:66","value":{"kind":"number","nativeSrc":"6672:1:66","nodeType":"YulLiteral","src":"6672:1:66","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"6661:7:66","nodeType":"YulTypedName","src":"6661:7:66","type":""}]},{"nativeSrc":"6682:43:66","nodeType":"YulAssignment","src":"6682:43:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6710:9:66","nodeType":"YulIdentifier","src":"6710:9:66"},{"kind":"number","nativeSrc":"6721:2:66","nodeType":"YulLiteral","src":"6721:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6706:3:66","nodeType":"YulIdentifier","src":"6706:3:66"},"nativeSrc":"6706:18:66","nodeType":"YulFunctionCall","src":"6706:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"6693:12:66","nodeType":"YulIdentifier","src":"6693:12:66"},"nativeSrc":"6693:32:66","nodeType":"YulFunctionCall","src":"6693:32:66"},"variableNames":[{"name":"value_2","nativeSrc":"6682:7:66","nodeType":"YulIdentifier","src":"6682:7:66"}]},{"nativeSrc":"6734:17:66","nodeType":"YulAssignment","src":"6734:17:66","value":{"name":"value_2","nativeSrc":"6744:7:66","nodeType":"YulIdentifier","src":"6744:7:66"},"variableNames":[{"name":"value2","nativeSrc":"6734:6:66","nodeType":"YulIdentifier","src":"6734:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"6249:508:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6303:9:66","nodeType":"YulTypedName","src":"6303:9:66","type":""},{"name":"dataEnd","nativeSrc":"6314:7:66","nodeType":"YulTypedName","src":"6314:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6326:6:66","nodeType":"YulTypedName","src":"6326:6:66","type":""},{"name":"value1","nativeSrc":"6334:6:66","nodeType":"YulTypedName","src":"6334:6:66","type":""},{"name":"value2","nativeSrc":"6342:6:66","nodeType":"YulTypedName","src":"6342:6:66","type":""}],"src":"6249:508:66"},{"body":{"nativeSrc":"6859:87:66","nodeType":"YulBlock","src":"6859:87:66","statements":[{"nativeSrc":"6869:26:66","nodeType":"YulAssignment","src":"6869:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"6881:9:66","nodeType":"YulIdentifier","src":"6881:9:66"},{"kind":"number","nativeSrc":"6892:2:66","nodeType":"YulLiteral","src":"6892:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6877:3:66","nodeType":"YulIdentifier","src":"6877:3:66"},"nativeSrc":"6877:18:66","nodeType":"YulFunctionCall","src":"6877:18:66"},"variableNames":[{"name":"tail","nativeSrc":"6869:4:66","nodeType":"YulIdentifier","src":"6869:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6911:9:66","nodeType":"YulIdentifier","src":"6911:9:66"},{"arguments":[{"name":"value0","nativeSrc":"6926:6:66","nodeType":"YulIdentifier","src":"6926:6:66"},{"kind":"number","nativeSrc":"6934:4:66","nodeType":"YulLiteral","src":"6934:4:66","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"6922:3:66","nodeType":"YulIdentifier","src":"6922:3:66"},"nativeSrc":"6922:17:66","nodeType":"YulFunctionCall","src":"6922:17:66"}],"functionName":{"name":"mstore","nativeSrc":"6904:6:66","nodeType":"YulIdentifier","src":"6904:6:66"},"nativeSrc":"6904:36:66","nodeType":"YulFunctionCall","src":"6904:36:66"},"nativeSrc":"6904:36:66","nodeType":"YulExpressionStatement","src":"6904:36:66"}]},"name":"abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed","nativeSrc":"6762:184:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6828:9:66","nodeType":"YulTypedName","src":"6828:9:66","type":""},{"name":"value0","nativeSrc":"6839:6:66","nodeType":"YulTypedName","src":"6839:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6850:4:66","nodeType":"YulTypedName","src":"6850:4:66","type":""}],"src":"6762:184:66"},{"body":{"nativeSrc":"6999:115:66","nodeType":"YulBlock","src":"6999:115:66","statements":[{"nativeSrc":"7009:29:66","nodeType":"YulAssignment","src":"7009:29:66","value":{"arguments":[{"name":"offset","nativeSrc":"7031:6:66","nodeType":"YulIdentifier","src":"7031:6:66"}],"functionName":{"name":"calldataload","nativeSrc":"7018:12:66","nodeType":"YulIdentifier","src":"7018:12:66"},"nativeSrc":"7018:20:66","nodeType":"YulFunctionCall","src":"7018:20:66"},"variableNames":[{"name":"value","nativeSrc":"7009:5:66","nodeType":"YulIdentifier","src":"7009:5:66"}]},{"body":{"nativeSrc":"7092:16:66","nodeType":"YulBlock","src":"7092:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7101:1:66","nodeType":"YulLiteral","src":"7101:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"7104:1:66","nodeType":"YulLiteral","src":"7104:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7094:6:66","nodeType":"YulIdentifier","src":"7094:6:66"},"nativeSrc":"7094:12:66","nodeType":"YulFunctionCall","src":"7094:12:66"},"nativeSrc":"7094:12:66","nodeType":"YulExpressionStatement","src":"7094:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7060:5:66","nodeType":"YulIdentifier","src":"7060:5:66"},{"arguments":[{"name":"value","nativeSrc":"7071:5:66","nodeType":"YulIdentifier","src":"7071:5:66"},{"kind":"number","nativeSrc":"7078:10:66","nodeType":"YulLiteral","src":"7078:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"7067:3:66","nodeType":"YulIdentifier","src":"7067:3:66"},"nativeSrc":"7067:22:66","nodeType":"YulFunctionCall","src":"7067:22:66"}],"functionName":{"name":"eq","nativeSrc":"7057:2:66","nodeType":"YulIdentifier","src":"7057:2:66"},"nativeSrc":"7057:33:66","nodeType":"YulFunctionCall","src":"7057:33:66"}],"functionName":{"name":"iszero","nativeSrc":"7050:6:66","nodeType":"YulIdentifier","src":"7050:6:66"},"nativeSrc":"7050:41:66","nodeType":"YulFunctionCall","src":"7050:41:66"},"nativeSrc":"7047:61:66","nodeType":"YulIf","src":"7047:61:66"}]},"name":"abi_decode_uint32","nativeSrc":"6951:163:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"6978:6:66","nodeType":"YulTypedName","src":"6978:6:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"6989:5:66","nodeType":"YulTypedName","src":"6989:5:66","type":""}],"src":"6951:163:66"},{"body":{"nativeSrc":"7205:212:66","nodeType":"YulBlock","src":"7205:212:66","statements":[{"body":{"nativeSrc":"7251:16:66","nodeType":"YulBlock","src":"7251:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7260:1:66","nodeType":"YulLiteral","src":"7260:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"7263:1:66","nodeType":"YulLiteral","src":"7263:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7253:6:66","nodeType":"YulIdentifier","src":"7253:6:66"},"nativeSrc":"7253:12:66","nodeType":"YulFunctionCall","src":"7253:12:66"},"nativeSrc":"7253:12:66","nodeType":"YulExpressionStatement","src":"7253:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7226:7:66","nodeType":"YulIdentifier","src":"7226:7:66"},{"name":"headStart","nativeSrc":"7235:9:66","nodeType":"YulIdentifier","src":"7235:9:66"}],"functionName":{"name":"sub","nativeSrc":"7222:3:66","nodeType":"YulIdentifier","src":"7222:3:66"},"nativeSrc":"7222:23:66","nodeType":"YulFunctionCall","src":"7222:23:66"},{"kind":"number","nativeSrc":"7247:2:66","nodeType":"YulLiteral","src":"7247:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7218:3:66","nodeType":"YulIdentifier","src":"7218:3:66"},"nativeSrc":"7218:32:66","nodeType":"YulFunctionCall","src":"7218:32:66"},"nativeSrc":"7215:52:66","nodeType":"YulIf","src":"7215:52:66"},{"nativeSrc":"7276:38:66","nodeType":"YulAssignment","src":"7276:38:66","value":{"arguments":[{"name":"headStart","nativeSrc":"7304:9:66","nodeType":"YulIdentifier","src":"7304:9:66"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"7286:17:66","nodeType":"YulIdentifier","src":"7286:17:66"},"nativeSrc":"7286:28:66","nodeType":"YulFunctionCall","src":"7286:28:66"},"variableNames":[{"name":"value0","nativeSrc":"7276:6:66","nodeType":"YulIdentifier","src":"7276:6:66"}]},{"nativeSrc":"7323:14:66","nodeType":"YulVariableDeclaration","src":"7323:14:66","value":{"kind":"number","nativeSrc":"7336:1:66","nodeType":"YulLiteral","src":"7336:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"7327:5:66","nodeType":"YulTypedName","src":"7327:5:66","type":""}]},{"nativeSrc":"7346:41:66","nodeType":"YulAssignment","src":"7346:41:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7372:9:66","nodeType":"YulIdentifier","src":"7372:9:66"},{"kind":"number","nativeSrc":"7383:2:66","nodeType":"YulLiteral","src":"7383:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7368:3:66","nodeType":"YulIdentifier","src":"7368:3:66"},"nativeSrc":"7368:18:66","nodeType":"YulFunctionCall","src":"7368:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"7355:12:66","nodeType":"YulIdentifier","src":"7355:12:66"},"nativeSrc":"7355:32:66","nodeType":"YulFunctionCall","src":"7355:32:66"},"variableNames":[{"name":"value","nativeSrc":"7346:5:66","nodeType":"YulIdentifier","src":"7346:5:66"}]},{"nativeSrc":"7396:15:66","nodeType":"YulAssignment","src":"7396:15:66","value":{"name":"value","nativeSrc":"7406:5:66","nodeType":"YulIdentifier","src":"7406:5:66"},"variableNames":[{"name":"value1","nativeSrc":"7396:6:66","nodeType":"YulIdentifier","src":"7396:6:66"}]}]},"name":"abi_decode_tuple_t_uint32t_bytes32","nativeSrc":"7119:298:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7163:9:66","nodeType":"YulTypedName","src":"7163:9:66","type":""},{"name":"dataEnd","nativeSrc":"7174:7:66","nodeType":"YulTypedName","src":"7174:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7186:6:66","nodeType":"YulTypedName","src":"7186:6:66","type":""},{"name":"value1","nativeSrc":"7194:6:66","nodeType":"YulTypedName","src":"7194:6:66","type":""}],"src":"7119:298:66"},{"body":{"nativeSrc":"7464:76:66","nodeType":"YulBlock","src":"7464:76:66","statements":[{"body":{"nativeSrc":"7518:16:66","nodeType":"YulBlock","src":"7518:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7527:1:66","nodeType":"YulLiteral","src":"7527:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"7530:1:66","nodeType":"YulLiteral","src":"7530:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7520:6:66","nodeType":"YulIdentifier","src":"7520:6:66"},"nativeSrc":"7520:12:66","nodeType":"YulFunctionCall","src":"7520:12:66"},"nativeSrc":"7520:12:66","nodeType":"YulExpressionStatement","src":"7520:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7487:5:66","nodeType":"YulIdentifier","src":"7487:5:66"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"7508:5:66","nodeType":"YulIdentifier","src":"7508:5:66"}],"functionName":{"name":"iszero","nativeSrc":"7501:6:66","nodeType":"YulIdentifier","src":"7501:6:66"},"nativeSrc":"7501:13:66","nodeType":"YulFunctionCall","src":"7501:13:66"}],"functionName":{"name":"iszero","nativeSrc":"7494:6:66","nodeType":"YulIdentifier","src":"7494:6:66"},"nativeSrc":"7494:21:66","nodeType":"YulFunctionCall","src":"7494:21:66"}],"functionName":{"name":"eq","nativeSrc":"7484:2:66","nodeType":"YulIdentifier","src":"7484:2:66"},"nativeSrc":"7484:32:66","nodeType":"YulFunctionCall","src":"7484:32:66"}],"functionName":{"name":"iszero","nativeSrc":"7477:6:66","nodeType":"YulIdentifier","src":"7477:6:66"},"nativeSrc":"7477:40:66","nodeType":"YulFunctionCall","src":"7477:40:66"},"nativeSrc":"7474:60:66","nodeType":"YulIf","src":"7474:60:66"}]},"name":"validator_revert_bool","nativeSrc":"7422:118:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"7453:5:66","nodeType":"YulTypedName","src":"7453:5:66","type":""}],"src":"7422:118:66"},{"body":{"nativeSrc":"7658:376:66","nodeType":"YulBlock","src":"7658:376:66","statements":[{"body":{"nativeSrc":"7704:16:66","nodeType":"YulBlock","src":"7704:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7713:1:66","nodeType":"YulLiteral","src":"7713:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"7716:1:66","nodeType":"YulLiteral","src":"7716:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7706:6:66","nodeType":"YulIdentifier","src":"7706:6:66"},"nativeSrc":"7706:12:66","nodeType":"YulFunctionCall","src":"7706:12:66"},"nativeSrc":"7706:12:66","nodeType":"YulExpressionStatement","src":"7706:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7679:7:66","nodeType":"YulIdentifier","src":"7679:7:66"},{"name":"headStart","nativeSrc":"7688:9:66","nodeType":"YulIdentifier","src":"7688:9:66"}],"functionName":{"name":"sub","nativeSrc":"7675:3:66","nodeType":"YulIdentifier","src":"7675:3:66"},"nativeSrc":"7675:23:66","nodeType":"YulFunctionCall","src":"7675:23:66"},{"kind":"number","nativeSrc":"7700:2:66","nodeType":"YulLiteral","src":"7700:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7671:3:66","nodeType":"YulIdentifier","src":"7671:3:66"},"nativeSrc":"7671:32:66","nodeType":"YulFunctionCall","src":"7671:32:66"},"nativeSrc":"7668:52:66","nodeType":"YulIf","src":"7668:52:66"},{"nativeSrc":"7729:37:66","nodeType":"YulVariableDeclaration","src":"7729:37:66","value":{"arguments":[{"name":"headStart","nativeSrc":"7756:9:66","nodeType":"YulIdentifier","src":"7756:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"7743:12:66","nodeType":"YulIdentifier","src":"7743:12:66"},"nativeSrc":"7743:23:66","nodeType":"YulFunctionCall","src":"7743:23:66"},"variables":[{"name":"offset","nativeSrc":"7733:6:66","nodeType":"YulTypedName","src":"7733:6:66","type":""}]},{"body":{"nativeSrc":"7809:16:66","nodeType":"YulBlock","src":"7809:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7818:1:66","nodeType":"YulLiteral","src":"7818:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"7821:1:66","nodeType":"YulLiteral","src":"7821:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7811:6:66","nodeType":"YulIdentifier","src":"7811:6:66"},"nativeSrc":"7811:12:66","nodeType":"YulFunctionCall","src":"7811:12:66"},"nativeSrc":"7811:12:66","nodeType":"YulExpressionStatement","src":"7811:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7781:6:66","nodeType":"YulIdentifier","src":"7781:6:66"},{"kind":"number","nativeSrc":"7789:18:66","nodeType":"YulLiteral","src":"7789:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7778:2:66","nodeType":"YulIdentifier","src":"7778:2:66"},"nativeSrc":"7778:30:66","nodeType":"YulFunctionCall","src":"7778:30:66"},"nativeSrc":"7775:50:66","nodeType":"YulIf","src":"7775:50:66"},{"nativeSrc":"7834:79:66","nodeType":"YulAssignment","src":"7834:79:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7885:9:66","nodeType":"YulIdentifier","src":"7885:9:66"},{"name":"offset","nativeSrc":"7896:6:66","nodeType":"YulIdentifier","src":"7896:6:66"}],"functionName":{"name":"add","nativeSrc":"7881:3:66","nodeType":"YulIdentifier","src":"7881:3:66"},"nativeSrc":"7881:22:66","nodeType":"YulFunctionCall","src":"7881:22:66"},{"name":"dataEnd","nativeSrc":"7905:7:66","nodeType":"YulIdentifier","src":"7905:7:66"}],"functionName":{"name":"abi_decode_struct_SendParam_calldata","nativeSrc":"7844:36:66","nodeType":"YulIdentifier","src":"7844:36:66"},"nativeSrc":"7844:69:66","nodeType":"YulFunctionCall","src":"7844:69:66"},"variableNames":[{"name":"value0","nativeSrc":"7834:6:66","nodeType":"YulIdentifier","src":"7834:6:66"}]},{"nativeSrc":"7922:45:66","nodeType":"YulVariableDeclaration","src":"7922:45:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7952:9:66","nodeType":"YulIdentifier","src":"7952:9:66"},{"kind":"number","nativeSrc":"7963:2:66","nodeType":"YulLiteral","src":"7963:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7948:3:66","nodeType":"YulIdentifier","src":"7948:3:66"},"nativeSrc":"7948:18:66","nodeType":"YulFunctionCall","src":"7948:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"7935:12:66","nodeType":"YulIdentifier","src":"7935:12:66"},"nativeSrc":"7935:32:66","nodeType":"YulFunctionCall","src":"7935:32:66"},"variables":[{"name":"value","nativeSrc":"7926:5:66","nodeType":"YulTypedName","src":"7926:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7998:5:66","nodeType":"YulIdentifier","src":"7998:5:66"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"7976:21:66","nodeType":"YulIdentifier","src":"7976:21:66"},"nativeSrc":"7976:28:66","nodeType":"YulFunctionCall","src":"7976:28:66"},"nativeSrc":"7976:28:66","nodeType":"YulExpressionStatement","src":"7976:28:66"},{"nativeSrc":"8013:15:66","nodeType":"YulAssignment","src":"8013:15:66","value":{"name":"value","nativeSrc":"8023:5:66","nodeType":"YulIdentifier","src":"8023:5:66"},"variableNames":[{"name":"value1","nativeSrc":"8013:6:66","nodeType":"YulIdentifier","src":"8013:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_bool","nativeSrc":"7545:489:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7616:9:66","nodeType":"YulTypedName","src":"7616:9:66","type":""},{"name":"dataEnd","nativeSrc":"7627:7:66","nodeType":"YulTypedName","src":"7627:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7639:6:66","nodeType":"YulTypedName","src":"7639:6:66","type":""},{"name":"value1","nativeSrc":"7647:6:66","nodeType":"YulTypedName","src":"7647:6:66","type":""}],"src":"7545:489:66"},{"body":{"nativeSrc":"8196:96:66","nodeType":"YulBlock","src":"8196:96:66","statements":[{"nativeSrc":"8206:26:66","nodeType":"YulAssignment","src":"8206:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"8218:9:66","nodeType":"YulIdentifier","src":"8218:9:66"},{"kind":"number","nativeSrc":"8229:2:66","nodeType":"YulLiteral","src":"8229:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8214:3:66","nodeType":"YulIdentifier","src":"8214:3:66"},"nativeSrc":"8214:18:66","nodeType":"YulFunctionCall","src":"8214:18:66"},"variableNames":[{"name":"tail","nativeSrc":"8206:4:66","nodeType":"YulIdentifier","src":"8206:4:66"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"8268:6:66","nodeType":"YulIdentifier","src":"8268:6:66"},{"name":"headStart","nativeSrc":"8276:9:66","nodeType":"YulIdentifier","src":"8276:9:66"}],"functionName":{"name":"abi_encode_struct_OFTLimit","nativeSrc":"8241:26:66","nodeType":"YulIdentifier","src":"8241:26:66"},"nativeSrc":"8241:45:66","nodeType":"YulFunctionCall","src":"8241:45:66"},"nativeSrc":"8241:45:66","nodeType":"YulExpressionStatement","src":"8241:45:66"}]},"name":"abi_encode_tuple_t_struct$_MessagingFee_$33_memory_ptr__to_t_struct$_MessagingFee_$33_memory_ptr__fromStack_reversed","nativeSrc":"8039:253:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8165:9:66","nodeType":"YulTypedName","src":"8165:9:66","type":""},{"name":"value0","nativeSrc":"8176:6:66","nodeType":"YulTypedName","src":"8176:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8187:4:66","nodeType":"YulTypedName","src":"8187:4:66","type":""}],"src":"8039:253:66"},{"body":{"nativeSrc":"8345:111:66","nodeType":"YulBlock","src":"8345:111:66","statements":[{"nativeSrc":"8355:29:66","nodeType":"YulAssignment","src":"8355:29:66","value":{"arguments":[{"name":"offset","nativeSrc":"8377:6:66","nodeType":"YulIdentifier","src":"8377:6:66"}],"functionName":{"name":"calldataload","nativeSrc":"8364:12:66","nodeType":"YulIdentifier","src":"8364:12:66"},"nativeSrc":"8364:20:66","nodeType":"YulFunctionCall","src":"8364:20:66"},"variableNames":[{"name":"value","nativeSrc":"8355:5:66","nodeType":"YulIdentifier","src":"8355:5:66"}]},{"body":{"nativeSrc":"8434:16:66","nodeType":"YulBlock","src":"8434:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8443:1:66","nodeType":"YulLiteral","src":"8443:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"8446:1:66","nodeType":"YulLiteral","src":"8446:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8436:6:66","nodeType":"YulIdentifier","src":"8436:6:66"},"nativeSrc":"8436:12:66","nodeType":"YulFunctionCall","src":"8436:12:66"},"nativeSrc":"8436:12:66","nodeType":"YulExpressionStatement","src":"8436:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"8406:5:66","nodeType":"YulIdentifier","src":"8406:5:66"},{"arguments":[{"name":"value","nativeSrc":"8417:5:66","nodeType":"YulIdentifier","src":"8417:5:66"},{"kind":"number","nativeSrc":"8424:6:66","nodeType":"YulLiteral","src":"8424:6:66","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"8413:3:66","nodeType":"YulIdentifier","src":"8413:3:66"},"nativeSrc":"8413:18:66","nodeType":"YulFunctionCall","src":"8413:18:66"}],"functionName":{"name":"eq","nativeSrc":"8403:2:66","nodeType":"YulIdentifier","src":"8403:2:66"},"nativeSrc":"8403:29:66","nodeType":"YulFunctionCall","src":"8403:29:66"}],"functionName":{"name":"iszero","nativeSrc":"8396:6:66","nodeType":"YulIdentifier","src":"8396:6:66"},"nativeSrc":"8396:37:66","nodeType":"YulFunctionCall","src":"8396:37:66"},"nativeSrc":"8393:57:66","nodeType":"YulIf","src":"8393:57:66"}]},"name":"abi_decode_uint16","nativeSrc":"8297:159:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"8324:6:66","nodeType":"YulTypedName","src":"8324:6:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"8335:5:66","nodeType":"YulTypedName","src":"8335:5:66","type":""}],"src":"8297:159:66"},{"body":{"nativeSrc":"8546:171:66","nodeType":"YulBlock","src":"8546:171:66","statements":[{"body":{"nativeSrc":"8592:16:66","nodeType":"YulBlock","src":"8592:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8601:1:66","nodeType":"YulLiteral","src":"8601:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"8604:1:66","nodeType":"YulLiteral","src":"8604:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8594:6:66","nodeType":"YulIdentifier","src":"8594:6:66"},"nativeSrc":"8594:12:66","nodeType":"YulFunctionCall","src":"8594:12:66"},"nativeSrc":"8594:12:66","nodeType":"YulExpressionStatement","src":"8594:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8567:7:66","nodeType":"YulIdentifier","src":"8567:7:66"},{"name":"headStart","nativeSrc":"8576:9:66","nodeType":"YulIdentifier","src":"8576:9:66"}],"functionName":{"name":"sub","nativeSrc":"8563:3:66","nodeType":"YulIdentifier","src":"8563:3:66"},"nativeSrc":"8563:23:66","nodeType":"YulFunctionCall","src":"8563:23:66"},{"kind":"number","nativeSrc":"8588:2:66","nodeType":"YulLiteral","src":"8588:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"8559:3:66","nodeType":"YulIdentifier","src":"8559:3:66"},"nativeSrc":"8559:32:66","nodeType":"YulFunctionCall","src":"8559:32:66"},"nativeSrc":"8556:52:66","nodeType":"YulIf","src":"8556:52:66"},{"nativeSrc":"8617:38:66","nodeType":"YulAssignment","src":"8617:38:66","value":{"arguments":[{"name":"headStart","nativeSrc":"8645:9:66","nodeType":"YulIdentifier","src":"8645:9:66"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"8627:17:66","nodeType":"YulIdentifier","src":"8627:17:66"},"nativeSrc":"8627:28:66","nodeType":"YulFunctionCall","src":"8627:28:66"},"variableNames":[{"name":"value0","nativeSrc":"8617:6:66","nodeType":"YulIdentifier","src":"8617:6:66"}]},{"nativeSrc":"8664:47:66","nodeType":"YulAssignment","src":"8664:47:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8696:9:66","nodeType":"YulIdentifier","src":"8696:9:66"},{"kind":"number","nativeSrc":"8707:2:66","nodeType":"YulLiteral","src":"8707:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8692:3:66","nodeType":"YulIdentifier","src":"8692:3:66"},"nativeSrc":"8692:18:66","nodeType":"YulFunctionCall","src":"8692:18:66"}],"functionName":{"name":"abi_decode_uint16","nativeSrc":"8674:17:66","nodeType":"YulIdentifier","src":"8674:17:66"},"nativeSrc":"8674:37:66","nodeType":"YulFunctionCall","src":"8674:37:66"},"variableNames":[{"name":"value1","nativeSrc":"8664:6:66","nodeType":"YulIdentifier","src":"8664:6:66"}]}]},"name":"abi_decode_tuple_t_uint32t_uint16","nativeSrc":"8461:256:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8504:9:66","nodeType":"YulTypedName","src":"8504:9:66","type":""},{"name":"dataEnd","nativeSrc":"8515:7:66","nodeType":"YulTypedName","src":"8515:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8527:6:66","nodeType":"YulTypedName","src":"8527:6:66","type":""},{"name":"value1","nativeSrc":"8535:6:66","nodeType":"YulTypedName","src":"8535:6:66","type":""}],"src":"8461:256:66"},{"body":{"nativeSrc":"8841:99:66","nodeType":"YulBlock","src":"8841:99:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8858:9:66","nodeType":"YulIdentifier","src":"8858:9:66"},{"kind":"number","nativeSrc":"8869:2:66","nodeType":"YulLiteral","src":"8869:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"8851:6:66","nodeType":"YulIdentifier","src":"8851:6:66"},"nativeSrc":"8851:21:66","nodeType":"YulFunctionCall","src":"8851:21:66"},"nativeSrc":"8851:21:66","nodeType":"YulExpressionStatement","src":"8851:21:66"},{"nativeSrc":"8881:53:66","nodeType":"YulAssignment","src":"8881:53:66","value":{"arguments":[{"name":"value0","nativeSrc":"8907:6:66","nodeType":"YulIdentifier","src":"8907:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"8919:9:66","nodeType":"YulIdentifier","src":"8919:9:66"},{"kind":"number","nativeSrc":"8930:2:66","nodeType":"YulLiteral","src":"8930:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8915:3:66","nodeType":"YulIdentifier","src":"8915:3:66"},"nativeSrc":"8915:18:66","nodeType":"YulFunctionCall","src":"8915:18:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"8889:17:66","nodeType":"YulIdentifier","src":"8889:17:66"},"nativeSrc":"8889:45:66","nodeType":"YulFunctionCall","src":"8889:45:66"},"variableNames":[{"name":"tail","nativeSrc":"8881:4:66","nodeType":"YulIdentifier","src":"8881:4:66"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"8722:218:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8810:9:66","nodeType":"YulTypedName","src":"8810:9:66","type":""},{"name":"value0","nativeSrc":"8821:6:66","nodeType":"YulTypedName","src":"8821:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8832:4:66","nodeType":"YulTypedName","src":"8832:4:66","type":""}],"src":"8722:218:66"},{"body":{"nativeSrc":"9074:102:66","nodeType":"YulBlock","src":"9074:102:66","statements":[{"nativeSrc":"9084:26:66","nodeType":"YulAssignment","src":"9084:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"9096:9:66","nodeType":"YulIdentifier","src":"9096:9:66"},{"kind":"number","nativeSrc":"9107:2:66","nodeType":"YulLiteral","src":"9107:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9092:3:66","nodeType":"YulIdentifier","src":"9092:3:66"},"nativeSrc":"9092:18:66","nodeType":"YulFunctionCall","src":"9092:18:66"},"variableNames":[{"name":"tail","nativeSrc":"9084:4:66","nodeType":"YulIdentifier","src":"9084:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9126:9:66","nodeType":"YulIdentifier","src":"9126:9:66"},{"arguments":[{"name":"value0","nativeSrc":"9141:6:66","nodeType":"YulIdentifier","src":"9141:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9157:3:66","nodeType":"YulLiteral","src":"9157:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"9162:1:66","nodeType":"YulLiteral","src":"9162:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"9153:3:66","nodeType":"YulIdentifier","src":"9153:3:66"},"nativeSrc":"9153:11:66","nodeType":"YulFunctionCall","src":"9153:11:66"},{"kind":"number","nativeSrc":"9166:1:66","nodeType":"YulLiteral","src":"9166:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"9149:3:66","nodeType":"YulIdentifier","src":"9149:3:66"},"nativeSrc":"9149:19:66","nodeType":"YulFunctionCall","src":"9149:19:66"}],"functionName":{"name":"and","nativeSrc":"9137:3:66","nodeType":"YulIdentifier","src":"9137:3:66"},"nativeSrc":"9137:32:66","nodeType":"YulFunctionCall","src":"9137:32:66"}],"functionName":{"name":"mstore","nativeSrc":"9119:6:66","nodeType":"YulIdentifier","src":"9119:6:66"},"nativeSrc":"9119:51:66","nodeType":"YulFunctionCall","src":"9119:51:66"},"nativeSrc":"9119:51:66","nodeType":"YulExpressionStatement","src":"9119:51:66"}]},"name":"abi_encode_tuple_t_contract$_ILayerZeroEndpointV2_$202__to_t_address__fromStack_reversed","nativeSrc":"8945:231:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9043:9:66","nodeType":"YulTypedName","src":"9043:9:66","type":""},{"name":"value0","nativeSrc":"9054:6:66","nodeType":"YulTypedName","src":"9054:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9065:4:66","nodeType":"YulTypedName","src":"9065:4:66","type":""}],"src":"8945:231:66"},{"body":{"nativeSrc":"9251:177:66","nodeType":"YulBlock","src":"9251:177:66","statements":[{"body":{"nativeSrc":"9297:16:66","nodeType":"YulBlock","src":"9297:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9306:1:66","nodeType":"YulLiteral","src":"9306:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"9309:1:66","nodeType":"YulLiteral","src":"9309:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9299:6:66","nodeType":"YulIdentifier","src":"9299:6:66"},"nativeSrc":"9299:12:66","nodeType":"YulFunctionCall","src":"9299:12:66"},"nativeSrc":"9299:12:66","nodeType":"YulExpressionStatement","src":"9299:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9272:7:66","nodeType":"YulIdentifier","src":"9272:7:66"},{"name":"headStart","nativeSrc":"9281:9:66","nodeType":"YulIdentifier","src":"9281:9:66"}],"functionName":{"name":"sub","nativeSrc":"9268:3:66","nodeType":"YulIdentifier","src":"9268:3:66"},"nativeSrc":"9268:23:66","nodeType":"YulFunctionCall","src":"9268:23:66"},{"kind":"number","nativeSrc":"9293:2:66","nodeType":"YulLiteral","src":"9293:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"9264:3:66","nodeType":"YulIdentifier","src":"9264:3:66"},"nativeSrc":"9264:32:66","nodeType":"YulFunctionCall","src":"9264:32:66"},"nativeSrc":"9261:52:66","nodeType":"YulIf","src":"9261:52:66"},{"nativeSrc":"9322:36:66","nodeType":"YulVariableDeclaration","src":"9322:36:66","value":{"arguments":[{"name":"headStart","nativeSrc":"9348:9:66","nodeType":"YulIdentifier","src":"9348:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"9335:12:66","nodeType":"YulIdentifier","src":"9335:12:66"},"nativeSrc":"9335:23:66","nodeType":"YulFunctionCall","src":"9335:23:66"},"variables":[{"name":"value","nativeSrc":"9326:5:66","nodeType":"YulTypedName","src":"9326:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"9392:5:66","nodeType":"YulIdentifier","src":"9392:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"9367:24:66","nodeType":"YulIdentifier","src":"9367:24:66"},"nativeSrc":"9367:31:66","nodeType":"YulFunctionCall","src":"9367:31:66"},"nativeSrc":"9367:31:66","nodeType":"YulExpressionStatement","src":"9367:31:66"},{"nativeSrc":"9407:15:66","nodeType":"YulAssignment","src":"9407:15:66","value":{"name":"value","nativeSrc":"9417:5:66","nodeType":"YulIdentifier","src":"9417:5:66"},"variableNames":[{"name":"value0","nativeSrc":"9407:6:66","nodeType":"YulIdentifier","src":"9407:6:66"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"9181:247:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9217:9:66","nodeType":"YulTypedName","src":"9217:9:66","type":""},{"name":"dataEnd","nativeSrc":"9228:7:66","nodeType":"YulTypedName","src":"9228:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9240:6:66","nodeType":"YulTypedName","src":"9240:6:66","type":""}],"src":"9181:247:66"},{"body":{"nativeSrc":"9532:101:66","nodeType":"YulBlock","src":"9532:101:66","statements":[{"nativeSrc":"9542:26:66","nodeType":"YulAssignment","src":"9542:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"9554:9:66","nodeType":"YulIdentifier","src":"9554:9:66"},{"kind":"number","nativeSrc":"9565:2:66","nodeType":"YulLiteral","src":"9565:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9550:3:66","nodeType":"YulIdentifier","src":"9550:3:66"},"nativeSrc":"9550:18:66","nodeType":"YulFunctionCall","src":"9550:18:66"},"variableNames":[{"name":"tail","nativeSrc":"9542:4:66","nodeType":"YulIdentifier","src":"9542:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9584:9:66","nodeType":"YulIdentifier","src":"9584:9:66"},{"arguments":[{"name":"value0","nativeSrc":"9599:6:66","nodeType":"YulIdentifier","src":"9599:6:66"},{"kind":"number","nativeSrc":"9607:18:66","nodeType":"YulLiteral","src":"9607:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"9595:3:66","nodeType":"YulIdentifier","src":"9595:3:66"},"nativeSrc":"9595:31:66","nodeType":"YulFunctionCall","src":"9595:31:66"}],"functionName":{"name":"mstore","nativeSrc":"9577:6:66","nodeType":"YulIdentifier","src":"9577:6:66"},"nativeSrc":"9577:50:66","nodeType":"YulFunctionCall","src":"9577:50:66"},"nativeSrc":"9577:50:66","nodeType":"YulExpressionStatement","src":"9577:50:66"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"9433:200:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9501:9:66","nodeType":"YulTypedName","src":"9501:9:66","type":""},{"name":"value0","nativeSrc":"9512:6:66","nodeType":"YulTypedName","src":"9512:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9523:4:66","nodeType":"YulTypedName","src":"9523:4:66","type":""}],"src":"9433:200:66"},{"body":{"nativeSrc":"9785:521:66","nodeType":"YulBlock","src":"9785:521:66","statements":[{"body":{"nativeSrc":"9832:16:66","nodeType":"YulBlock","src":"9832:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9841:1:66","nodeType":"YulLiteral","src":"9841:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"9844:1:66","nodeType":"YulLiteral","src":"9844:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9834:6:66","nodeType":"YulIdentifier","src":"9834:6:66"},"nativeSrc":"9834:12:66","nodeType":"YulFunctionCall","src":"9834:12:66"},"nativeSrc":"9834:12:66","nodeType":"YulExpressionStatement","src":"9834:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9806:7:66","nodeType":"YulIdentifier","src":"9806:7:66"},{"name":"headStart","nativeSrc":"9815:9:66","nodeType":"YulIdentifier","src":"9815:9:66"}],"functionName":{"name":"sub","nativeSrc":"9802:3:66","nodeType":"YulIdentifier","src":"9802:3:66"},"nativeSrc":"9802:23:66","nodeType":"YulFunctionCall","src":"9802:23:66"},{"kind":"number","nativeSrc":"9827:3:66","nodeType":"YulLiteral","src":"9827:3:66","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"9798:3:66","nodeType":"YulIdentifier","src":"9798:3:66"},"nativeSrc":"9798:33:66","nodeType":"YulFunctionCall","src":"9798:33:66"},"nativeSrc":"9795:53:66","nodeType":"YulIf","src":"9795:53:66"},{"nativeSrc":"9857:63:66","nodeType":"YulAssignment","src":"9857:63:66","value":{"arguments":[{"name":"headStart","nativeSrc":"9901:9:66","nodeType":"YulIdentifier","src":"9901:9:66"},{"name":"dataEnd","nativeSrc":"9912:7:66","nodeType":"YulIdentifier","src":"9912:7:66"}],"functionName":{"name":"abi_decode_struct_Origin_calldata","nativeSrc":"9867:33:66","nodeType":"YulIdentifier","src":"9867:33:66"},"nativeSrc":"9867:53:66","nodeType":"YulFunctionCall","src":"9867:53:66"},"variableNames":[{"name":"value0","nativeSrc":"9857:6:66","nodeType":"YulIdentifier","src":"9857:6:66"}]},{"nativeSrc":"9929:46:66","nodeType":"YulVariableDeclaration","src":"9929:46:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9960:9:66","nodeType":"YulIdentifier","src":"9960:9:66"},{"kind":"number","nativeSrc":"9971:2:66","nodeType":"YulLiteral","src":"9971:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"9956:3:66","nodeType":"YulIdentifier","src":"9956:3:66"},"nativeSrc":"9956:18:66","nodeType":"YulFunctionCall","src":"9956:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"9943:12:66","nodeType":"YulIdentifier","src":"9943:12:66"},"nativeSrc":"9943:32:66","nodeType":"YulFunctionCall","src":"9943:32:66"},"variables":[{"name":"offset","nativeSrc":"9933:6:66","nodeType":"YulTypedName","src":"9933:6:66","type":""}]},{"body":{"nativeSrc":"10018:16:66","nodeType":"YulBlock","src":"10018:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10027:1:66","nodeType":"YulLiteral","src":"10027:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"10030:1:66","nodeType":"YulLiteral","src":"10030:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10020:6:66","nodeType":"YulIdentifier","src":"10020:6:66"},"nativeSrc":"10020:12:66","nodeType":"YulFunctionCall","src":"10020:12:66"},"nativeSrc":"10020:12:66","nodeType":"YulExpressionStatement","src":"10020:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"9990:6:66","nodeType":"YulIdentifier","src":"9990:6:66"},{"kind":"number","nativeSrc":"9998:18:66","nodeType":"YulLiteral","src":"9998:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9987:2:66","nodeType":"YulIdentifier","src":"9987:2:66"},"nativeSrc":"9987:30:66","nodeType":"YulFunctionCall","src":"9987:30:66"},"nativeSrc":"9984:50:66","nodeType":"YulIf","src":"9984:50:66"},{"nativeSrc":"10043:84:66","nodeType":"YulVariableDeclaration","src":"10043:84:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10099:9:66","nodeType":"YulIdentifier","src":"10099:9:66"},{"name":"offset","nativeSrc":"10110:6:66","nodeType":"YulIdentifier","src":"10110:6:66"}],"functionName":{"name":"add","nativeSrc":"10095:3:66","nodeType":"YulIdentifier","src":"10095:3:66"},"nativeSrc":"10095:22:66","nodeType":"YulFunctionCall","src":"10095:22:66"},{"name":"dataEnd","nativeSrc":"10119:7:66","nodeType":"YulIdentifier","src":"10119:7:66"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"10069:25:66","nodeType":"YulIdentifier","src":"10069:25:66"},"nativeSrc":"10069:58:66","nodeType":"YulFunctionCall","src":"10069:58:66"},"variables":[{"name":"value1_1","nativeSrc":"10047:8:66","nodeType":"YulTypedName","src":"10047:8:66","type":""},{"name":"value2_1","nativeSrc":"10057:8:66","nodeType":"YulTypedName","src":"10057:8:66","type":""}]},{"nativeSrc":"10136:18:66","nodeType":"YulAssignment","src":"10136:18:66","value":{"name":"value1_1","nativeSrc":"10146:8:66","nodeType":"YulIdentifier","src":"10146:8:66"},"variableNames":[{"name":"value1","nativeSrc":"10136:6:66","nodeType":"YulIdentifier","src":"10136:6:66"}]},{"nativeSrc":"10163:18:66","nodeType":"YulAssignment","src":"10163:18:66","value":{"name":"value2_1","nativeSrc":"10173:8:66","nodeType":"YulIdentifier","src":"10173:8:66"},"variableNames":[{"name":"value2","nativeSrc":"10163:6:66","nodeType":"YulIdentifier","src":"10163:6:66"}]},{"nativeSrc":"10190:46:66","nodeType":"YulVariableDeclaration","src":"10190:46:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10220:9:66","nodeType":"YulIdentifier","src":"10220:9:66"},{"kind":"number","nativeSrc":"10231:3:66","nodeType":"YulLiteral","src":"10231:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"10216:3:66","nodeType":"YulIdentifier","src":"10216:3:66"},"nativeSrc":"10216:19:66","nodeType":"YulFunctionCall","src":"10216:19:66"}],"functionName":{"name":"calldataload","nativeSrc":"10203:12:66","nodeType":"YulIdentifier","src":"10203:12:66"},"nativeSrc":"10203:33:66","nodeType":"YulFunctionCall","src":"10203:33:66"},"variables":[{"name":"value","nativeSrc":"10194:5:66","nodeType":"YulTypedName","src":"10194:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"10270:5:66","nodeType":"YulIdentifier","src":"10270:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"10245:24:66","nodeType":"YulIdentifier","src":"10245:24:66"},"nativeSrc":"10245:31:66","nodeType":"YulFunctionCall","src":"10245:31:66"},"nativeSrc":"10245:31:66","nodeType":"YulExpressionStatement","src":"10245:31:66"},{"nativeSrc":"10285:15:66","nodeType":"YulAssignment","src":"10285:15:66","value":{"name":"value","nativeSrc":"10295:5:66","nodeType":"YulIdentifier","src":"10295:5:66"},"variableNames":[{"name":"value3","nativeSrc":"10285:6:66","nodeType":"YulIdentifier","src":"10285:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes_calldata_ptrt_address","nativeSrc":"9638:668:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9727:9:66","nodeType":"YulTypedName","src":"9727:9:66","type":""},{"name":"dataEnd","nativeSrc":"9738:7:66","nodeType":"YulTypedName","src":"9738:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9750:6:66","nodeType":"YulTypedName","src":"9750:6:66","type":""},{"name":"value1","nativeSrc":"9758:6:66","nodeType":"YulTypedName","src":"9758:6:66","type":""},{"name":"value2","nativeSrc":"9766:6:66","nodeType":"YulTypedName","src":"9766:6:66","type":""},{"name":"value3","nativeSrc":"9774:6:66","nodeType":"YulTypedName","src":"9774:6:66","type":""}],"src":"9638:668:66"},{"body":{"nativeSrc":"10423:283:66","nodeType":"YulBlock","src":"10423:283:66","statements":[{"body":{"nativeSrc":"10472:16:66","nodeType":"YulBlock","src":"10472:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10481:1:66","nodeType":"YulLiteral","src":"10481:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"10484:1:66","nodeType":"YulLiteral","src":"10484:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10474:6:66","nodeType":"YulIdentifier","src":"10474:6:66"},"nativeSrc":"10474:12:66","nodeType":"YulFunctionCall","src":"10474:12:66"},"nativeSrc":"10474:12:66","nodeType":"YulExpressionStatement","src":"10474:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"10451:6:66","nodeType":"YulIdentifier","src":"10451:6:66"},{"kind":"number","nativeSrc":"10459:4:66","nodeType":"YulLiteral","src":"10459:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"10447:3:66","nodeType":"YulIdentifier","src":"10447:3:66"},"nativeSrc":"10447:17:66","nodeType":"YulFunctionCall","src":"10447:17:66"},{"name":"end","nativeSrc":"10466:3:66","nodeType":"YulIdentifier","src":"10466:3:66"}],"functionName":{"name":"slt","nativeSrc":"10443:3:66","nodeType":"YulIdentifier","src":"10443:3:66"},"nativeSrc":"10443:27:66","nodeType":"YulFunctionCall","src":"10443:27:66"}],"functionName":{"name":"iszero","nativeSrc":"10436:6:66","nodeType":"YulIdentifier","src":"10436:6:66"},"nativeSrc":"10436:35:66","nodeType":"YulFunctionCall","src":"10436:35:66"},"nativeSrc":"10433:55:66","nodeType":"YulIf","src":"10433:55:66"},{"nativeSrc":"10497:30:66","nodeType":"YulAssignment","src":"10497:30:66","value":{"arguments":[{"name":"offset","nativeSrc":"10520:6:66","nodeType":"YulIdentifier","src":"10520:6:66"}],"functionName":{"name":"calldataload","nativeSrc":"10507:12:66","nodeType":"YulIdentifier","src":"10507:12:66"},"nativeSrc":"10507:20:66","nodeType":"YulFunctionCall","src":"10507:20:66"},"variableNames":[{"name":"length","nativeSrc":"10497:6:66","nodeType":"YulIdentifier","src":"10497:6:66"}]},{"body":{"nativeSrc":"10570:16:66","nodeType":"YulBlock","src":"10570:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10579:1:66","nodeType":"YulLiteral","src":"10579:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"10582:1:66","nodeType":"YulLiteral","src":"10582:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10572:6:66","nodeType":"YulIdentifier","src":"10572:6:66"},"nativeSrc":"10572:12:66","nodeType":"YulFunctionCall","src":"10572:12:66"},"nativeSrc":"10572:12:66","nodeType":"YulExpressionStatement","src":"10572:12:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"10542:6:66","nodeType":"YulIdentifier","src":"10542:6:66"},{"kind":"number","nativeSrc":"10550:18:66","nodeType":"YulLiteral","src":"10550:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10539:2:66","nodeType":"YulIdentifier","src":"10539:2:66"},"nativeSrc":"10539:30:66","nodeType":"YulFunctionCall","src":"10539:30:66"},"nativeSrc":"10536:50:66","nodeType":"YulIf","src":"10536:50:66"},{"nativeSrc":"10595:29:66","nodeType":"YulAssignment","src":"10595:29:66","value":{"arguments":[{"name":"offset","nativeSrc":"10611:6:66","nodeType":"YulIdentifier","src":"10611:6:66"},{"kind":"number","nativeSrc":"10619:4:66","nodeType":"YulLiteral","src":"10619:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10607:3:66","nodeType":"YulIdentifier","src":"10607:3:66"},"nativeSrc":"10607:17:66","nodeType":"YulFunctionCall","src":"10607:17:66"},"variableNames":[{"name":"arrayPos","nativeSrc":"10595:8:66","nodeType":"YulIdentifier","src":"10595:8:66"}]},{"body":{"nativeSrc":"10684:16:66","nodeType":"YulBlock","src":"10684:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10693:1:66","nodeType":"YulLiteral","src":"10693:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"10696:1:66","nodeType":"YulLiteral","src":"10696:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10686:6:66","nodeType":"YulIdentifier","src":"10686:6:66"},"nativeSrc":"10686:12:66","nodeType":"YulFunctionCall","src":"10686:12:66"},"nativeSrc":"10686:12:66","nodeType":"YulExpressionStatement","src":"10686:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"10647:6:66","nodeType":"YulIdentifier","src":"10647:6:66"},{"arguments":[{"kind":"number","nativeSrc":"10659:1:66","nodeType":"YulLiteral","src":"10659:1:66","type":"","value":"5"},{"name":"length","nativeSrc":"10662:6:66","nodeType":"YulIdentifier","src":"10662:6:66"}],"functionName":{"name":"shl","nativeSrc":"10655:3:66","nodeType":"YulIdentifier","src":"10655:3:66"},"nativeSrc":"10655:14:66","nodeType":"YulFunctionCall","src":"10655:14:66"}],"functionName":{"name":"add","nativeSrc":"10643:3:66","nodeType":"YulIdentifier","src":"10643:3:66"},"nativeSrc":"10643:27:66","nodeType":"YulFunctionCall","src":"10643:27:66"},{"kind":"number","nativeSrc":"10672:4:66","nodeType":"YulLiteral","src":"10672:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10639:3:66","nodeType":"YulIdentifier","src":"10639:3:66"},"nativeSrc":"10639:38:66","nodeType":"YulFunctionCall","src":"10639:38:66"},{"name":"end","nativeSrc":"10679:3:66","nodeType":"YulIdentifier","src":"10679:3:66"}],"functionName":{"name":"gt","nativeSrc":"10636:2:66","nodeType":"YulIdentifier","src":"10636:2:66"},"nativeSrc":"10636:47:66","nodeType":"YulFunctionCall","src":"10636:47:66"},"nativeSrc":"10633:67:66","nodeType":"YulIf","src":"10633:67:66"}]},"name":"abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata","nativeSrc":"10311:395:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"10386:6:66","nodeType":"YulTypedName","src":"10386:6:66","type":""},{"name":"end","nativeSrc":"10394:3:66","nodeType":"YulTypedName","src":"10394:3:66","type":""}],"returnVariables":[{"name":"arrayPos","nativeSrc":"10402:8:66","nodeType":"YulTypedName","src":"10402:8:66","type":""},{"name":"length","nativeSrc":"10412:6:66","nodeType":"YulTypedName","src":"10412:6:66","type":""}],"src":"10311:395:66"},{"body":{"nativeSrc":"10855:360:66","nodeType":"YulBlock","src":"10855:360:66","statements":[{"body":{"nativeSrc":"10901:16:66","nodeType":"YulBlock","src":"10901:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10910:1:66","nodeType":"YulLiteral","src":"10910:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"10913:1:66","nodeType":"YulLiteral","src":"10913:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10903:6:66","nodeType":"YulIdentifier","src":"10903:6:66"},"nativeSrc":"10903:12:66","nodeType":"YulFunctionCall","src":"10903:12:66"},"nativeSrc":"10903:12:66","nodeType":"YulExpressionStatement","src":"10903:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10876:7:66","nodeType":"YulIdentifier","src":"10876:7:66"},{"name":"headStart","nativeSrc":"10885:9:66","nodeType":"YulIdentifier","src":"10885:9:66"}],"functionName":{"name":"sub","nativeSrc":"10872:3:66","nodeType":"YulIdentifier","src":"10872:3:66"},"nativeSrc":"10872:23:66","nodeType":"YulFunctionCall","src":"10872:23:66"},{"kind":"number","nativeSrc":"10897:2:66","nodeType":"YulLiteral","src":"10897:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"10868:3:66","nodeType":"YulIdentifier","src":"10868:3:66"},"nativeSrc":"10868:32:66","nodeType":"YulFunctionCall","src":"10868:32:66"},"nativeSrc":"10865:52:66","nodeType":"YulIf","src":"10865:52:66"},{"nativeSrc":"10926:37:66","nodeType":"YulVariableDeclaration","src":"10926:37:66","value":{"arguments":[{"name":"headStart","nativeSrc":"10953:9:66","nodeType":"YulIdentifier","src":"10953:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"10940:12:66","nodeType":"YulIdentifier","src":"10940:12:66"},"nativeSrc":"10940:23:66","nodeType":"YulFunctionCall","src":"10940:23:66"},"variables":[{"name":"offset","nativeSrc":"10930:6:66","nodeType":"YulTypedName","src":"10930:6:66","type":""}]},{"body":{"nativeSrc":"11006:16:66","nodeType":"YulBlock","src":"11006:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11015:1:66","nodeType":"YulLiteral","src":"11015:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"11018:1:66","nodeType":"YulLiteral","src":"11018:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11008:6:66","nodeType":"YulIdentifier","src":"11008:6:66"},"nativeSrc":"11008:12:66","nodeType":"YulFunctionCall","src":"11008:12:66"},"nativeSrc":"11008:12:66","nodeType":"YulExpressionStatement","src":"11008:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"10978:6:66","nodeType":"YulIdentifier","src":"10978:6:66"},{"kind":"number","nativeSrc":"10986:18:66","nodeType":"YulLiteral","src":"10986:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10975:2:66","nodeType":"YulIdentifier","src":"10975:2:66"},"nativeSrc":"10975:30:66","nodeType":"YulFunctionCall","src":"10975:30:66"},"nativeSrc":"10972:50:66","nodeType":"YulIf","src":"10972:50:66"},{"nativeSrc":"11031:124:66","nodeType":"YulVariableDeclaration","src":"11031:124:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11127:9:66","nodeType":"YulIdentifier","src":"11127:9:66"},{"name":"offset","nativeSrc":"11138:6:66","nodeType":"YulIdentifier","src":"11138:6:66"}],"functionName":{"name":"add","nativeSrc":"11123:3:66","nodeType":"YulIdentifier","src":"11123:3:66"},"nativeSrc":"11123:22:66","nodeType":"YulFunctionCall","src":"11123:22:66"},{"name":"dataEnd","nativeSrc":"11147:7:66","nodeType":"YulIdentifier","src":"11147:7:66"}],"functionName":{"name":"abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata","nativeSrc":"11057:65:66","nodeType":"YulIdentifier","src":"11057:65:66"},"nativeSrc":"11057:98:66","nodeType":"YulFunctionCall","src":"11057:98:66"},"variables":[{"name":"value0_1","nativeSrc":"11035:8:66","nodeType":"YulTypedName","src":"11035:8:66","type":""},{"name":"value1_1","nativeSrc":"11045:8:66","nodeType":"YulTypedName","src":"11045:8:66","type":""}]},{"nativeSrc":"11164:18:66","nodeType":"YulAssignment","src":"11164:18:66","value":{"name":"value0_1","nativeSrc":"11174:8:66","nodeType":"YulIdentifier","src":"11174:8:66"},"variableNames":[{"name":"value0","nativeSrc":"11164:6:66","nodeType":"YulIdentifier","src":"11164:6:66"}]},{"nativeSrc":"11191:18:66","nodeType":"YulAssignment","src":"11191:18:66","value":{"name":"value1_1","nativeSrc":"11201:8:66","nodeType":"YulIdentifier","src":"11201:8:66"},"variableNames":[{"name":"value1","nativeSrc":"11191:6:66","nodeType":"YulIdentifier","src":"11191:6:66"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr","nativeSrc":"10711:504:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10813:9:66","nodeType":"YulTypedName","src":"10813:9:66","type":""},{"name":"dataEnd","nativeSrc":"10824:7:66","nodeType":"YulTypedName","src":"10824:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10836:6:66","nodeType":"YulTypedName","src":"10836:6:66","type":""},{"name":"value1","nativeSrc":"10844:6:66","nodeType":"YulTypedName","src":"10844:6:66","type":""}],"src":"10711:504:66"},{"body":{"nativeSrc":"11289:115:66","nodeType":"YulBlock","src":"11289:115:66","statements":[{"body":{"nativeSrc":"11335:16:66","nodeType":"YulBlock","src":"11335:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11344:1:66","nodeType":"YulLiteral","src":"11344:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"11347:1:66","nodeType":"YulLiteral","src":"11347:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11337:6:66","nodeType":"YulIdentifier","src":"11337:6:66"},"nativeSrc":"11337:12:66","nodeType":"YulFunctionCall","src":"11337:12:66"},"nativeSrc":"11337:12:66","nodeType":"YulExpressionStatement","src":"11337:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11310:7:66","nodeType":"YulIdentifier","src":"11310:7:66"},{"name":"headStart","nativeSrc":"11319:9:66","nodeType":"YulIdentifier","src":"11319:9:66"}],"functionName":{"name":"sub","nativeSrc":"11306:3:66","nodeType":"YulIdentifier","src":"11306:3:66"},"nativeSrc":"11306:23:66","nodeType":"YulFunctionCall","src":"11306:23:66"},{"kind":"number","nativeSrc":"11331:2:66","nodeType":"YulLiteral","src":"11331:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"11302:3:66","nodeType":"YulIdentifier","src":"11302:3:66"},"nativeSrc":"11302:32:66","nodeType":"YulFunctionCall","src":"11302:32:66"},"nativeSrc":"11299:52:66","nodeType":"YulIf","src":"11299:52:66"},{"nativeSrc":"11360:38:66","nodeType":"YulAssignment","src":"11360:38:66","value":{"arguments":[{"name":"headStart","nativeSrc":"11388:9:66","nodeType":"YulIdentifier","src":"11388:9:66"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"11370:17:66","nodeType":"YulIdentifier","src":"11370:17:66"},"nativeSrc":"11370:28:66","nodeType":"YulFunctionCall","src":"11370:28:66"},"variableNames":[{"name":"value0","nativeSrc":"11360:6:66","nodeType":"YulIdentifier","src":"11360:6:66"}]}]},"name":"abi_decode_tuple_t_uint32","nativeSrc":"11220:184:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11255:9:66","nodeType":"YulTypedName","src":"11255:9:66","type":""},{"name":"dataEnd","nativeSrc":"11266:7:66","nodeType":"YulTypedName","src":"11266:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11278:6:66","nodeType":"YulTypedName","src":"11278:6:66","type":""}],"src":"11220:184:66"},{"body":{"nativeSrc":"11510:76:66","nodeType":"YulBlock","src":"11510:76:66","statements":[{"nativeSrc":"11520:26:66","nodeType":"YulAssignment","src":"11520:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"11532:9:66","nodeType":"YulIdentifier","src":"11532:9:66"},{"kind":"number","nativeSrc":"11543:2:66","nodeType":"YulLiteral","src":"11543:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11528:3:66","nodeType":"YulIdentifier","src":"11528:3:66"},"nativeSrc":"11528:18:66","nodeType":"YulFunctionCall","src":"11528:18:66"},"variableNames":[{"name":"tail","nativeSrc":"11520:4:66","nodeType":"YulIdentifier","src":"11520:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11562:9:66","nodeType":"YulIdentifier","src":"11562:9:66"},{"name":"value0","nativeSrc":"11573:6:66","nodeType":"YulIdentifier","src":"11573:6:66"}],"functionName":{"name":"mstore","nativeSrc":"11555:6:66","nodeType":"YulIdentifier","src":"11555:6:66"},"nativeSrc":"11555:25:66","nodeType":"YulFunctionCall","src":"11555:25:66"},"nativeSrc":"11555:25:66","nodeType":"YulExpressionStatement","src":"11555:25:66"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"11409:177:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11479:9:66","nodeType":"YulTypedName","src":"11479:9:66","type":""},{"name":"value0","nativeSrc":"11490:6:66","nodeType":"YulTypedName","src":"11490:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11501:4:66","nodeType":"YulTypedName","src":"11501:4:66","type":""}],"src":"11409:177:66"},{"body":{"nativeSrc":"11712:432:66","nodeType":"YulBlock","src":"11712:432:66","statements":[{"body":{"nativeSrc":"11758:16:66","nodeType":"YulBlock","src":"11758:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11767:1:66","nodeType":"YulLiteral","src":"11767:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"11770:1:66","nodeType":"YulLiteral","src":"11770:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11760:6:66","nodeType":"YulIdentifier","src":"11760:6:66"},"nativeSrc":"11760:12:66","nodeType":"YulFunctionCall","src":"11760:12:66"},"nativeSrc":"11760:12:66","nodeType":"YulExpressionStatement","src":"11760:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11733:7:66","nodeType":"YulIdentifier","src":"11733:7:66"},{"name":"headStart","nativeSrc":"11742:9:66","nodeType":"YulIdentifier","src":"11742:9:66"}],"functionName":{"name":"sub","nativeSrc":"11729:3:66","nodeType":"YulIdentifier","src":"11729:3:66"},"nativeSrc":"11729:23:66","nodeType":"YulFunctionCall","src":"11729:23:66"},{"kind":"number","nativeSrc":"11754:2:66","nodeType":"YulLiteral","src":"11754:2:66","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"11725:3:66","nodeType":"YulIdentifier","src":"11725:3:66"},"nativeSrc":"11725:32:66","nodeType":"YulFunctionCall","src":"11725:32:66"},"nativeSrc":"11722:52:66","nodeType":"YulIf","src":"11722:52:66"},{"nativeSrc":"11783:38:66","nodeType":"YulAssignment","src":"11783:38:66","value":{"arguments":[{"name":"headStart","nativeSrc":"11811:9:66","nodeType":"YulIdentifier","src":"11811:9:66"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"11793:17:66","nodeType":"YulIdentifier","src":"11793:17:66"},"nativeSrc":"11793:28:66","nodeType":"YulFunctionCall","src":"11793:28:66"},"variableNames":[{"name":"value0","nativeSrc":"11783:6:66","nodeType":"YulIdentifier","src":"11783:6:66"}]},{"nativeSrc":"11830:47:66","nodeType":"YulAssignment","src":"11830:47:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11862:9:66","nodeType":"YulIdentifier","src":"11862:9:66"},{"kind":"number","nativeSrc":"11873:2:66","nodeType":"YulLiteral","src":"11873:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11858:3:66","nodeType":"YulIdentifier","src":"11858:3:66"},"nativeSrc":"11858:18:66","nodeType":"YulFunctionCall","src":"11858:18:66"}],"functionName":{"name":"abi_decode_uint16","nativeSrc":"11840:17:66","nodeType":"YulIdentifier","src":"11840:17:66"},"nativeSrc":"11840:37:66","nodeType":"YulFunctionCall","src":"11840:37:66"},"variableNames":[{"name":"value1","nativeSrc":"11830:6:66","nodeType":"YulIdentifier","src":"11830:6:66"}]},{"nativeSrc":"11886:46:66","nodeType":"YulVariableDeclaration","src":"11886:46:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11917:9:66","nodeType":"YulIdentifier","src":"11917:9:66"},{"kind":"number","nativeSrc":"11928:2:66","nodeType":"YulLiteral","src":"11928:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11913:3:66","nodeType":"YulIdentifier","src":"11913:3:66"},"nativeSrc":"11913:18:66","nodeType":"YulFunctionCall","src":"11913:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"11900:12:66","nodeType":"YulIdentifier","src":"11900:12:66"},"nativeSrc":"11900:32:66","nodeType":"YulFunctionCall","src":"11900:32:66"},"variables":[{"name":"offset","nativeSrc":"11890:6:66","nodeType":"YulTypedName","src":"11890:6:66","type":""}]},{"body":{"nativeSrc":"11975:16:66","nodeType":"YulBlock","src":"11975:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11984:1:66","nodeType":"YulLiteral","src":"11984:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"11987:1:66","nodeType":"YulLiteral","src":"11987:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11977:6:66","nodeType":"YulIdentifier","src":"11977:6:66"},"nativeSrc":"11977:12:66","nodeType":"YulFunctionCall","src":"11977:12:66"},"nativeSrc":"11977:12:66","nodeType":"YulExpressionStatement","src":"11977:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"11947:6:66","nodeType":"YulIdentifier","src":"11947:6:66"},{"kind":"number","nativeSrc":"11955:18:66","nodeType":"YulLiteral","src":"11955:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11944:2:66","nodeType":"YulIdentifier","src":"11944:2:66"},"nativeSrc":"11944:30:66","nodeType":"YulFunctionCall","src":"11944:30:66"},"nativeSrc":"11941:50:66","nodeType":"YulIf","src":"11941:50:66"},{"nativeSrc":"12000:84:66","nodeType":"YulVariableDeclaration","src":"12000:84:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12056:9:66","nodeType":"YulIdentifier","src":"12056:9:66"},{"name":"offset","nativeSrc":"12067:6:66","nodeType":"YulIdentifier","src":"12067:6:66"}],"functionName":{"name":"add","nativeSrc":"12052:3:66","nodeType":"YulIdentifier","src":"12052:3:66"},"nativeSrc":"12052:22:66","nodeType":"YulFunctionCall","src":"12052:22:66"},{"name":"dataEnd","nativeSrc":"12076:7:66","nodeType":"YulIdentifier","src":"12076:7:66"}],"functionName":{"name":"abi_decode_bytes_calldata","nativeSrc":"12026:25:66","nodeType":"YulIdentifier","src":"12026:25:66"},"nativeSrc":"12026:58:66","nodeType":"YulFunctionCall","src":"12026:58:66"},"variables":[{"name":"value2_1","nativeSrc":"12004:8:66","nodeType":"YulTypedName","src":"12004:8:66","type":""},{"name":"value3_1","nativeSrc":"12014:8:66","nodeType":"YulTypedName","src":"12014:8:66","type":""}]},{"nativeSrc":"12093:18:66","nodeType":"YulAssignment","src":"12093:18:66","value":{"name":"value2_1","nativeSrc":"12103:8:66","nodeType":"YulIdentifier","src":"12103:8:66"},"variableNames":[{"name":"value2","nativeSrc":"12093:6:66","nodeType":"YulIdentifier","src":"12093:6:66"}]},{"nativeSrc":"12120:18:66","nodeType":"YulAssignment","src":"12120:18:66","value":{"name":"value3_1","nativeSrc":"12130:8:66","nodeType":"YulIdentifier","src":"12130:8:66"},"variableNames":[{"name":"value3","nativeSrc":"12120:6:66","nodeType":"YulIdentifier","src":"12120:6:66"}]}]},"name":"abi_decode_tuple_t_uint32t_uint16t_bytes_calldata_ptr","nativeSrc":"11591:553:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11654:9:66","nodeType":"YulTypedName","src":"11654:9:66","type":""},{"name":"dataEnd","nativeSrc":"11665:7:66","nodeType":"YulTypedName","src":"11665:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11677:6:66","nodeType":"YulTypedName","src":"11677:6:66","type":""},{"name":"value1","nativeSrc":"11685:6:66","nodeType":"YulTypedName","src":"11685:6:66","type":""},{"name":"value2","nativeSrc":"11693:6:66","nodeType":"YulTypedName","src":"11693:6:66","type":""},{"name":"value3","nativeSrc":"11701:6:66","nodeType":"YulTypedName","src":"11701:6:66","type":""}],"src":"11591:553:66"},{"body":{"nativeSrc":"12287:360:66","nodeType":"YulBlock","src":"12287:360:66","statements":[{"body":{"nativeSrc":"12333:16:66","nodeType":"YulBlock","src":"12333:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12342:1:66","nodeType":"YulLiteral","src":"12342:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"12345:1:66","nodeType":"YulLiteral","src":"12345:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12335:6:66","nodeType":"YulIdentifier","src":"12335:6:66"},"nativeSrc":"12335:12:66","nodeType":"YulFunctionCall","src":"12335:12:66"},"nativeSrc":"12335:12:66","nodeType":"YulExpressionStatement","src":"12335:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"12308:7:66","nodeType":"YulIdentifier","src":"12308:7:66"},{"name":"headStart","nativeSrc":"12317:9:66","nodeType":"YulIdentifier","src":"12317:9:66"}],"functionName":{"name":"sub","nativeSrc":"12304:3:66","nodeType":"YulIdentifier","src":"12304:3:66"},"nativeSrc":"12304:23:66","nodeType":"YulFunctionCall","src":"12304:23:66"},{"kind":"number","nativeSrc":"12329:2:66","nodeType":"YulLiteral","src":"12329:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"12300:3:66","nodeType":"YulIdentifier","src":"12300:3:66"},"nativeSrc":"12300:32:66","nodeType":"YulFunctionCall","src":"12300:32:66"},"nativeSrc":"12297:52:66","nodeType":"YulIf","src":"12297:52:66"},{"nativeSrc":"12358:37:66","nodeType":"YulVariableDeclaration","src":"12358:37:66","value":{"arguments":[{"name":"headStart","nativeSrc":"12385:9:66","nodeType":"YulIdentifier","src":"12385:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"12372:12:66","nodeType":"YulIdentifier","src":"12372:12:66"},"nativeSrc":"12372:23:66","nodeType":"YulFunctionCall","src":"12372:23:66"},"variables":[{"name":"offset","nativeSrc":"12362:6:66","nodeType":"YulTypedName","src":"12362:6:66","type":""}]},{"body":{"nativeSrc":"12438:16:66","nodeType":"YulBlock","src":"12438:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12447:1:66","nodeType":"YulLiteral","src":"12447:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"12450:1:66","nodeType":"YulLiteral","src":"12450:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12440:6:66","nodeType":"YulIdentifier","src":"12440:6:66"},"nativeSrc":"12440:12:66","nodeType":"YulFunctionCall","src":"12440:12:66"},"nativeSrc":"12440:12:66","nodeType":"YulExpressionStatement","src":"12440:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"12410:6:66","nodeType":"YulIdentifier","src":"12410:6:66"},{"kind":"number","nativeSrc":"12418:18:66","nodeType":"YulLiteral","src":"12418:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12407:2:66","nodeType":"YulIdentifier","src":"12407:2:66"},"nativeSrc":"12407:30:66","nodeType":"YulFunctionCall","src":"12407:30:66"},"nativeSrc":"12404:50:66","nodeType":"YulIf","src":"12404:50:66"},{"nativeSrc":"12463:124:66","nodeType":"YulVariableDeclaration","src":"12463:124:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12559:9:66","nodeType":"YulIdentifier","src":"12559:9:66"},{"name":"offset","nativeSrc":"12570:6:66","nodeType":"YulIdentifier","src":"12570:6:66"}],"functionName":{"name":"add","nativeSrc":"12555:3:66","nodeType":"YulIdentifier","src":"12555:3:66"},"nativeSrc":"12555:22:66","nodeType":"YulFunctionCall","src":"12555:22:66"},{"name":"dataEnd","nativeSrc":"12579:7:66","nodeType":"YulIdentifier","src":"12579:7:66"}],"functionName":{"name":"abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata","nativeSrc":"12489:65:66","nodeType":"YulIdentifier","src":"12489:65:66"},"nativeSrc":"12489:98:66","nodeType":"YulFunctionCall","src":"12489:98:66"},"variables":[{"name":"value0_1","nativeSrc":"12467:8:66","nodeType":"YulTypedName","src":"12467:8:66","type":""},{"name":"value1_1","nativeSrc":"12477:8:66","nodeType":"YulTypedName","src":"12477:8:66","type":""}]},{"nativeSrc":"12596:18:66","nodeType":"YulAssignment","src":"12596:18:66","value":{"name":"value0_1","nativeSrc":"12606:8:66","nodeType":"YulIdentifier","src":"12606:8:66"},"variableNames":[{"name":"value0","nativeSrc":"12596:6:66","nodeType":"YulIdentifier","src":"12596:6:66"}]},{"nativeSrc":"12623:18:66","nodeType":"YulAssignment","src":"12623:18:66","value":{"name":"value1_1","nativeSrc":"12633:8:66","nodeType":"YulIdentifier","src":"12633:8:66"},"variableNames":[{"name":"value1","nativeSrc":"12623:6:66","nodeType":"YulIdentifier","src":"12623:6:66"}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr","nativeSrc":"12149:498:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12245:9:66","nodeType":"YulTypedName","src":"12245:9:66","type":""},{"name":"dataEnd","nativeSrc":"12256:7:66","nodeType":"YulTypedName","src":"12256:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"12268:6:66","nodeType":"YulTypedName","src":"12268:6:66","type":""},{"name":"value1","nativeSrc":"12276:6:66","nodeType":"YulTypedName","src":"12276:6:66","type":""}],"src":"12149:498:66"},{"body":{"nativeSrc":"12815:492:66","nodeType":"YulBlock","src":"12815:492:66","statements":[{"nativeSrc":"12825:33:66","nodeType":"YulVariableDeclaration","src":"12825:33:66","value":{"arguments":[{"name":"dataEnd","nativeSrc":"12839:7:66","nodeType":"YulIdentifier","src":"12839:7:66"},{"name":"headStart","nativeSrc":"12848:9:66","nodeType":"YulIdentifier","src":"12848:9:66"}],"functionName":{"name":"sub","nativeSrc":"12835:3:66","nodeType":"YulIdentifier","src":"12835:3:66"},"nativeSrc":"12835:23:66","nodeType":"YulFunctionCall","src":"12835:23:66"},"variables":[{"name":"_1","nativeSrc":"12829:2:66","nodeType":"YulTypedName","src":"12829:2:66","type":""}]},{"body":{"nativeSrc":"12883:16:66","nodeType":"YulBlock","src":"12883:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12892:1:66","nodeType":"YulLiteral","src":"12892:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"12895:1:66","nodeType":"YulLiteral","src":"12895:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12885:6:66","nodeType":"YulIdentifier","src":"12885:6:66"},"nativeSrc":"12885:12:66","nodeType":"YulFunctionCall","src":"12885:12:66"},"nativeSrc":"12885:12:66","nodeType":"YulExpressionStatement","src":"12885:12:66"}]},"condition":{"arguments":[{"name":"_1","nativeSrc":"12874:2:66","nodeType":"YulIdentifier","src":"12874:2:66"},{"kind":"number","nativeSrc":"12878:3:66","nodeType":"YulLiteral","src":"12878:3:66","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"12870:3:66","nodeType":"YulIdentifier","src":"12870:3:66"},"nativeSrc":"12870:12:66","nodeType":"YulFunctionCall","src":"12870:12:66"},"nativeSrc":"12867:32:66","nodeType":"YulIf","src":"12867:32:66"},{"nativeSrc":"12908:37:66","nodeType":"YulVariableDeclaration","src":"12908:37:66","value":{"arguments":[{"name":"headStart","nativeSrc":"12935:9:66","nodeType":"YulIdentifier","src":"12935:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"12922:12:66","nodeType":"YulIdentifier","src":"12922:12:66"},"nativeSrc":"12922:23:66","nodeType":"YulFunctionCall","src":"12922:23:66"},"variables":[{"name":"offset","nativeSrc":"12912:6:66","nodeType":"YulTypedName","src":"12912:6:66","type":""}]},{"body":{"nativeSrc":"12988:16:66","nodeType":"YulBlock","src":"12988:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12997:1:66","nodeType":"YulLiteral","src":"12997:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"13000:1:66","nodeType":"YulLiteral","src":"13000:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12990:6:66","nodeType":"YulIdentifier","src":"12990:6:66"},"nativeSrc":"12990:12:66","nodeType":"YulFunctionCall","src":"12990:12:66"},"nativeSrc":"12990:12:66","nodeType":"YulExpressionStatement","src":"12990:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"12960:6:66","nodeType":"YulIdentifier","src":"12960:6:66"},{"kind":"number","nativeSrc":"12968:18:66","nodeType":"YulLiteral","src":"12968:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"12957:2:66","nodeType":"YulIdentifier","src":"12957:2:66"},"nativeSrc":"12957:30:66","nodeType":"YulFunctionCall","src":"12957:30:66"},"nativeSrc":"12954:50:66","nodeType":"YulIf","src":"12954:50:66"},{"nativeSrc":"13013:79:66","nodeType":"YulAssignment","src":"13013:79:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13064:9:66","nodeType":"YulIdentifier","src":"13064:9:66"},{"name":"offset","nativeSrc":"13075:6:66","nodeType":"YulIdentifier","src":"13075:6:66"}],"functionName":{"name":"add","nativeSrc":"13060:3:66","nodeType":"YulIdentifier","src":"13060:3:66"},"nativeSrc":"13060:22:66","nodeType":"YulFunctionCall","src":"13060:22:66"},{"name":"dataEnd","nativeSrc":"13084:7:66","nodeType":"YulIdentifier","src":"13084:7:66"}],"functionName":{"name":"abi_decode_struct_SendParam_calldata","nativeSrc":"13023:36:66","nodeType":"YulIdentifier","src":"13023:36:66"},"nativeSrc":"13023:69:66","nodeType":"YulFunctionCall","src":"13023:69:66"},"variableNames":[{"name":"value0","nativeSrc":"13013:6:66","nodeType":"YulIdentifier","src":"13013:6:66"}]},{"body":{"nativeSrc":"13130:16:66","nodeType":"YulBlock","src":"13130:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13139:1:66","nodeType":"YulLiteral","src":"13139:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"13142:1:66","nodeType":"YulLiteral","src":"13142:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13132:6:66","nodeType":"YulIdentifier","src":"13132:6:66"},"nativeSrc":"13132:12:66","nodeType":"YulFunctionCall","src":"13132:12:66"},"nativeSrc":"13132:12:66","nodeType":"YulExpressionStatement","src":"13132:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"13112:2:66","nodeType":"YulIdentifier","src":"13112:2:66"},{"arguments":[{"kind":"number","nativeSrc":"13120:2:66","nodeType":"YulLiteral","src":"13120:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"13116:3:66","nodeType":"YulIdentifier","src":"13116:3:66"},"nativeSrc":"13116:7:66","nodeType":"YulFunctionCall","src":"13116:7:66"}],"functionName":{"name":"add","nativeSrc":"13108:3:66","nodeType":"YulIdentifier","src":"13108:3:66"},"nativeSrc":"13108:16:66","nodeType":"YulFunctionCall","src":"13108:16:66"},{"kind":"number","nativeSrc":"13126:2:66","nodeType":"YulLiteral","src":"13126:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"13104:3:66","nodeType":"YulIdentifier","src":"13104:3:66"},"nativeSrc":"13104:25:66","nodeType":"YulFunctionCall","src":"13104:25:66"},"nativeSrc":"13101:45:66","nodeType":"YulIf","src":"13101:45:66"},{"nativeSrc":"13155:28:66","nodeType":"YulAssignment","src":"13155:28:66","value":{"arguments":[{"name":"headStart","nativeSrc":"13169:9:66","nodeType":"YulIdentifier","src":"13169:9:66"},{"kind":"number","nativeSrc":"13180:2:66","nodeType":"YulLiteral","src":"13180:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13165:3:66","nodeType":"YulIdentifier","src":"13165:3:66"},"nativeSrc":"13165:18:66","nodeType":"YulFunctionCall","src":"13165:18:66"},"variableNames":[{"name":"value1","nativeSrc":"13155:6:66","nodeType":"YulIdentifier","src":"13155:6:66"}]},{"nativeSrc":"13192:45:66","nodeType":"YulVariableDeclaration","src":"13192:45:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13222:9:66","nodeType":"YulIdentifier","src":"13222:9:66"},{"kind":"number","nativeSrc":"13233:2:66","nodeType":"YulLiteral","src":"13233:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"13218:3:66","nodeType":"YulIdentifier","src":"13218:3:66"},"nativeSrc":"13218:18:66","nodeType":"YulFunctionCall","src":"13218:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"13205:12:66","nodeType":"YulIdentifier","src":"13205:12:66"},"nativeSrc":"13205:32:66","nodeType":"YulFunctionCall","src":"13205:32:66"},"variables":[{"name":"value","nativeSrc":"13196:5:66","nodeType":"YulTypedName","src":"13196:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"13271:5:66","nodeType":"YulIdentifier","src":"13271:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"13246:24:66","nodeType":"YulIdentifier","src":"13246:24:66"},"nativeSrc":"13246:31:66","nodeType":"YulFunctionCall","src":"13246:31:66"},"nativeSrc":"13246:31:66","nodeType":"YulExpressionStatement","src":"13246:31:66"},{"nativeSrc":"13286:15:66","nodeType":"YulAssignment","src":"13286:15:66","value":{"name":"value","nativeSrc":"13296:5:66","nodeType":"YulIdentifier","src":"13296:5:66"},"variableNames":[{"name":"value2","nativeSrc":"13286:6:66","nodeType":"YulIdentifier","src":"13286:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_struct$_MessagingFee_$33_calldata_ptrt_address","nativeSrc":"12652:655:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12765:9:66","nodeType":"YulTypedName","src":"12765:9:66","type":""},{"name":"dataEnd","nativeSrc":"12776:7:66","nodeType":"YulTypedName","src":"12776:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"12788:6:66","nodeType":"YulTypedName","src":"12788:6:66","type":""},{"name":"value1","nativeSrc":"12796:6:66","nodeType":"YulTypedName","src":"12796:6:66","type":""},{"name":"value2","nativeSrc":"12804:6:66","nodeType":"YulTypedName","src":"12804:6:66","type":""}],"src":"12652:655:66"},{"body":{"nativeSrc":"13561:360:66","nodeType":"YulBlock","src":"13561:360:66","statements":[{"nativeSrc":"13571:27:66","nodeType":"YulAssignment","src":"13571:27:66","value":{"arguments":[{"name":"headStart","nativeSrc":"13583:9:66","nodeType":"YulIdentifier","src":"13583:9:66"},{"kind":"number","nativeSrc":"13594:3:66","nodeType":"YulLiteral","src":"13594:3:66","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"13579:3:66","nodeType":"YulIdentifier","src":"13579:3:66"},"nativeSrc":"13579:19:66","nodeType":"YulFunctionCall","src":"13579:19:66"},"variableNames":[{"name":"tail","nativeSrc":"13571:4:66","nodeType":"YulIdentifier","src":"13571:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13614:9:66","nodeType":"YulIdentifier","src":"13614:9:66"},{"arguments":[{"name":"value0","nativeSrc":"13631:6:66","nodeType":"YulIdentifier","src":"13631:6:66"}],"functionName":{"name":"mload","nativeSrc":"13625:5:66","nodeType":"YulIdentifier","src":"13625:5:66"},"nativeSrc":"13625:13:66","nodeType":"YulFunctionCall","src":"13625:13:66"}],"functionName":{"name":"mstore","nativeSrc":"13607:6:66","nodeType":"YulIdentifier","src":"13607:6:66"},"nativeSrc":"13607:32:66","nodeType":"YulFunctionCall","src":"13607:32:66"},"nativeSrc":"13607:32:66","nodeType":"YulExpressionStatement","src":"13607:32:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13659:9:66","nodeType":"YulIdentifier","src":"13659:9:66"},{"kind":"number","nativeSrc":"13670:4:66","nodeType":"YulLiteral","src":"13670:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13655:3:66","nodeType":"YulIdentifier","src":"13655:3:66"},"nativeSrc":"13655:20:66","nodeType":"YulFunctionCall","src":"13655:20:66"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"13691:6:66","nodeType":"YulIdentifier","src":"13691:6:66"},{"kind":"number","nativeSrc":"13699:4:66","nodeType":"YulLiteral","src":"13699:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"13687:3:66","nodeType":"YulIdentifier","src":"13687:3:66"},"nativeSrc":"13687:17:66","nodeType":"YulFunctionCall","src":"13687:17:66"}],"functionName":{"name":"mload","nativeSrc":"13681:5:66","nodeType":"YulIdentifier","src":"13681:5:66"},"nativeSrc":"13681:24:66","nodeType":"YulFunctionCall","src":"13681:24:66"},{"kind":"number","nativeSrc":"13707:18:66","nodeType":"YulLiteral","src":"13707:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"13677:3:66","nodeType":"YulIdentifier","src":"13677:3:66"},"nativeSrc":"13677:49:66","nodeType":"YulFunctionCall","src":"13677:49:66"}],"functionName":{"name":"mstore","nativeSrc":"13648:6:66","nodeType":"YulIdentifier","src":"13648:6:66"},"nativeSrc":"13648:79:66","nodeType":"YulFunctionCall","src":"13648:79:66"},"nativeSrc":"13648:79:66","nodeType":"YulExpressionStatement","src":"13648:79:66"},{"nativeSrc":"13736:44:66","nodeType":"YulVariableDeclaration","src":"13736:44:66","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"13766:6:66","nodeType":"YulIdentifier","src":"13766:6:66"},{"kind":"number","nativeSrc":"13774:4:66","nodeType":"YulLiteral","src":"13774:4:66","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"13762:3:66","nodeType":"YulIdentifier","src":"13762:3:66"},"nativeSrc":"13762:17:66","nodeType":"YulFunctionCall","src":"13762:17:66"}],"functionName":{"name":"mload","nativeSrc":"13756:5:66","nodeType":"YulIdentifier","src":"13756:5:66"},"nativeSrc":"13756:24:66","nodeType":"YulFunctionCall","src":"13756:24:66"},"variables":[{"name":"memberValue0","nativeSrc":"13740:12:66","nodeType":"YulTypedName","src":"13740:12:66","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nativeSrc":"13816:12:66","nodeType":"YulIdentifier","src":"13816:12:66"},{"arguments":[{"name":"headStart","nativeSrc":"13834:9:66","nodeType":"YulIdentifier","src":"13834:9:66"},{"kind":"number","nativeSrc":"13845:4:66","nodeType":"YulLiteral","src":"13845:4:66","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"13830:3:66","nodeType":"YulIdentifier","src":"13830:3:66"},"nativeSrc":"13830:20:66","nodeType":"YulFunctionCall","src":"13830:20:66"}],"functionName":{"name":"abi_encode_struct_OFTLimit","nativeSrc":"13789:26:66","nodeType":"YulIdentifier","src":"13789:26:66"},"nativeSrc":"13789:62:66","nodeType":"YulFunctionCall","src":"13789:62:66"},"nativeSrc":"13789:62:66","nodeType":"YulExpressionStatement","src":"13789:62:66"},{"expression":{"arguments":[{"name":"value1","nativeSrc":"13887:6:66","nodeType":"YulIdentifier","src":"13887:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"13899:9:66","nodeType":"YulIdentifier","src":"13899:9:66"},{"kind":"number","nativeSrc":"13910:3:66","nodeType":"YulLiteral","src":"13910:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"13895:3:66","nodeType":"YulIdentifier","src":"13895:3:66"},"nativeSrc":"13895:19:66","nodeType":"YulFunctionCall","src":"13895:19:66"}],"functionName":{"name":"abi_encode_struct_OFTLimit","nativeSrc":"13860:26:66","nodeType":"YulIdentifier","src":"13860:26:66"},"nativeSrc":"13860:55:66","nodeType":"YulFunctionCall","src":"13860:55:66"},"nativeSrc":"13860:55:66","nodeType":"YulExpressionStatement","src":"13860:55:66"}]},"name":"abi_encode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed","nativeSrc":"13312:609:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13522:9:66","nodeType":"YulTypedName","src":"13522:9:66","type":""},{"name":"value1","nativeSrc":"13533:6:66","nodeType":"YulTypedName","src":"13533:6:66","type":""},{"name":"value0","nativeSrc":"13541:6:66","nodeType":"YulTypedName","src":"13541:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13552:4:66","nodeType":"YulTypedName","src":"13552:4:66","type":""}],"src":"13312:609:66"},{"body":{"nativeSrc":"14013:301:66","nodeType":"YulBlock","src":"14013:301:66","statements":[{"body":{"nativeSrc":"14059:16:66","nodeType":"YulBlock","src":"14059:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14068:1:66","nodeType":"YulLiteral","src":"14068:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"14071:1:66","nodeType":"YulLiteral","src":"14071:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14061:6:66","nodeType":"YulIdentifier","src":"14061:6:66"},"nativeSrc":"14061:12:66","nodeType":"YulFunctionCall","src":"14061:12:66"},"nativeSrc":"14061:12:66","nodeType":"YulExpressionStatement","src":"14061:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14034:7:66","nodeType":"YulIdentifier","src":"14034:7:66"},{"name":"headStart","nativeSrc":"14043:9:66","nodeType":"YulIdentifier","src":"14043:9:66"}],"functionName":{"name":"sub","nativeSrc":"14030:3:66","nodeType":"YulIdentifier","src":"14030:3:66"},"nativeSrc":"14030:23:66","nodeType":"YulFunctionCall","src":"14030:23:66"},{"kind":"number","nativeSrc":"14055:2:66","nodeType":"YulLiteral","src":"14055:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"14026:3:66","nodeType":"YulIdentifier","src":"14026:3:66"},"nativeSrc":"14026:32:66","nodeType":"YulFunctionCall","src":"14026:32:66"},"nativeSrc":"14023:52:66","nodeType":"YulIf","src":"14023:52:66"},{"nativeSrc":"14084:36:66","nodeType":"YulVariableDeclaration","src":"14084:36:66","value":{"arguments":[{"name":"headStart","nativeSrc":"14110:9:66","nodeType":"YulIdentifier","src":"14110:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"14097:12:66","nodeType":"YulIdentifier","src":"14097:12:66"},"nativeSrc":"14097:23:66","nodeType":"YulFunctionCall","src":"14097:23:66"},"variables":[{"name":"value","nativeSrc":"14088:5:66","nodeType":"YulTypedName","src":"14088:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"14154:5:66","nodeType":"YulIdentifier","src":"14154:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"14129:24:66","nodeType":"YulIdentifier","src":"14129:24:66"},"nativeSrc":"14129:31:66","nodeType":"YulFunctionCall","src":"14129:31:66"},"nativeSrc":"14129:31:66","nodeType":"YulExpressionStatement","src":"14129:31:66"},{"nativeSrc":"14169:15:66","nodeType":"YulAssignment","src":"14169:15:66","value":{"name":"value","nativeSrc":"14179:5:66","nodeType":"YulIdentifier","src":"14179:5:66"},"variableNames":[{"name":"value0","nativeSrc":"14169:6:66","nodeType":"YulIdentifier","src":"14169:6:66"}]},{"nativeSrc":"14193:47:66","nodeType":"YulVariableDeclaration","src":"14193:47:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14225:9:66","nodeType":"YulIdentifier","src":"14225:9:66"},{"kind":"number","nativeSrc":"14236:2:66","nodeType":"YulLiteral","src":"14236:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14221:3:66","nodeType":"YulIdentifier","src":"14221:3:66"},"nativeSrc":"14221:18:66","nodeType":"YulFunctionCall","src":"14221:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"14208:12:66","nodeType":"YulIdentifier","src":"14208:12:66"},"nativeSrc":"14208:32:66","nodeType":"YulFunctionCall","src":"14208:32:66"},"variables":[{"name":"value_1","nativeSrc":"14197:7:66","nodeType":"YulTypedName","src":"14197:7:66","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"14274:7:66","nodeType":"YulIdentifier","src":"14274:7:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"14249:24:66","nodeType":"YulIdentifier","src":"14249:24:66"},"nativeSrc":"14249:33:66","nodeType":"YulFunctionCall","src":"14249:33:66"},"nativeSrc":"14249:33:66","nodeType":"YulExpressionStatement","src":"14249:33:66"},{"nativeSrc":"14291:17:66","nodeType":"YulAssignment","src":"14291:17:66","value":{"name":"value_1","nativeSrc":"14301:7:66","nodeType":"YulIdentifier","src":"14301:7:66"},"variableNames":[{"name":"value1","nativeSrc":"14291:6:66","nodeType":"YulIdentifier","src":"14291:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"13926:388:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13971:9:66","nodeType":"YulTypedName","src":"13971:9:66","type":""},{"name":"dataEnd","nativeSrc":"13982:7:66","nodeType":"YulTypedName","src":"13982:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13994:6:66","nodeType":"YulTypedName","src":"13994:6:66","type":""},{"name":"value1","nativeSrc":"14002:6:66","nodeType":"YulTypedName","src":"14002:6:66","type":""}],"src":"13926:388:66"},{"body":{"nativeSrc":"14413:140:66","nodeType":"YulBlock","src":"14413:140:66","statements":[{"body":{"nativeSrc":"14459:16:66","nodeType":"YulBlock","src":"14459:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14468:1:66","nodeType":"YulLiteral","src":"14468:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"14471:1:66","nodeType":"YulLiteral","src":"14471:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14461:6:66","nodeType":"YulIdentifier","src":"14461:6:66"},"nativeSrc":"14461:12:66","nodeType":"YulFunctionCall","src":"14461:12:66"},"nativeSrc":"14461:12:66","nodeType":"YulExpressionStatement","src":"14461:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14434:7:66","nodeType":"YulIdentifier","src":"14434:7:66"},{"name":"headStart","nativeSrc":"14443:9:66","nodeType":"YulIdentifier","src":"14443:9:66"}],"functionName":{"name":"sub","nativeSrc":"14430:3:66","nodeType":"YulIdentifier","src":"14430:3:66"},"nativeSrc":"14430:23:66","nodeType":"YulFunctionCall","src":"14430:23:66"},{"kind":"number","nativeSrc":"14455:2:66","nodeType":"YulLiteral","src":"14455:2:66","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"14426:3:66","nodeType":"YulIdentifier","src":"14426:3:66"},"nativeSrc":"14426:32:66","nodeType":"YulFunctionCall","src":"14426:32:66"},"nativeSrc":"14423:52:66","nodeType":"YulIf","src":"14423:52:66"},{"nativeSrc":"14484:63:66","nodeType":"YulAssignment","src":"14484:63:66","value":{"arguments":[{"name":"headStart","nativeSrc":"14528:9:66","nodeType":"YulIdentifier","src":"14528:9:66"},{"name":"dataEnd","nativeSrc":"14539:7:66","nodeType":"YulIdentifier","src":"14539:7:66"}],"functionName":{"name":"abi_decode_struct_Origin_calldata","nativeSrc":"14494:33:66","nodeType":"YulIdentifier","src":"14494:33:66"},"nativeSrc":"14494:53:66","nodeType":"YulFunctionCall","src":"14494:53:66"},"variableNames":[{"name":"value0","nativeSrc":"14484:6:66","nodeType":"YulIdentifier","src":"14484:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_Origin_$40_calldata_ptr","nativeSrc":"14319:234:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14379:9:66","nodeType":"YulTypedName","src":"14379:9:66","type":""},{"name":"dataEnd","nativeSrc":"14390:7:66","nodeType":"YulTypedName","src":"14390:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"14402:6:66","nodeType":"YulTypedName","src":"14402:6:66","type":""}],"src":"14319:234:66"},{"body":{"nativeSrc":"14613:325:66","nodeType":"YulBlock","src":"14613:325:66","statements":[{"nativeSrc":"14623:22:66","nodeType":"YulAssignment","src":"14623:22:66","value":{"arguments":[{"kind":"number","nativeSrc":"14637:1:66","nodeType":"YulLiteral","src":"14637:1:66","type":"","value":"1"},{"name":"data","nativeSrc":"14640:4:66","nodeType":"YulIdentifier","src":"14640:4:66"}],"functionName":{"name":"shr","nativeSrc":"14633:3:66","nodeType":"YulIdentifier","src":"14633:3:66"},"nativeSrc":"14633:12:66","nodeType":"YulFunctionCall","src":"14633:12:66"},"variableNames":[{"name":"length","nativeSrc":"14623:6:66","nodeType":"YulIdentifier","src":"14623:6:66"}]},{"nativeSrc":"14654:38:66","nodeType":"YulVariableDeclaration","src":"14654:38:66","value":{"arguments":[{"name":"data","nativeSrc":"14684:4:66","nodeType":"YulIdentifier","src":"14684:4:66"},{"kind":"number","nativeSrc":"14690:1:66","nodeType":"YulLiteral","src":"14690:1:66","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"14680:3:66","nodeType":"YulIdentifier","src":"14680:3:66"},"nativeSrc":"14680:12:66","nodeType":"YulFunctionCall","src":"14680:12:66"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"14658:18:66","nodeType":"YulTypedName","src":"14658:18:66","type":""}]},{"body":{"nativeSrc":"14731:31:66","nodeType":"YulBlock","src":"14731:31:66","statements":[{"nativeSrc":"14733:27:66","nodeType":"YulAssignment","src":"14733:27:66","value":{"arguments":[{"name":"length","nativeSrc":"14747:6:66","nodeType":"YulIdentifier","src":"14747:6:66"},{"kind":"number","nativeSrc":"14755:4:66","nodeType":"YulLiteral","src":"14755:4:66","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"14743:3:66","nodeType":"YulIdentifier","src":"14743:3:66"},"nativeSrc":"14743:17:66","nodeType":"YulFunctionCall","src":"14743:17:66"},"variableNames":[{"name":"length","nativeSrc":"14733:6:66","nodeType":"YulIdentifier","src":"14733:6:66"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"14711:18:66","nodeType":"YulIdentifier","src":"14711:18:66"}],"functionName":{"name":"iszero","nativeSrc":"14704:6:66","nodeType":"YulIdentifier","src":"14704:6:66"},"nativeSrc":"14704:26:66","nodeType":"YulFunctionCall","src":"14704:26:66"},"nativeSrc":"14701:61:66","nodeType":"YulIf","src":"14701:61:66"},{"body":{"nativeSrc":"14821:111:66","nodeType":"YulBlock","src":"14821:111:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14842:1:66","nodeType":"YulLiteral","src":"14842:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"14849:3:66","nodeType":"YulLiteral","src":"14849:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"14854:10:66","nodeType":"YulLiteral","src":"14854:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"14845:3:66","nodeType":"YulIdentifier","src":"14845:3:66"},"nativeSrc":"14845:20:66","nodeType":"YulFunctionCall","src":"14845:20:66"}],"functionName":{"name":"mstore","nativeSrc":"14835:6:66","nodeType":"YulIdentifier","src":"14835:6:66"},"nativeSrc":"14835:31:66","nodeType":"YulFunctionCall","src":"14835:31:66"},"nativeSrc":"14835:31:66","nodeType":"YulExpressionStatement","src":"14835:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14886:1:66","nodeType":"YulLiteral","src":"14886:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"14889:4:66","nodeType":"YulLiteral","src":"14889:4:66","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"14879:6:66","nodeType":"YulIdentifier","src":"14879:6:66"},"nativeSrc":"14879:15:66","nodeType":"YulFunctionCall","src":"14879:15:66"},"nativeSrc":"14879:15:66","nodeType":"YulExpressionStatement","src":"14879:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14914:1:66","nodeType":"YulLiteral","src":"14914:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"14917:4:66","nodeType":"YulLiteral","src":"14917:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"14907:6:66","nodeType":"YulIdentifier","src":"14907:6:66"},"nativeSrc":"14907:15:66","nodeType":"YulFunctionCall","src":"14907:15:66"},"nativeSrc":"14907:15:66","nodeType":"YulExpressionStatement","src":"14907:15:66"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"14777:18:66","nodeType":"YulIdentifier","src":"14777:18:66"},{"arguments":[{"name":"length","nativeSrc":"14800:6:66","nodeType":"YulIdentifier","src":"14800:6:66"},{"kind":"number","nativeSrc":"14808:2:66","nodeType":"YulLiteral","src":"14808:2:66","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"14797:2:66","nodeType":"YulIdentifier","src":"14797:2:66"},"nativeSrc":"14797:14:66","nodeType":"YulFunctionCall","src":"14797:14:66"}],"functionName":{"name":"eq","nativeSrc":"14774:2:66","nodeType":"YulIdentifier","src":"14774:2:66"},"nativeSrc":"14774:38:66","nodeType":"YulFunctionCall","src":"14774:38:66"},"nativeSrc":"14771:161:66","nodeType":"YulIf","src":"14771:161:66"}]},"name":"extract_byte_array_length","nativeSrc":"14558:380:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"14593:4:66","nodeType":"YulTypedName","src":"14593:4:66","type":""}],"returnVariables":[{"name":"length","nativeSrc":"14602:6:66","nodeType":"YulTypedName","src":"14602:6:66","type":""}],"src":"14558:380:66"},{"body":{"nativeSrc":"15024:170:66","nodeType":"YulBlock","src":"15024:170:66","statements":[{"body":{"nativeSrc":"15070:16:66","nodeType":"YulBlock","src":"15070:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15079:1:66","nodeType":"YulLiteral","src":"15079:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"15082:1:66","nodeType":"YulLiteral","src":"15082:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15072:6:66","nodeType":"YulIdentifier","src":"15072:6:66"},"nativeSrc":"15072:12:66","nodeType":"YulFunctionCall","src":"15072:12:66"},"nativeSrc":"15072:12:66","nodeType":"YulExpressionStatement","src":"15072:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"15045:7:66","nodeType":"YulIdentifier","src":"15045:7:66"},{"name":"headStart","nativeSrc":"15054:9:66","nodeType":"YulIdentifier","src":"15054:9:66"}],"functionName":{"name":"sub","nativeSrc":"15041:3:66","nodeType":"YulIdentifier","src":"15041:3:66"},"nativeSrc":"15041:23:66","nodeType":"YulFunctionCall","src":"15041:23:66"},{"kind":"number","nativeSrc":"15066:2:66","nodeType":"YulLiteral","src":"15066:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"15037:3:66","nodeType":"YulIdentifier","src":"15037:3:66"},"nativeSrc":"15037:32:66","nodeType":"YulFunctionCall","src":"15037:32:66"},"nativeSrc":"15034:52:66","nodeType":"YulIf","src":"15034:52:66"},{"nativeSrc":"15095:29:66","nodeType":"YulVariableDeclaration","src":"15095:29:66","value":{"arguments":[{"name":"headStart","nativeSrc":"15114:9:66","nodeType":"YulIdentifier","src":"15114:9:66"}],"functionName":{"name":"mload","nativeSrc":"15108:5:66","nodeType":"YulIdentifier","src":"15108:5:66"},"nativeSrc":"15108:16:66","nodeType":"YulFunctionCall","src":"15108:16:66"},"variables":[{"name":"value","nativeSrc":"15099:5:66","nodeType":"YulTypedName","src":"15099:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"15158:5:66","nodeType":"YulIdentifier","src":"15158:5:66"}],"functionName":{"name":"validator_revert_address","nativeSrc":"15133:24:66","nodeType":"YulIdentifier","src":"15133:24:66"},"nativeSrc":"15133:31:66","nodeType":"YulFunctionCall","src":"15133:31:66"},"nativeSrc":"15133:31:66","nodeType":"YulExpressionStatement","src":"15133:31:66"},{"nativeSrc":"15173:15:66","nodeType":"YulAssignment","src":"15173:15:66","value":{"name":"value","nativeSrc":"15183:5:66","nodeType":"YulIdentifier","src":"15183:5:66"},"variableNames":[{"name":"value0","nativeSrc":"15173:6:66","nodeType":"YulIdentifier","src":"15173:6:66"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"14943:251:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14990:9:66","nodeType":"YulTypedName","src":"14990:9:66","type":""},{"name":"dataEnd","nativeSrc":"15001:7:66","nodeType":"YulTypedName","src":"15001:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"15013:6:66","nodeType":"YulTypedName","src":"15013:6:66","type":""}],"src":"14943:251:66"},{"body":{"nativeSrc":"15280:149:66","nodeType":"YulBlock","src":"15280:149:66","statements":[{"body":{"nativeSrc":"15326:16:66","nodeType":"YulBlock","src":"15326:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15335:1:66","nodeType":"YulLiteral","src":"15335:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"15338:1:66","nodeType":"YulLiteral","src":"15338:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"15328:6:66","nodeType":"YulIdentifier","src":"15328:6:66"},"nativeSrc":"15328:12:66","nodeType":"YulFunctionCall","src":"15328:12:66"},"nativeSrc":"15328:12:66","nodeType":"YulExpressionStatement","src":"15328:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"15301:7:66","nodeType":"YulIdentifier","src":"15301:7:66"},{"name":"headStart","nativeSrc":"15310:9:66","nodeType":"YulIdentifier","src":"15310:9:66"}],"functionName":{"name":"sub","nativeSrc":"15297:3:66","nodeType":"YulIdentifier","src":"15297:3:66"},"nativeSrc":"15297:23:66","nodeType":"YulFunctionCall","src":"15297:23:66"},{"kind":"number","nativeSrc":"15322:2:66","nodeType":"YulLiteral","src":"15322:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"15293:3:66","nodeType":"YulIdentifier","src":"15293:3:66"},"nativeSrc":"15293:32:66","nodeType":"YulFunctionCall","src":"15293:32:66"},"nativeSrc":"15290:52:66","nodeType":"YulIf","src":"15290:52:66"},{"nativeSrc":"15351:14:66","nodeType":"YulVariableDeclaration","src":"15351:14:66","value":{"kind":"number","nativeSrc":"15364:1:66","nodeType":"YulLiteral","src":"15364:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"15355:5:66","nodeType":"YulTypedName","src":"15355:5:66","type":""}]},{"nativeSrc":"15374:25:66","nodeType":"YulAssignment","src":"15374:25:66","value":{"arguments":[{"name":"headStart","nativeSrc":"15389:9:66","nodeType":"YulIdentifier","src":"15389:9:66"}],"functionName":{"name":"mload","nativeSrc":"15383:5:66","nodeType":"YulIdentifier","src":"15383:5:66"},"nativeSrc":"15383:16:66","nodeType":"YulFunctionCall","src":"15383:16:66"},"variableNames":[{"name":"value","nativeSrc":"15374:5:66","nodeType":"YulIdentifier","src":"15374:5:66"}]},{"nativeSrc":"15408:15:66","nodeType":"YulAssignment","src":"15408:15:66","value":{"name":"value","nativeSrc":"15418:5:66","nodeType":"YulIdentifier","src":"15418:5:66"},"variableNames":[{"name":"value0","nativeSrc":"15408:6:66","nodeType":"YulIdentifier","src":"15408:6:66"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"15199:230:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15246:9:66","nodeType":"YulTypedName","src":"15246:9:66","type":""},{"name":"dataEnd","nativeSrc":"15257:7:66","nodeType":"YulTypedName","src":"15257:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"15269:6:66","nodeType":"YulTypedName","src":"15269:6:66","type":""}],"src":"15199:230:66"},{"body":{"nativeSrc":"15466:95:66","nodeType":"YulBlock","src":"15466:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15483:1:66","nodeType":"YulLiteral","src":"15483:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15490:3:66","nodeType":"YulLiteral","src":"15490:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"15495:10:66","nodeType":"YulLiteral","src":"15495:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15486:3:66","nodeType":"YulIdentifier","src":"15486:3:66"},"nativeSrc":"15486:20:66","nodeType":"YulFunctionCall","src":"15486:20:66"}],"functionName":{"name":"mstore","nativeSrc":"15476:6:66","nodeType":"YulIdentifier","src":"15476:6:66"},"nativeSrc":"15476:31:66","nodeType":"YulFunctionCall","src":"15476:31:66"},"nativeSrc":"15476:31:66","nodeType":"YulExpressionStatement","src":"15476:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15523:1:66","nodeType":"YulLiteral","src":"15523:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"15526:4:66","nodeType":"YulLiteral","src":"15526:4:66","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"15516:6:66","nodeType":"YulIdentifier","src":"15516:6:66"},"nativeSrc":"15516:15:66","nodeType":"YulFunctionCall","src":"15516:15:66"},"nativeSrc":"15516:15:66","nodeType":"YulExpressionStatement","src":"15516:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15547:1:66","nodeType":"YulLiteral","src":"15547:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"15550:4:66","nodeType":"YulLiteral","src":"15550:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15540:6:66","nodeType":"YulIdentifier","src":"15540:6:66"},"nativeSrc":"15540:15:66","nodeType":"YulFunctionCall","src":"15540:15:66"},"nativeSrc":"15540:15:66","nodeType":"YulExpressionStatement","src":"15540:15:66"}]},"name":"panic_error_0x41","nativeSrc":"15434:127:66","nodeType":"YulFunctionDefinition","src":"15434:127:66"},{"body":{"nativeSrc":"15693:136:66","nodeType":"YulBlock","src":"15693:136:66","statements":[{"nativeSrc":"15703:26:66","nodeType":"YulAssignment","src":"15703:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"15715:9:66","nodeType":"YulIdentifier","src":"15715:9:66"},{"kind":"number","nativeSrc":"15726:2:66","nodeType":"YulLiteral","src":"15726:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"15711:3:66","nodeType":"YulIdentifier","src":"15711:3:66"},"nativeSrc":"15711:18:66","nodeType":"YulFunctionCall","src":"15711:18:66"},"variableNames":[{"name":"tail","nativeSrc":"15703:4:66","nodeType":"YulIdentifier","src":"15703:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"15745:9:66","nodeType":"YulIdentifier","src":"15745:9:66"},{"arguments":[{"name":"value0","nativeSrc":"15760:6:66","nodeType":"YulIdentifier","src":"15760:6:66"},{"kind":"number","nativeSrc":"15768:10:66","nodeType":"YulLiteral","src":"15768:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"15756:3:66","nodeType":"YulIdentifier","src":"15756:3:66"},"nativeSrc":"15756:23:66","nodeType":"YulFunctionCall","src":"15756:23:66"}],"functionName":{"name":"mstore","nativeSrc":"15738:6:66","nodeType":"YulIdentifier","src":"15738:6:66"},"nativeSrc":"15738:42:66","nodeType":"YulFunctionCall","src":"15738:42:66"},"nativeSrc":"15738:42:66","nodeType":"YulExpressionStatement","src":"15738:42:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"15800:9:66","nodeType":"YulIdentifier","src":"15800:9:66"},{"kind":"number","nativeSrc":"15811:2:66","nodeType":"YulLiteral","src":"15811:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"15796:3:66","nodeType":"YulIdentifier","src":"15796:3:66"},"nativeSrc":"15796:18:66","nodeType":"YulFunctionCall","src":"15796:18:66"},{"name":"value1","nativeSrc":"15816:6:66","nodeType":"YulIdentifier","src":"15816:6:66"}],"functionName":{"name":"mstore","nativeSrc":"15789:6:66","nodeType":"YulIdentifier","src":"15789:6:66"},"nativeSrc":"15789:34:66","nodeType":"YulFunctionCall","src":"15789:34:66"},"nativeSrc":"15789:34:66","nodeType":"YulExpressionStatement","src":"15789:34:66"}]},"name":"abi_encode_tuple_t_uint32_t_bytes32__to_t_uint32_t_bytes32__fromStack_reversed","nativeSrc":"15566:263:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15654:9:66","nodeType":"YulTypedName","src":"15654:9:66","type":""},{"name":"value1","nativeSrc":"15665:6:66","nodeType":"YulTypedName","src":"15665:6:66","type":""},{"name":"value0","nativeSrc":"15673:6:66","nodeType":"YulTypedName","src":"15673:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"15684:4:66","nodeType":"YulTypedName","src":"15684:4:66","type":""}],"src":"15566:263:66"},{"body":{"nativeSrc":"15866:95:66","nodeType":"YulBlock","src":"15866:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15883:1:66","nodeType":"YulLiteral","src":"15883:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15890:3:66","nodeType":"YulLiteral","src":"15890:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"15895:10:66","nodeType":"YulLiteral","src":"15895:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15886:3:66","nodeType":"YulIdentifier","src":"15886:3:66"},"nativeSrc":"15886:20:66","nodeType":"YulFunctionCall","src":"15886:20:66"}],"functionName":{"name":"mstore","nativeSrc":"15876:6:66","nodeType":"YulIdentifier","src":"15876:6:66"},"nativeSrc":"15876:31:66","nodeType":"YulFunctionCall","src":"15876:31:66"},"nativeSrc":"15876:31:66","nodeType":"YulExpressionStatement","src":"15876:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15923:1:66","nodeType":"YulLiteral","src":"15923:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"15926:4:66","nodeType":"YulLiteral","src":"15926:4:66","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"15916:6:66","nodeType":"YulIdentifier","src":"15916:6:66"},"nativeSrc":"15916:15:66","nodeType":"YulFunctionCall","src":"15916:15:66"},"nativeSrc":"15916:15:66","nodeType":"YulExpressionStatement","src":"15916:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15947:1:66","nodeType":"YulLiteral","src":"15947:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"15950:4:66","nodeType":"YulLiteral","src":"15950:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15940:6:66","nodeType":"YulIdentifier","src":"15940:6:66"},"nativeSrc":"15940:15:66","nodeType":"YulFunctionCall","src":"15940:15:66"},"nativeSrc":"15940:15:66","nodeType":"YulExpressionStatement","src":"15940:15:66"}]},"name":"panic_error_0x11","nativeSrc":"15834:127:66","nodeType":"YulFunctionDefinition","src":"15834:127:66"},{"body":{"nativeSrc":"16014:77:66","nodeType":"YulBlock","src":"16014:77:66","statements":[{"nativeSrc":"16024:16:66","nodeType":"YulAssignment","src":"16024:16:66","value":{"arguments":[{"name":"x","nativeSrc":"16035:1:66","nodeType":"YulIdentifier","src":"16035:1:66"},{"name":"y","nativeSrc":"16038:1:66","nodeType":"YulIdentifier","src":"16038:1:66"}],"functionName":{"name":"add","nativeSrc":"16031:3:66","nodeType":"YulIdentifier","src":"16031:3:66"},"nativeSrc":"16031:9:66","nodeType":"YulFunctionCall","src":"16031:9:66"},"variableNames":[{"name":"sum","nativeSrc":"16024:3:66","nodeType":"YulIdentifier","src":"16024:3:66"}]},{"body":{"nativeSrc":"16063:22:66","nodeType":"YulBlock","src":"16063:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"16065:16:66","nodeType":"YulIdentifier","src":"16065:16:66"},"nativeSrc":"16065:18:66","nodeType":"YulFunctionCall","src":"16065:18:66"},"nativeSrc":"16065:18:66","nodeType":"YulExpressionStatement","src":"16065:18:66"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"16055:1:66","nodeType":"YulIdentifier","src":"16055:1:66"},{"name":"sum","nativeSrc":"16058:3:66","nodeType":"YulIdentifier","src":"16058:3:66"}],"functionName":{"name":"gt","nativeSrc":"16052:2:66","nodeType":"YulIdentifier","src":"16052:2:66"},"nativeSrc":"16052:10:66","nodeType":"YulFunctionCall","src":"16052:10:66"},"nativeSrc":"16049:36:66","nodeType":"YulIf","src":"16049:36:66"}]},"name":"checked_add_t_uint256","nativeSrc":"15966:125:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"15997:1:66","nodeType":"YulTypedName","src":"15997:1:66","type":""},{"name":"y","nativeSrc":"16000:1:66","nodeType":"YulTypedName","src":"16000:1:66","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"16006:3:66","nodeType":"YulTypedName","src":"16006:3:66","type":""}],"src":"15966:125:66"},{"body":{"nativeSrc":"16142:207:66","nodeType":"YulBlock","src":"16142:207:66","statements":[{"nativeSrc":"16152:19:66","nodeType":"YulAssignment","src":"16152:19:66","value":{"arguments":[{"kind":"number","nativeSrc":"16168:2:66","nodeType":"YulLiteral","src":"16168:2:66","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"16162:5:66","nodeType":"YulIdentifier","src":"16162:5:66"},"nativeSrc":"16162:9:66","nodeType":"YulFunctionCall","src":"16162:9:66"},"variableNames":[{"name":"memPtr","nativeSrc":"16152:6:66","nodeType":"YulIdentifier","src":"16152:6:66"}]},{"nativeSrc":"16180:35:66","nodeType":"YulVariableDeclaration","src":"16180:35:66","value":{"arguments":[{"name":"memPtr","nativeSrc":"16202:6:66","nodeType":"YulIdentifier","src":"16202:6:66"},{"kind":"number","nativeSrc":"16210:4:66","nodeType":"YulLiteral","src":"16210:4:66","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"16198:3:66","nodeType":"YulIdentifier","src":"16198:3:66"},"nativeSrc":"16198:17:66","nodeType":"YulFunctionCall","src":"16198:17:66"},"variables":[{"name":"newFreePtr","nativeSrc":"16184:10:66","nodeType":"YulTypedName","src":"16184:10:66","type":""}]},{"body":{"nativeSrc":"16290:22:66","nodeType":"YulBlock","src":"16290:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"16292:16:66","nodeType":"YulIdentifier","src":"16292:16:66"},"nativeSrc":"16292:18:66","nodeType":"YulFunctionCall","src":"16292:18:66"},"nativeSrc":"16292:18:66","nodeType":"YulExpressionStatement","src":"16292:18:66"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"16233:10:66","nodeType":"YulIdentifier","src":"16233:10:66"},{"kind":"number","nativeSrc":"16245:18:66","nodeType":"YulLiteral","src":"16245:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"16230:2:66","nodeType":"YulIdentifier","src":"16230:2:66"},"nativeSrc":"16230:34:66","nodeType":"YulFunctionCall","src":"16230:34:66"},{"arguments":[{"name":"newFreePtr","nativeSrc":"16269:10:66","nodeType":"YulIdentifier","src":"16269:10:66"},{"name":"memPtr","nativeSrc":"16281:6:66","nodeType":"YulIdentifier","src":"16281:6:66"}],"functionName":{"name":"lt","nativeSrc":"16266:2:66","nodeType":"YulIdentifier","src":"16266:2:66"},"nativeSrc":"16266:22:66","nodeType":"YulFunctionCall","src":"16266:22:66"}],"functionName":{"name":"or","nativeSrc":"16227:2:66","nodeType":"YulIdentifier","src":"16227:2:66"},"nativeSrc":"16227:62:66","nodeType":"YulFunctionCall","src":"16227:62:66"},"nativeSrc":"16224:88:66","nodeType":"YulIf","src":"16224:88:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16328:2:66","nodeType":"YulLiteral","src":"16328:2:66","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"16332:10:66","nodeType":"YulIdentifier","src":"16332:10:66"}],"functionName":{"name":"mstore","nativeSrc":"16321:6:66","nodeType":"YulIdentifier","src":"16321:6:66"},"nativeSrc":"16321:22:66","nodeType":"YulFunctionCall","src":"16321:22:66"},"nativeSrc":"16321:22:66","nodeType":"YulExpressionStatement","src":"16321:22:66"}]},"name":"allocate_memory_3873","nativeSrc":"16096:253:66","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"16131:6:66","nodeType":"YulTypedName","src":"16131:6:66","type":""}],"src":"16096:253:66"},{"body":{"nativeSrc":"16400:211:66","nodeType":"YulBlock","src":"16400:211:66","statements":[{"nativeSrc":"16410:21:66","nodeType":"YulAssignment","src":"16410:21:66","value":{"arguments":[{"kind":"number","nativeSrc":"16426:4:66","nodeType":"YulLiteral","src":"16426:4:66","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"16420:5:66","nodeType":"YulIdentifier","src":"16420:5:66"},"nativeSrc":"16420:11:66","nodeType":"YulFunctionCall","src":"16420:11:66"},"variableNames":[{"name":"memPtr","nativeSrc":"16410:6:66","nodeType":"YulIdentifier","src":"16410:6:66"}]},{"nativeSrc":"16440:35:66","nodeType":"YulVariableDeclaration","src":"16440:35:66","value":{"arguments":[{"name":"memPtr","nativeSrc":"16462:6:66","nodeType":"YulIdentifier","src":"16462:6:66"},{"kind":"number","nativeSrc":"16470:4:66","nodeType":"YulLiteral","src":"16470:4:66","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"16458:3:66","nodeType":"YulIdentifier","src":"16458:3:66"},"nativeSrc":"16458:17:66","nodeType":"YulFunctionCall","src":"16458:17:66"},"variables":[{"name":"newFreePtr","nativeSrc":"16444:10:66","nodeType":"YulTypedName","src":"16444:10:66","type":""}]},{"body":{"nativeSrc":"16550:22:66","nodeType":"YulBlock","src":"16550:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"16552:16:66","nodeType":"YulIdentifier","src":"16552:16:66"},"nativeSrc":"16552:18:66","nodeType":"YulFunctionCall","src":"16552:18:66"},"nativeSrc":"16552:18:66","nodeType":"YulExpressionStatement","src":"16552:18:66"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"16493:10:66","nodeType":"YulIdentifier","src":"16493:10:66"},{"kind":"number","nativeSrc":"16505:18:66","nodeType":"YulLiteral","src":"16505:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"16490:2:66","nodeType":"YulIdentifier","src":"16490:2:66"},"nativeSrc":"16490:34:66","nodeType":"YulFunctionCall","src":"16490:34:66"},{"arguments":[{"name":"newFreePtr","nativeSrc":"16529:10:66","nodeType":"YulIdentifier","src":"16529:10:66"},{"name":"memPtr","nativeSrc":"16541:6:66","nodeType":"YulIdentifier","src":"16541:6:66"}],"functionName":{"name":"lt","nativeSrc":"16526:2:66","nodeType":"YulIdentifier","src":"16526:2:66"},"nativeSrc":"16526:22:66","nodeType":"YulFunctionCall","src":"16526:22:66"}],"functionName":{"name":"or","nativeSrc":"16487:2:66","nodeType":"YulIdentifier","src":"16487:2:66"},"nativeSrc":"16487:62:66","nodeType":"YulFunctionCall","src":"16487:62:66"},"nativeSrc":"16484:88:66","nodeType":"YulIf","src":"16484:88:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16588:4:66","nodeType":"YulLiteral","src":"16588:4:66","type":"","value":"0x40"},{"name":"newFreePtr","nativeSrc":"16594:10:66","nodeType":"YulIdentifier","src":"16594:10:66"}],"functionName":{"name":"mstore","nativeSrc":"16581:6:66","nodeType":"YulIdentifier","src":"16581:6:66"},"nativeSrc":"16581:24:66","nodeType":"YulFunctionCall","src":"16581:24:66"},"nativeSrc":"16581:24:66","nodeType":"YulExpressionStatement","src":"16581:24:66"}]},"name":"allocate_memory_3874","nativeSrc":"16354:257:66","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nativeSrc":"16389:6:66","nodeType":"YulTypedName","src":"16389:6:66","type":""}],"src":"16354:257:66"},{"body":{"nativeSrc":"16661:230:66","nodeType":"YulBlock","src":"16661:230:66","statements":[{"nativeSrc":"16671:19:66","nodeType":"YulAssignment","src":"16671:19:66","value":{"arguments":[{"kind":"number","nativeSrc":"16687:2:66","nodeType":"YulLiteral","src":"16687:2:66","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"16681:5:66","nodeType":"YulIdentifier","src":"16681:5:66"},"nativeSrc":"16681:9:66","nodeType":"YulFunctionCall","src":"16681:9:66"},"variableNames":[{"name":"memPtr","nativeSrc":"16671:6:66","nodeType":"YulIdentifier","src":"16671:6:66"}]},{"nativeSrc":"16699:58:66","nodeType":"YulVariableDeclaration","src":"16699:58:66","value":{"arguments":[{"name":"memPtr","nativeSrc":"16721:6:66","nodeType":"YulIdentifier","src":"16721:6:66"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"16737:4:66","nodeType":"YulIdentifier","src":"16737:4:66"},{"kind":"number","nativeSrc":"16743:2:66","nodeType":"YulLiteral","src":"16743:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"16733:3:66","nodeType":"YulIdentifier","src":"16733:3:66"},"nativeSrc":"16733:13:66","nodeType":"YulFunctionCall","src":"16733:13:66"},{"arguments":[{"kind":"number","nativeSrc":"16752:2:66","nodeType":"YulLiteral","src":"16752:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"16748:3:66","nodeType":"YulIdentifier","src":"16748:3:66"},"nativeSrc":"16748:7:66","nodeType":"YulFunctionCall","src":"16748:7:66"}],"functionName":{"name":"and","nativeSrc":"16729:3:66","nodeType":"YulIdentifier","src":"16729:3:66"},"nativeSrc":"16729:27:66","nodeType":"YulFunctionCall","src":"16729:27:66"}],"functionName":{"name":"add","nativeSrc":"16717:3:66","nodeType":"YulIdentifier","src":"16717:3:66"},"nativeSrc":"16717:40:66","nodeType":"YulFunctionCall","src":"16717:40:66"},"variables":[{"name":"newFreePtr","nativeSrc":"16703:10:66","nodeType":"YulTypedName","src":"16703:10:66","type":""}]},{"body":{"nativeSrc":"16832:22:66","nodeType":"YulBlock","src":"16832:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"16834:16:66","nodeType":"YulIdentifier","src":"16834:16:66"},"nativeSrc":"16834:18:66","nodeType":"YulFunctionCall","src":"16834:18:66"},"nativeSrc":"16834:18:66","nodeType":"YulExpressionStatement","src":"16834:18:66"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"16775:10:66","nodeType":"YulIdentifier","src":"16775:10:66"},{"kind":"number","nativeSrc":"16787:18:66","nodeType":"YulLiteral","src":"16787:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"16772:2:66","nodeType":"YulIdentifier","src":"16772:2:66"},"nativeSrc":"16772:34:66","nodeType":"YulFunctionCall","src":"16772:34:66"},{"arguments":[{"name":"newFreePtr","nativeSrc":"16811:10:66","nodeType":"YulIdentifier","src":"16811:10:66"},{"name":"memPtr","nativeSrc":"16823:6:66","nodeType":"YulIdentifier","src":"16823:6:66"}],"functionName":{"name":"lt","nativeSrc":"16808:2:66","nodeType":"YulIdentifier","src":"16808:2:66"},"nativeSrc":"16808:22:66","nodeType":"YulFunctionCall","src":"16808:22:66"}],"functionName":{"name":"or","nativeSrc":"16769:2:66","nodeType":"YulIdentifier","src":"16769:2:66"},"nativeSrc":"16769:62:66","nodeType":"YulFunctionCall","src":"16769:62:66"},"nativeSrc":"16766:88:66","nodeType":"YulIf","src":"16766:88:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16870:2:66","nodeType":"YulLiteral","src":"16870:2:66","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"16874:10:66","nodeType":"YulIdentifier","src":"16874:10:66"}],"functionName":{"name":"mstore","nativeSrc":"16863:6:66","nodeType":"YulIdentifier","src":"16863:6:66"},"nativeSrc":"16863:22:66","nodeType":"YulFunctionCall","src":"16863:22:66"},"nativeSrc":"16863:22:66","nodeType":"YulExpressionStatement","src":"16863:22:66"}]},"name":"allocate_memory","nativeSrc":"16616:275:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"16641:4:66","nodeType":"YulTypedName","src":"16641:4:66","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"16650:6:66","nodeType":"YulTypedName","src":"16650:6:66","type":""}],"src":"16616:275:66"},{"body":{"nativeSrc":"16953:129:66","nodeType":"YulBlock","src":"16953:129:66","statements":[{"body":{"nativeSrc":"16997:22:66","nodeType":"YulBlock","src":"16997:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"16999:16:66","nodeType":"YulIdentifier","src":"16999:16:66"},"nativeSrc":"16999:18:66","nodeType":"YulFunctionCall","src":"16999:18:66"},"nativeSrc":"16999:18:66","nodeType":"YulExpressionStatement","src":"16999:18:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"16969:6:66","nodeType":"YulIdentifier","src":"16969:6:66"},{"kind":"number","nativeSrc":"16977:18:66","nodeType":"YulLiteral","src":"16977:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"16966:2:66","nodeType":"YulIdentifier","src":"16966:2:66"},"nativeSrc":"16966:30:66","nodeType":"YulFunctionCall","src":"16966:30:66"},"nativeSrc":"16963:56:66","nodeType":"YulIf","src":"16963:56:66"},{"nativeSrc":"17028:48:66","nodeType":"YulAssignment","src":"17028:48:66","value":{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"17048:6:66","nodeType":"YulIdentifier","src":"17048:6:66"},{"kind":"number","nativeSrc":"17056:2:66","nodeType":"YulLiteral","src":"17056:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"17044:3:66","nodeType":"YulIdentifier","src":"17044:3:66"},"nativeSrc":"17044:15:66","nodeType":"YulFunctionCall","src":"17044:15:66"},{"arguments":[{"kind":"number","nativeSrc":"17065:2:66","nodeType":"YulLiteral","src":"17065:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"17061:3:66","nodeType":"YulIdentifier","src":"17061:3:66"},"nativeSrc":"17061:7:66","nodeType":"YulFunctionCall","src":"17061:7:66"}],"functionName":{"name":"and","nativeSrc":"17040:3:66","nodeType":"YulIdentifier","src":"17040:3:66"},"nativeSrc":"17040:29:66","nodeType":"YulFunctionCall","src":"17040:29:66"},{"kind":"number","nativeSrc":"17071:4:66","nodeType":"YulLiteral","src":"17071:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17036:3:66","nodeType":"YulIdentifier","src":"17036:3:66"},"nativeSrc":"17036:40:66","nodeType":"YulFunctionCall","src":"17036:40:66"},"variableNames":[{"name":"size","nativeSrc":"17028:4:66","nodeType":"YulIdentifier","src":"17028:4:66"}]}]},"name":"array_allocation_size_bytes","nativeSrc":"16896:186:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"16933:6:66","nodeType":"YulTypedName","src":"16933:6:66","type":""}],"returnVariables":[{"name":"size","nativeSrc":"16944:4:66","nodeType":"YulTypedName","src":"16944:4:66","type":""}],"src":"16896:186:66"},{"body":{"nativeSrc":"17293:1578:66","nodeType":"YulBlock","src":"17293:1578:66","statements":[{"body":{"nativeSrc":"17337:22:66","nodeType":"YulBlock","src":"17337:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"17339:16:66","nodeType":"YulIdentifier","src":"17339:16:66"},"nativeSrc":"17339:18:66","nodeType":"YulFunctionCall","src":"17339:18:66"},"nativeSrc":"17339:18:66","nodeType":"YulExpressionStatement","src":"17339:18:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"17309:6:66","nodeType":"YulIdentifier","src":"17309:6:66"},{"kind":"number","nativeSrc":"17317:18:66","nodeType":"YulLiteral","src":"17317:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"17306:2:66","nodeType":"YulIdentifier","src":"17306:2:66"},"nativeSrc":"17306:30:66","nodeType":"YulFunctionCall","src":"17306:30:66"},"nativeSrc":"17303:56:66","nodeType":"YulIf","src":"17303:56:66"},{"nativeSrc":"17368:24:66","nodeType":"YulVariableDeclaration","src":"17368:24:66","value":{"arguments":[{"kind":"number","nativeSrc":"17382:1:66","nodeType":"YulLiteral","src":"17382:1:66","type":"","value":"5"},{"name":"length","nativeSrc":"17385:6:66","nodeType":"YulIdentifier","src":"17385:6:66"}],"functionName":{"name":"shl","nativeSrc":"17378:3:66","nodeType":"YulIdentifier","src":"17378:3:66"},"nativeSrc":"17378:14:66","nodeType":"YulFunctionCall","src":"17378:14:66"},"variables":[{"name":"_1","nativeSrc":"17372:2:66","nodeType":"YulTypedName","src":"17372:2:66","type":""}]},{"nativeSrc":"17401:41:66","nodeType":"YulVariableDeclaration","src":"17401:41:66","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"17432:2:66","nodeType":"YulIdentifier","src":"17432:2:66"},{"kind":"number","nativeSrc":"17436:4:66","nodeType":"YulLiteral","src":"17436:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17428:3:66","nodeType":"YulIdentifier","src":"17428:3:66"},"nativeSrc":"17428:13:66","nodeType":"YulFunctionCall","src":"17428:13:66"}],"functionName":{"name":"allocate_memory","nativeSrc":"17412:15:66","nodeType":"YulIdentifier","src":"17412:15:66"},"nativeSrc":"17412:30:66","nodeType":"YulFunctionCall","src":"17412:30:66"},"variables":[{"name":"dst","nativeSrc":"17405:3:66","nodeType":"YulTypedName","src":"17405:3:66","type":""}]},{"nativeSrc":"17451:16:66","nodeType":"YulVariableDeclaration","src":"17451:16:66","value":{"name":"dst","nativeSrc":"17464:3:66","nodeType":"YulIdentifier","src":"17464:3:66"},"variables":[{"name":"array","nativeSrc":"17455:5:66","nodeType":"YulTypedName","src":"17455:5:66","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"17483:3:66","nodeType":"YulIdentifier","src":"17483:3:66"},{"name":"length","nativeSrc":"17488:6:66","nodeType":"YulIdentifier","src":"17488:6:66"}],"functionName":{"name":"mstore","nativeSrc":"17476:6:66","nodeType":"YulIdentifier","src":"17476:6:66"},"nativeSrc":"17476:19:66","nodeType":"YulFunctionCall","src":"17476:19:66"},"nativeSrc":"17476:19:66","nodeType":"YulExpressionStatement","src":"17476:19:66"},{"nativeSrc":"17504:21:66","nodeType":"YulAssignment","src":"17504:21:66","value":{"arguments":[{"name":"dst","nativeSrc":"17515:3:66","nodeType":"YulIdentifier","src":"17515:3:66"},{"kind":"number","nativeSrc":"17520:4:66","nodeType":"YulLiteral","src":"17520:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17511:3:66","nodeType":"YulIdentifier","src":"17511:3:66"},"nativeSrc":"17511:14:66","nodeType":"YulFunctionCall","src":"17511:14:66"},"variableNames":[{"name":"dst","nativeSrc":"17504:3:66","nodeType":"YulIdentifier","src":"17504:3:66"}]},{"nativeSrc":"17534:28:66","nodeType":"YulVariableDeclaration","src":"17534:28:66","value":{"arguments":[{"name":"value","nativeSrc":"17552:5:66","nodeType":"YulIdentifier","src":"17552:5:66"},{"name":"_1","nativeSrc":"17559:2:66","nodeType":"YulIdentifier","src":"17559:2:66"}],"functionName":{"name":"add","nativeSrc":"17548:3:66","nodeType":"YulIdentifier","src":"17548:3:66"},"nativeSrc":"17548:14:66","nodeType":"YulFunctionCall","src":"17548:14:66"},"variables":[{"name":"srcEnd","nativeSrc":"17538:6:66","nodeType":"YulTypedName","src":"17538:6:66","type":""}]},{"body":{"nativeSrc":"17601:16:66","nodeType":"YulBlock","src":"17601:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17610:1:66","nodeType":"YulLiteral","src":"17610:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"17613:1:66","nodeType":"YulLiteral","src":"17613:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"17603:6:66","nodeType":"YulIdentifier","src":"17603:6:66"},"nativeSrc":"17603:12:66","nodeType":"YulFunctionCall","src":"17603:12:66"},"nativeSrc":"17603:12:66","nodeType":"YulExpressionStatement","src":"17603:12:66"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"17577:6:66","nodeType":"YulIdentifier","src":"17577:6:66"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"17585:12:66","nodeType":"YulIdentifier","src":"17585:12:66"},"nativeSrc":"17585:14:66","nodeType":"YulFunctionCall","src":"17585:14:66"}],"functionName":{"name":"gt","nativeSrc":"17574:2:66","nodeType":"YulIdentifier","src":"17574:2:66"},"nativeSrc":"17574:26:66","nodeType":"YulFunctionCall","src":"17574:26:66"},"nativeSrc":"17571:46:66","nodeType":"YulIf","src":"17571:46:66"},{"nativeSrc":"17626:16:66","nodeType":"YulVariableDeclaration","src":"17626:16:66","value":{"name":"value","nativeSrc":"17637:5:66","nodeType":"YulIdentifier","src":"17637:5:66"},"variables":[{"name":"src","nativeSrc":"17630:3:66","nodeType":"YulTypedName","src":"17630:3:66","type":""}]},{"body":{"nativeSrc":"17709:1129:66","nodeType":"YulBlock","src":"17709:1129:66","statements":[{"nativeSrc":"17723:36:66","nodeType":"YulVariableDeclaration","src":"17723:36:66","value":{"arguments":[{"name":"src","nativeSrc":"17755:3:66","nodeType":"YulIdentifier","src":"17755:3:66"}],"functionName":{"name":"calldataload","nativeSrc":"17742:12:66","nodeType":"YulIdentifier","src":"17742:12:66"},"nativeSrc":"17742:17:66","nodeType":"YulFunctionCall","src":"17742:17:66"},"variables":[{"name":"innerOffset","nativeSrc":"17727:11:66","nodeType":"YulTypedName","src":"17727:11:66","type":""}]},{"body":{"nativeSrc":"17811:16:66","nodeType":"YulBlock","src":"17811:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17820:1:66","nodeType":"YulLiteral","src":"17820:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"17823:1:66","nodeType":"YulLiteral","src":"17823:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"17813:6:66","nodeType":"YulIdentifier","src":"17813:6:66"},"nativeSrc":"17813:12:66","nodeType":"YulFunctionCall","src":"17813:12:66"},"nativeSrc":"17813:12:66","nodeType":"YulExpressionStatement","src":"17813:12:66"}]},"condition":{"arguments":[{"name":"innerOffset","nativeSrc":"17778:11:66","nodeType":"YulIdentifier","src":"17778:11:66"},{"kind":"number","nativeSrc":"17791:18:66","nodeType":"YulLiteral","src":"17791:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"17775:2:66","nodeType":"YulIdentifier","src":"17775:2:66"},"nativeSrc":"17775:35:66","nodeType":"YulFunctionCall","src":"17775:35:66"},"nativeSrc":"17772:55:66","nodeType":"YulIf","src":"17772:55:66"},{"nativeSrc":"17840:33:66","nodeType":"YulVariableDeclaration","src":"17840:33:66","value":{"arguments":[{"name":"value","nativeSrc":"17854:5:66","nodeType":"YulIdentifier","src":"17854:5:66"},{"name":"innerOffset","nativeSrc":"17861:11:66","nodeType":"YulIdentifier","src":"17861:11:66"}],"functionName":{"name":"add","nativeSrc":"17850:3:66","nodeType":"YulIdentifier","src":"17850:3:66"},"nativeSrc":"17850:23:66","nodeType":"YulFunctionCall","src":"17850:23:66"},"variables":[{"name":"_2","nativeSrc":"17844:2:66","nodeType":"YulTypedName","src":"17844:2:66","type":""}]},{"body":{"nativeSrc":"17924:16:66","nodeType":"YulBlock","src":"17924:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17933:1:66","nodeType":"YulLiteral","src":"17933:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"17936:1:66","nodeType":"YulLiteral","src":"17936:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"17926:6:66","nodeType":"YulIdentifier","src":"17926:6:66"},"nativeSrc":"17926:12:66","nodeType":"YulFunctionCall","src":"17926:12:66"},"nativeSrc":"17926:12:66","nodeType":"YulExpressionStatement","src":"17926:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"17897:12:66","nodeType":"YulIdentifier","src":"17897:12:66"},"nativeSrc":"17897:14:66","nodeType":"YulFunctionCall","src":"17897:14:66"},{"name":"_2","nativeSrc":"17913:2:66","nodeType":"YulIdentifier","src":"17913:2:66"}],"functionName":{"name":"sub","nativeSrc":"17893:3:66","nodeType":"YulIdentifier","src":"17893:3:66"},"nativeSrc":"17893:23:66","nodeType":"YulFunctionCall","src":"17893:23:66"},{"kind":"number","nativeSrc":"17918:4:66","nodeType":"YulLiteral","src":"17918:4:66","type":"","value":"0x60"}],"functionName":{"name":"slt","nativeSrc":"17889:3:66","nodeType":"YulIdentifier","src":"17889:3:66"},"nativeSrc":"17889:34:66","nodeType":"YulFunctionCall","src":"17889:34:66"},"nativeSrc":"17886:54:66","nodeType":"YulIf","src":"17886:54:66"},{"nativeSrc":"17953:37:66","nodeType":"YulVariableDeclaration","src":"17953:37:66","value":{"arguments":[],"functionName":{"name":"allocate_memory_3873","nativeSrc":"17968:20:66","nodeType":"YulIdentifier","src":"17968:20:66"},"nativeSrc":"17968:22:66","nodeType":"YulFunctionCall","src":"17968:22:66"},"variables":[{"name":"value_1","nativeSrc":"17957:7:66","nodeType":"YulTypedName","src":"17957:7:66","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"18010:7:66","nodeType":"YulIdentifier","src":"18010:7:66"},{"arguments":[{"name":"_2","nativeSrc":"18037:2:66","nodeType":"YulIdentifier","src":"18037:2:66"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"18019:17:66","nodeType":"YulIdentifier","src":"18019:17:66"},"nativeSrc":"18019:21:66","nodeType":"YulFunctionCall","src":"18019:21:66"}],"functionName":{"name":"mstore","nativeSrc":"18003:6:66","nodeType":"YulIdentifier","src":"18003:6:66"},"nativeSrc":"18003:38:66","nodeType":"YulFunctionCall","src":"18003:38:66"},"nativeSrc":"18003:38:66","nodeType":"YulExpressionStatement","src":"18003:38:66"},{"expression":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"18065:7:66","nodeType":"YulIdentifier","src":"18065:7:66"},{"kind":"number","nativeSrc":"18074:4:66","nodeType":"YulLiteral","src":"18074:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18061:3:66","nodeType":"YulIdentifier","src":"18061:3:66"},"nativeSrc":"18061:18:66","nodeType":"YulFunctionCall","src":"18061:18:66"},{"arguments":[{"arguments":[{"name":"_2","nativeSrc":"18103:2:66","nodeType":"YulIdentifier","src":"18103:2:66"},{"kind":"number","nativeSrc":"18107:4:66","nodeType":"YulLiteral","src":"18107:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18099:3:66","nodeType":"YulIdentifier","src":"18099:3:66"},"nativeSrc":"18099:13:66","nodeType":"YulFunctionCall","src":"18099:13:66"}],"functionName":{"name":"abi_decode_uint16","nativeSrc":"18081:17:66","nodeType":"YulIdentifier","src":"18081:17:66"},"nativeSrc":"18081:32:66","nodeType":"YulFunctionCall","src":"18081:32:66"}],"functionName":{"name":"mstore","nativeSrc":"18054:6:66","nodeType":"YulIdentifier","src":"18054:6:66"},"nativeSrc":"18054:60:66","nodeType":"YulFunctionCall","src":"18054:60:66"},"nativeSrc":"18054:60:66","nodeType":"YulExpressionStatement","src":"18054:60:66"},{"nativeSrc":"18127:39:66","nodeType":"YulVariableDeclaration","src":"18127:39:66","value":{"arguments":[{"arguments":[{"name":"_2","nativeSrc":"18158:2:66","nodeType":"YulIdentifier","src":"18158:2:66"},{"kind":"number","nativeSrc":"18162:2:66","nodeType":"YulLiteral","src":"18162:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18154:3:66","nodeType":"YulIdentifier","src":"18154:3:66"},"nativeSrc":"18154:11:66","nodeType":"YulFunctionCall","src":"18154:11:66"}],"functionName":{"name":"calldataload","nativeSrc":"18141:12:66","nodeType":"YulIdentifier","src":"18141:12:66"},"nativeSrc":"18141:25:66","nodeType":"YulFunctionCall","src":"18141:25:66"},"variables":[{"name":"offset","nativeSrc":"18131:6:66","nodeType":"YulTypedName","src":"18131:6:66","type":""}]},{"body":{"nativeSrc":"18213:16:66","nodeType":"YulBlock","src":"18213:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18222:1:66","nodeType":"YulLiteral","src":"18222:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"18225:1:66","nodeType":"YulLiteral","src":"18225:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"18215:6:66","nodeType":"YulIdentifier","src":"18215:6:66"},"nativeSrc":"18215:12:66","nodeType":"YulFunctionCall","src":"18215:12:66"},"nativeSrc":"18215:12:66","nodeType":"YulExpressionStatement","src":"18215:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"18185:6:66","nodeType":"YulIdentifier","src":"18185:6:66"},{"kind":"number","nativeSrc":"18193:18:66","nodeType":"YulLiteral","src":"18193:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"18182:2:66","nodeType":"YulIdentifier","src":"18182:2:66"},"nativeSrc":"18182:30:66","nodeType":"YulFunctionCall","src":"18182:30:66"},"nativeSrc":"18179:50:66","nodeType":"YulIf","src":"18179:50:66"},{"nativeSrc":"18242:25:66","nodeType":"YulVariableDeclaration","src":"18242:25:66","value":{"arguments":[{"name":"_2","nativeSrc":"18256:2:66","nodeType":"YulIdentifier","src":"18256:2:66"},{"name":"offset","nativeSrc":"18260:6:66","nodeType":"YulIdentifier","src":"18260:6:66"}],"functionName":{"name":"add","nativeSrc":"18252:3:66","nodeType":"YulIdentifier","src":"18252:3:66"},"nativeSrc":"18252:15:66","nodeType":"YulFunctionCall","src":"18252:15:66"},"variables":[{"name":"_3","nativeSrc":"18246:2:66","nodeType":"YulTypedName","src":"18246:2:66","type":""}]},{"body":{"nativeSrc":"18326:16:66","nodeType":"YulBlock","src":"18326:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18335:1:66","nodeType":"YulLiteral","src":"18335:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"18338:1:66","nodeType":"YulLiteral","src":"18338:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"18328:6:66","nodeType":"YulIdentifier","src":"18328:6:66"},"nativeSrc":"18328:12:66","nodeType":"YulFunctionCall","src":"18328:12:66"},"nativeSrc":"18328:12:66","nodeType":"YulExpressionStatement","src":"18328:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nativeSrc":"18298:2:66","nodeType":"YulIdentifier","src":"18298:2:66"},{"kind":"number","nativeSrc":"18302:4:66","nodeType":"YulLiteral","src":"18302:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"18294:3:66","nodeType":"YulIdentifier","src":"18294:3:66"},"nativeSrc":"18294:13:66","nodeType":"YulFunctionCall","src":"18294:13:66"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"18309:12:66","nodeType":"YulIdentifier","src":"18309:12:66"},"nativeSrc":"18309:14:66","nodeType":"YulFunctionCall","src":"18309:14:66"}],"functionName":{"name":"slt","nativeSrc":"18290:3:66","nodeType":"YulIdentifier","src":"18290:3:66"},"nativeSrc":"18290:34:66","nodeType":"YulFunctionCall","src":"18290:34:66"}],"functionName":{"name":"iszero","nativeSrc":"18283:6:66","nodeType":"YulIdentifier","src":"18283:6:66"},"nativeSrc":"18283:42:66","nodeType":"YulFunctionCall","src":"18283:42:66"},"nativeSrc":"18280:62:66","nodeType":"YulIf","src":"18280:62:66"},{"nativeSrc":"18355:32:66","nodeType":"YulVariableDeclaration","src":"18355:32:66","value":{"arguments":[{"name":"_3","nativeSrc":"18384:2:66","nodeType":"YulIdentifier","src":"18384:2:66"}],"functionName":{"name":"calldataload","nativeSrc":"18371:12:66","nodeType":"YulIdentifier","src":"18371:12:66"},"nativeSrc":"18371:16:66","nodeType":"YulFunctionCall","src":"18371:16:66"},"variables":[{"name":"length_1","nativeSrc":"18359:8:66","nodeType":"YulTypedName","src":"18359:8:66","type":""}]},{"nativeSrc":"18400:69:66","nodeType":"YulVariableDeclaration","src":"18400:69:66","value":{"arguments":[{"arguments":[{"name":"length_1","nativeSrc":"18459:8:66","nodeType":"YulIdentifier","src":"18459:8:66"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"18431:27:66","nodeType":"YulIdentifier","src":"18431:27:66"},"nativeSrc":"18431:37:66","nodeType":"YulFunctionCall","src":"18431:37:66"}],"functionName":{"name":"allocate_memory","nativeSrc":"18415:15:66","nodeType":"YulIdentifier","src":"18415:15:66"},"nativeSrc":"18415:54:66","nodeType":"YulFunctionCall","src":"18415:54:66"},"variables":[{"name":"array_1","nativeSrc":"18404:7:66","nodeType":"YulTypedName","src":"18404:7:66","type":""}]},{"expression":{"arguments":[{"name":"array_1","nativeSrc":"18489:7:66","nodeType":"YulIdentifier","src":"18489:7:66"},{"name":"length_1","nativeSrc":"18498:8:66","nodeType":"YulIdentifier","src":"18498:8:66"}],"functionName":{"name":"mstore","nativeSrc":"18482:6:66","nodeType":"YulIdentifier","src":"18482:6:66"},"nativeSrc":"18482:25:66","nodeType":"YulFunctionCall","src":"18482:25:66"},"nativeSrc":"18482:25:66","nodeType":"YulExpressionStatement","src":"18482:25:66"},{"body":{"nativeSrc":"18572:16:66","nodeType":"YulBlock","src":"18572:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18581:1:66","nodeType":"YulLiteral","src":"18581:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"18584:1:66","nodeType":"YulLiteral","src":"18584:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"18574:6:66","nodeType":"YulIdentifier","src":"18574:6:66"},"nativeSrc":"18574:12:66","nodeType":"YulFunctionCall","src":"18574:12:66"},"nativeSrc":"18574:12:66","nodeType":"YulExpressionStatement","src":"18574:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nativeSrc":"18534:2:66","nodeType":"YulIdentifier","src":"18534:2:66"},{"name":"length_1","nativeSrc":"18538:8:66","nodeType":"YulIdentifier","src":"18538:8:66"}],"functionName":{"name":"add","nativeSrc":"18530:3:66","nodeType":"YulIdentifier","src":"18530:3:66"},"nativeSrc":"18530:17:66","nodeType":"YulFunctionCall","src":"18530:17:66"},{"kind":"number","nativeSrc":"18549:4:66","nodeType":"YulLiteral","src":"18549:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18526:3:66","nodeType":"YulIdentifier","src":"18526:3:66"},"nativeSrc":"18526:28:66","nodeType":"YulFunctionCall","src":"18526:28:66"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"18556:12:66","nodeType":"YulIdentifier","src":"18556:12:66"},"nativeSrc":"18556:14:66","nodeType":"YulFunctionCall","src":"18556:14:66"}],"functionName":{"name":"gt","nativeSrc":"18523:2:66","nodeType":"YulIdentifier","src":"18523:2:66"},"nativeSrc":"18523:48:66","nodeType":"YulFunctionCall","src":"18523:48:66"},"nativeSrc":"18520:68:66","nodeType":"YulIf","src":"18520:68:66"},{"expression":{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"18618:7:66","nodeType":"YulIdentifier","src":"18618:7:66"},{"kind":"number","nativeSrc":"18627:4:66","nodeType":"YulLiteral","src":"18627:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18614:3:66","nodeType":"YulIdentifier","src":"18614:3:66"},"nativeSrc":"18614:18:66","nodeType":"YulFunctionCall","src":"18614:18:66"},{"arguments":[{"name":"_3","nativeSrc":"18638:2:66","nodeType":"YulIdentifier","src":"18638:2:66"},{"kind":"number","nativeSrc":"18642:4:66","nodeType":"YulLiteral","src":"18642:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18634:3:66","nodeType":"YulIdentifier","src":"18634:3:66"},"nativeSrc":"18634:13:66","nodeType":"YulFunctionCall","src":"18634:13:66"},{"name":"length_1","nativeSrc":"18649:8:66","nodeType":"YulIdentifier","src":"18649:8:66"}],"functionName":{"name":"calldatacopy","nativeSrc":"18601:12:66","nodeType":"YulIdentifier","src":"18601:12:66"},"nativeSrc":"18601:57:66","nodeType":"YulFunctionCall","src":"18601:57:66"},"nativeSrc":"18601:57:66","nodeType":"YulExpressionStatement","src":"18601:57:66"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array_1","nativeSrc":"18686:7:66","nodeType":"YulIdentifier","src":"18686:7:66"},{"name":"length_1","nativeSrc":"18695:8:66","nodeType":"YulIdentifier","src":"18695:8:66"}],"functionName":{"name":"add","nativeSrc":"18682:3:66","nodeType":"YulIdentifier","src":"18682:3:66"},"nativeSrc":"18682:22:66","nodeType":"YulFunctionCall","src":"18682:22:66"},{"kind":"number","nativeSrc":"18706:4:66","nodeType":"YulLiteral","src":"18706:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18678:3:66","nodeType":"YulIdentifier","src":"18678:3:66"},"nativeSrc":"18678:33:66","nodeType":"YulFunctionCall","src":"18678:33:66"},{"kind":"number","nativeSrc":"18713:1:66","nodeType":"YulLiteral","src":"18713:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"18671:6:66","nodeType":"YulIdentifier","src":"18671:6:66"},"nativeSrc":"18671:44:66","nodeType":"YulFunctionCall","src":"18671:44:66"},"nativeSrc":"18671:44:66","nodeType":"YulExpressionStatement","src":"18671:44:66"},{"expression":{"arguments":[{"arguments":[{"name":"value_1","nativeSrc":"18739:7:66","nodeType":"YulIdentifier","src":"18739:7:66"},{"kind":"number","nativeSrc":"18748:2:66","nodeType":"YulLiteral","src":"18748:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18735:3:66","nodeType":"YulIdentifier","src":"18735:3:66"},"nativeSrc":"18735:16:66","nodeType":"YulFunctionCall","src":"18735:16:66"},{"name":"array_1","nativeSrc":"18753:7:66","nodeType":"YulIdentifier","src":"18753:7:66"}],"functionName":{"name":"mstore","nativeSrc":"18728:6:66","nodeType":"YulIdentifier","src":"18728:6:66"},"nativeSrc":"18728:33:66","nodeType":"YulFunctionCall","src":"18728:33:66"},"nativeSrc":"18728:33:66","nodeType":"YulExpressionStatement","src":"18728:33:66"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"18781:3:66","nodeType":"YulIdentifier","src":"18781:3:66"},{"name":"value_1","nativeSrc":"18786:7:66","nodeType":"YulIdentifier","src":"18786:7:66"}],"functionName":{"name":"mstore","nativeSrc":"18774:6:66","nodeType":"YulIdentifier","src":"18774:6:66"},"nativeSrc":"18774:20:66","nodeType":"YulFunctionCall","src":"18774:20:66"},"nativeSrc":"18774:20:66","nodeType":"YulExpressionStatement","src":"18774:20:66"},{"nativeSrc":"18807:21:66","nodeType":"YulAssignment","src":"18807:21:66","value":{"arguments":[{"name":"dst","nativeSrc":"18818:3:66","nodeType":"YulIdentifier","src":"18818:3:66"},{"kind":"number","nativeSrc":"18823:4:66","nodeType":"YulLiteral","src":"18823:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18814:3:66","nodeType":"YulIdentifier","src":"18814:3:66"},"nativeSrc":"18814:14:66","nodeType":"YulFunctionCall","src":"18814:14:66"},"variableNames":[{"name":"dst","nativeSrc":"18807:3:66","nodeType":"YulIdentifier","src":"18807:3:66"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"17662:3:66","nodeType":"YulIdentifier","src":"17662:3:66"},{"name":"srcEnd","nativeSrc":"17667:6:66","nodeType":"YulIdentifier","src":"17667:6:66"}],"functionName":{"name":"lt","nativeSrc":"17659:2:66","nodeType":"YulIdentifier","src":"17659:2:66"},"nativeSrc":"17659:15:66","nodeType":"YulFunctionCall","src":"17659:15:66"},"nativeSrc":"17651:1187:66","nodeType":"YulForLoop","post":{"nativeSrc":"17675:25:66","nodeType":"YulBlock","src":"17675:25:66","statements":[{"nativeSrc":"17677:21:66","nodeType":"YulAssignment","src":"17677:21:66","value":{"arguments":[{"name":"src","nativeSrc":"17688:3:66","nodeType":"YulIdentifier","src":"17688:3:66"},{"kind":"number","nativeSrc":"17693:4:66","nodeType":"YulLiteral","src":"17693:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17684:3:66","nodeType":"YulIdentifier","src":"17684:3:66"},"nativeSrc":"17684:14:66","nodeType":"YulFunctionCall","src":"17684:14:66"},"variableNames":[{"name":"src","nativeSrc":"17677:3:66","nodeType":"YulIdentifier","src":"17677:3:66"}]}]},"pre":{"nativeSrc":"17655:3:66","nodeType":"YulBlock","src":"17655:3:66","statements":[]},"src":"17651:1187:66"},{"nativeSrc":"18847:18:66","nodeType":"YulAssignment","src":"18847:18:66","value":{"name":"array","nativeSrc":"18860:5:66","nodeType":"YulIdentifier","src":"18860:5:66"},"variableNames":[{"name":"converted","nativeSrc":"18847:9:66","nodeType":"YulIdentifier","src":"18847:9:66"}]}]},"name":"convert_array_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr","nativeSrc":"17087:1784:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"17261:5:66","nodeType":"YulTypedName","src":"17261:5:66","type":""},{"name":"length","nativeSrc":"17268:6:66","nodeType":"YulTypedName","src":"17268:6:66","type":""}],"returnVariables":[{"name":"converted","nativeSrc":"17279:9:66","nodeType":"YulTypedName","src":"17279:9:66","type":""}],"src":"17087:1784:66"},{"body":{"nativeSrc":"19006:201:66","nodeType":"YulBlock","src":"19006:201:66","statements":[{"body":{"nativeSrc":"19044:16:66","nodeType":"YulBlock","src":"19044:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19053:1:66","nodeType":"YulLiteral","src":"19053:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"19056:1:66","nodeType":"YulLiteral","src":"19056:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"19046:6:66","nodeType":"YulIdentifier","src":"19046:6:66"},"nativeSrc":"19046:12:66","nodeType":"YulFunctionCall","src":"19046:12:66"},"nativeSrc":"19046:12:66","nodeType":"YulExpressionStatement","src":"19046:12:66"}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"19022:10:66","nodeType":"YulIdentifier","src":"19022:10:66"},{"name":"endIndex","nativeSrc":"19034:8:66","nodeType":"YulIdentifier","src":"19034:8:66"}],"functionName":{"name":"gt","nativeSrc":"19019:2:66","nodeType":"YulIdentifier","src":"19019:2:66"},"nativeSrc":"19019:24:66","nodeType":"YulFunctionCall","src":"19019:24:66"},"nativeSrc":"19016:44:66","nodeType":"YulIf","src":"19016:44:66"},{"body":{"nativeSrc":"19093:16:66","nodeType":"YulBlock","src":"19093:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19102:1:66","nodeType":"YulLiteral","src":"19102:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"19105:1:66","nodeType":"YulLiteral","src":"19105:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"19095:6:66","nodeType":"YulIdentifier","src":"19095:6:66"},"nativeSrc":"19095:12:66","nodeType":"YulFunctionCall","src":"19095:12:66"},"nativeSrc":"19095:12:66","nodeType":"YulExpressionStatement","src":"19095:12:66"}]},"condition":{"arguments":[{"name":"endIndex","nativeSrc":"19075:8:66","nodeType":"YulIdentifier","src":"19075:8:66"},{"name":"length","nativeSrc":"19085:6:66","nodeType":"YulIdentifier","src":"19085:6:66"}],"functionName":{"name":"gt","nativeSrc":"19072:2:66","nodeType":"YulIdentifier","src":"19072:2:66"},"nativeSrc":"19072:20:66","nodeType":"YulFunctionCall","src":"19072:20:66"},"nativeSrc":"19069:40:66","nodeType":"YulIf","src":"19069:40:66"},{"nativeSrc":"19118:36:66","nodeType":"YulAssignment","src":"19118:36:66","value":{"arguments":[{"name":"offset","nativeSrc":"19135:6:66","nodeType":"YulIdentifier","src":"19135:6:66"},{"name":"startIndex","nativeSrc":"19143:10:66","nodeType":"YulIdentifier","src":"19143:10:66"}],"functionName":{"name":"add","nativeSrc":"19131:3:66","nodeType":"YulIdentifier","src":"19131:3:66"},"nativeSrc":"19131:23:66","nodeType":"YulFunctionCall","src":"19131:23:66"},"variableNames":[{"name":"offsetOut","nativeSrc":"19118:9:66","nodeType":"YulIdentifier","src":"19118:9:66"}]},{"nativeSrc":"19163:38:66","nodeType":"YulAssignment","src":"19163:38:66","value":{"arguments":[{"name":"endIndex","nativeSrc":"19180:8:66","nodeType":"YulIdentifier","src":"19180:8:66"},{"name":"startIndex","nativeSrc":"19190:10:66","nodeType":"YulIdentifier","src":"19190:10:66"}],"functionName":{"name":"sub","nativeSrc":"19176:3:66","nodeType":"YulIdentifier","src":"19176:3:66"},"nativeSrc":"19176:25:66","nodeType":"YulFunctionCall","src":"19176:25:66"},"variableNames":[{"name":"lengthOut","nativeSrc":"19163:9:66","nodeType":"YulIdentifier","src":"19163:9:66"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nativeSrc":"18876:331:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"18940:6:66","nodeType":"YulTypedName","src":"18940:6:66","type":""},{"name":"length","nativeSrc":"18948:6:66","nodeType":"YulTypedName","src":"18948:6:66","type":""},{"name":"startIndex","nativeSrc":"18956:10:66","nodeType":"YulTypedName","src":"18956:10:66","type":""},{"name":"endIndex","nativeSrc":"18968:8:66","nodeType":"YulTypedName","src":"18968:8:66","type":""}],"returnVariables":[{"name":"offsetOut","nativeSrc":"18981:9:66","nodeType":"YulTypedName","src":"18981:9:66","type":""},{"name":"lengthOut","nativeSrc":"18992:9:66","nodeType":"YulTypedName","src":"18992:9:66","type":""}],"src":"18876:331:66"},{"body":{"nativeSrc":"19411:277:66","nodeType":"YulBlock","src":"19411:277:66","statements":[{"nativeSrc":"19421:27:66","nodeType":"YulVariableDeclaration","src":"19421:27:66","value":{"arguments":[{"name":"value0","nativeSrc":"19441:6:66","nodeType":"YulIdentifier","src":"19441:6:66"}],"functionName":{"name":"mload","nativeSrc":"19435:5:66","nodeType":"YulIdentifier","src":"19435:5:66"},"nativeSrc":"19435:13:66","nodeType":"YulFunctionCall","src":"19435:13:66"},"variables":[{"name":"length","nativeSrc":"19425:6:66","nodeType":"YulTypedName","src":"19425:6:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"19496:6:66","nodeType":"YulIdentifier","src":"19496:6:66"},{"kind":"number","nativeSrc":"19504:4:66","nodeType":"YulLiteral","src":"19504:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19492:3:66","nodeType":"YulIdentifier","src":"19492:3:66"},"nativeSrc":"19492:17:66","nodeType":"YulFunctionCall","src":"19492:17:66"},{"name":"pos","nativeSrc":"19511:3:66","nodeType":"YulIdentifier","src":"19511:3:66"},{"name":"length","nativeSrc":"19516:6:66","nodeType":"YulIdentifier","src":"19516:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"19457:34:66","nodeType":"YulIdentifier","src":"19457:34:66"},"nativeSrc":"19457:66:66","nodeType":"YulFunctionCall","src":"19457:66:66"},"nativeSrc":"19457:66:66","nodeType":"YulExpressionStatement","src":"19457:66:66"},{"nativeSrc":"19532:29:66","nodeType":"YulVariableDeclaration","src":"19532:29:66","value":{"arguments":[{"name":"pos","nativeSrc":"19549:3:66","nodeType":"YulIdentifier","src":"19549:3:66"},{"name":"length","nativeSrc":"19554:6:66","nodeType":"YulIdentifier","src":"19554:6:66"}],"functionName":{"name":"add","nativeSrc":"19545:3:66","nodeType":"YulIdentifier","src":"19545:3:66"},"nativeSrc":"19545:16:66","nodeType":"YulFunctionCall","src":"19545:16:66"},"variables":[{"name":"end_1","nativeSrc":"19536:5:66","nodeType":"YulTypedName","src":"19536:5:66","type":""}]},{"expression":{"arguments":[{"name":"end_1","nativeSrc":"19583:5:66","nodeType":"YulIdentifier","src":"19583:5:66"},{"name":"value1","nativeSrc":"19590:6:66","nodeType":"YulIdentifier","src":"19590:6:66"},{"name":"value2","nativeSrc":"19598:6:66","nodeType":"YulIdentifier","src":"19598:6:66"}],"functionName":{"name":"calldatacopy","nativeSrc":"19570:12:66","nodeType":"YulIdentifier","src":"19570:12:66"},"nativeSrc":"19570:35:66","nodeType":"YulFunctionCall","src":"19570:35:66"},"nativeSrc":"19570:35:66","nodeType":"YulExpressionStatement","src":"19570:35:66"},{"nativeSrc":"19614:28:66","nodeType":"YulVariableDeclaration","src":"19614:28:66","value":{"arguments":[{"name":"end_1","nativeSrc":"19628:5:66","nodeType":"YulIdentifier","src":"19628:5:66"},{"name":"value2","nativeSrc":"19635:6:66","nodeType":"YulIdentifier","src":"19635:6:66"}],"functionName":{"name":"add","nativeSrc":"19624:3:66","nodeType":"YulIdentifier","src":"19624:3:66"},"nativeSrc":"19624:18:66","nodeType":"YulFunctionCall","src":"19624:18:66"},"variables":[{"name":"_1","nativeSrc":"19618:2:66","nodeType":"YulTypedName","src":"19618:2:66","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"19658:2:66","nodeType":"YulIdentifier","src":"19658:2:66"},{"kind":"number","nativeSrc":"19662:1:66","nodeType":"YulLiteral","src":"19662:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"19651:6:66","nodeType":"YulIdentifier","src":"19651:6:66"},"nativeSrc":"19651:13:66","nodeType":"YulFunctionCall","src":"19651:13:66"},"nativeSrc":"19651:13:66","nodeType":"YulExpressionStatement","src":"19651:13:66"},{"nativeSrc":"19673:9:66","nodeType":"YulAssignment","src":"19673:9:66","value":{"name":"_1","nativeSrc":"19680:2:66","nodeType":"YulIdentifier","src":"19680:2:66"},"variableNames":[{"name":"end","nativeSrc":"19673:3:66","nodeType":"YulIdentifier","src":"19673:3:66"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_calldata_ptr_slice__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"19212:476:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"19371:3:66","nodeType":"YulTypedName","src":"19371:3:66","type":""},{"name":"value2","nativeSrc":"19376:6:66","nodeType":"YulTypedName","src":"19376:6:66","type":""},{"name":"value1","nativeSrc":"19384:6:66","nodeType":"YulTypedName","src":"19384:6:66","type":""},{"name":"value0","nativeSrc":"19392:6:66","nodeType":"YulTypedName","src":"19392:6:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"19403:3:66","nodeType":"YulTypedName","src":"19403:3:66","type":""}],"src":"19212:476:66"},{"body":{"nativeSrc":"19759:200:66","nodeType":"YulBlock","src":"19759:200:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"19776:3:66","nodeType":"YulIdentifier","src":"19776:3:66"},{"name":"length","nativeSrc":"19781:6:66","nodeType":"YulIdentifier","src":"19781:6:66"}],"functionName":{"name":"mstore","nativeSrc":"19769:6:66","nodeType":"YulIdentifier","src":"19769:6:66"},"nativeSrc":"19769:19:66","nodeType":"YulFunctionCall","src":"19769:19:66"},"nativeSrc":"19769:19:66","nodeType":"YulExpressionStatement","src":"19769:19:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"19814:3:66","nodeType":"YulIdentifier","src":"19814:3:66"},{"kind":"number","nativeSrc":"19819:4:66","nodeType":"YulLiteral","src":"19819:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19810:3:66","nodeType":"YulIdentifier","src":"19810:3:66"},"nativeSrc":"19810:14:66","nodeType":"YulFunctionCall","src":"19810:14:66"},{"name":"start","nativeSrc":"19826:5:66","nodeType":"YulIdentifier","src":"19826:5:66"},{"name":"length","nativeSrc":"19833:6:66","nodeType":"YulIdentifier","src":"19833:6:66"}],"functionName":{"name":"calldatacopy","nativeSrc":"19797:12:66","nodeType":"YulIdentifier","src":"19797:12:66"},"nativeSrc":"19797:43:66","nodeType":"YulFunctionCall","src":"19797:43:66"},"nativeSrc":"19797:43:66","nodeType":"YulExpressionStatement","src":"19797:43:66"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"19864:3:66","nodeType":"YulIdentifier","src":"19864:3:66"},{"name":"length","nativeSrc":"19869:6:66","nodeType":"YulIdentifier","src":"19869:6:66"}],"functionName":{"name":"add","nativeSrc":"19860:3:66","nodeType":"YulIdentifier","src":"19860:3:66"},"nativeSrc":"19860:16:66","nodeType":"YulFunctionCall","src":"19860:16:66"},{"kind":"number","nativeSrc":"19878:4:66","nodeType":"YulLiteral","src":"19878:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19856:3:66","nodeType":"YulIdentifier","src":"19856:3:66"},"nativeSrc":"19856:27:66","nodeType":"YulFunctionCall","src":"19856:27:66"},{"kind":"number","nativeSrc":"19885:1:66","nodeType":"YulLiteral","src":"19885:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"19849:6:66","nodeType":"YulIdentifier","src":"19849:6:66"},"nativeSrc":"19849:38:66","nodeType":"YulFunctionCall","src":"19849:38:66"},"nativeSrc":"19849:38:66","nodeType":"YulExpressionStatement","src":"19849:38:66"},{"nativeSrc":"19896:57:66","nodeType":"YulAssignment","src":"19896:57:66","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"19911:3:66","nodeType":"YulIdentifier","src":"19911:3:66"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"19924:6:66","nodeType":"YulIdentifier","src":"19924:6:66"},{"kind":"number","nativeSrc":"19932:2:66","nodeType":"YulLiteral","src":"19932:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"19920:3:66","nodeType":"YulIdentifier","src":"19920:3:66"},"nativeSrc":"19920:15:66","nodeType":"YulFunctionCall","src":"19920:15:66"},{"arguments":[{"kind":"number","nativeSrc":"19941:2:66","nodeType":"YulLiteral","src":"19941:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"19937:3:66","nodeType":"YulIdentifier","src":"19937:3:66"},"nativeSrc":"19937:7:66","nodeType":"YulFunctionCall","src":"19937:7:66"}],"functionName":{"name":"and","nativeSrc":"19916:3:66","nodeType":"YulIdentifier","src":"19916:3:66"},"nativeSrc":"19916:29:66","nodeType":"YulFunctionCall","src":"19916:29:66"}],"functionName":{"name":"add","nativeSrc":"19907:3:66","nodeType":"YulIdentifier","src":"19907:3:66"},"nativeSrc":"19907:39:66","nodeType":"YulFunctionCall","src":"19907:39:66"},{"kind":"number","nativeSrc":"19948:4:66","nodeType":"YulLiteral","src":"19948:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19903:3:66","nodeType":"YulIdentifier","src":"19903:3:66"},"nativeSrc":"19903:50:66","nodeType":"YulFunctionCall","src":"19903:50:66"},"variableNames":[{"name":"end","nativeSrc":"19896:3:66","nodeType":"YulIdentifier","src":"19896:3:66"}]}]},"name":"abi_encode_bytes_calldata","nativeSrc":"19693:266:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"start","nativeSrc":"19728:5:66","nodeType":"YulTypedName","src":"19728:5:66","type":""},{"name":"length","nativeSrc":"19735:6:66","nodeType":"YulTypedName","src":"19735:6:66","type":""},{"name":"pos","nativeSrc":"19743:3:66","nodeType":"YulTypedName","src":"19743:3:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"19751:3:66","nodeType":"YulTypedName","src":"19751:3:66","type":""}],"src":"19693:266:66"},{"body":{"nativeSrc":"20093:115:66","nodeType":"YulBlock","src":"20093:115:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"20110:9:66","nodeType":"YulIdentifier","src":"20110:9:66"},{"kind":"number","nativeSrc":"20121:2:66","nodeType":"YulLiteral","src":"20121:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"20103:6:66","nodeType":"YulIdentifier","src":"20103:6:66"},"nativeSrc":"20103:21:66","nodeType":"YulFunctionCall","src":"20103:21:66"},"nativeSrc":"20103:21:66","nodeType":"YulExpressionStatement","src":"20103:21:66"},{"nativeSrc":"20133:69:66","nodeType":"YulAssignment","src":"20133:69:66","value":{"arguments":[{"name":"value0","nativeSrc":"20167:6:66","nodeType":"YulIdentifier","src":"20167:6:66"},{"name":"value1","nativeSrc":"20175:6:66","nodeType":"YulIdentifier","src":"20175:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"20187:9:66","nodeType":"YulIdentifier","src":"20187:9:66"},{"kind":"number","nativeSrc":"20198:2:66","nodeType":"YulLiteral","src":"20198:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"20183:3:66","nodeType":"YulIdentifier","src":"20183:3:66"},"nativeSrc":"20183:18:66","nodeType":"YulFunctionCall","src":"20183:18:66"}],"functionName":{"name":"abi_encode_bytes_calldata","nativeSrc":"20141:25:66","nodeType":"YulIdentifier","src":"20141:25:66"},"nativeSrc":"20141:61:66","nodeType":"YulFunctionCall","src":"20141:61:66"},"variableNames":[{"name":"tail","nativeSrc":"20133:4:66","nodeType":"YulIdentifier","src":"20133:4:66"}]}]},"name":"abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"19964:244:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"20054:9:66","nodeType":"YulTypedName","src":"20054:9:66","type":""},{"name":"value1","nativeSrc":"20065:6:66","nodeType":"YulTypedName","src":"20065:6:66","type":""},{"name":"value0","nativeSrc":"20073:6:66","nodeType":"YulTypedName","src":"20073:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"20084:4:66","nodeType":"YulTypedName","src":"20084:4:66","type":""}],"src":"19964:244:66"},{"body":{"nativeSrc":"20245:95:66","nodeType":"YulBlock","src":"20245:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20262:1:66","nodeType":"YulLiteral","src":"20262:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"20269:3:66","nodeType":"YulLiteral","src":"20269:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"20274:10:66","nodeType":"YulLiteral","src":"20274:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"20265:3:66","nodeType":"YulIdentifier","src":"20265:3:66"},"nativeSrc":"20265:20:66","nodeType":"YulFunctionCall","src":"20265:20:66"}],"functionName":{"name":"mstore","nativeSrc":"20255:6:66","nodeType":"YulIdentifier","src":"20255:6:66"},"nativeSrc":"20255:31:66","nodeType":"YulFunctionCall","src":"20255:31:66"},"nativeSrc":"20255:31:66","nodeType":"YulExpressionStatement","src":"20255:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"20302:1:66","nodeType":"YulLiteral","src":"20302:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"20305:4:66","nodeType":"YulLiteral","src":"20305:4:66","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"20295:6:66","nodeType":"YulIdentifier","src":"20295:6:66"},"nativeSrc":"20295:15:66","nodeType":"YulFunctionCall","src":"20295:15:66"},"nativeSrc":"20295:15:66","nodeType":"YulExpressionStatement","src":"20295:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"20326:1:66","nodeType":"YulLiteral","src":"20326:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"20329:4:66","nodeType":"YulLiteral","src":"20329:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"20319:6:66","nodeType":"YulIdentifier","src":"20319:6:66"},"nativeSrc":"20319:15:66","nodeType":"YulFunctionCall","src":"20319:15:66"},"nativeSrc":"20319:15:66","nodeType":"YulExpressionStatement","src":"20319:15:66"}]},"name":"panic_error_0x32","nativeSrc":"20213:127:66","nodeType":"YulFunctionDefinition","src":"20213:127:66"},{"body":{"nativeSrc":"20453:223:66","nodeType":"YulBlock","src":"20453:223:66","statements":[{"nativeSrc":"20463:51:66","nodeType":"YulVariableDeclaration","src":"20463:51:66","value":{"arguments":[{"name":"ptr_to_tail","nativeSrc":"20502:11:66","nodeType":"YulIdentifier","src":"20502:11:66"}],"functionName":{"name":"calldataload","nativeSrc":"20489:12:66","nodeType":"YulIdentifier","src":"20489:12:66"},"nativeSrc":"20489:25:66","nodeType":"YulFunctionCall","src":"20489:25:66"},"variables":[{"name":"rel_offset_of_tail","nativeSrc":"20467:18:66","nodeType":"YulTypedName","src":"20467:18:66","type":""}]},{"body":{"nativeSrc":"20604:16:66","nodeType":"YulBlock","src":"20604:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20613:1:66","nodeType":"YulLiteral","src":"20613:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"20616:1:66","nodeType":"YulLiteral","src":"20616:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"20606:6:66","nodeType":"YulIdentifier","src":"20606:6:66"},"nativeSrc":"20606:12:66","nodeType":"YulFunctionCall","src":"20606:12:66"},"nativeSrc":"20606:12:66","nodeType":"YulExpressionStatement","src":"20606:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nativeSrc":"20537:18:66","nodeType":"YulIdentifier","src":"20537:18:66"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"20565:12:66","nodeType":"YulIdentifier","src":"20565:12:66"},"nativeSrc":"20565:14:66","nodeType":"YulFunctionCall","src":"20565:14:66"},{"name":"base_ref","nativeSrc":"20581:8:66","nodeType":"YulIdentifier","src":"20581:8:66"}],"functionName":{"name":"sub","nativeSrc":"20561:3:66","nodeType":"YulIdentifier","src":"20561:3:66"},"nativeSrc":"20561:29:66","nodeType":"YulFunctionCall","src":"20561:29:66"},{"arguments":[{"kind":"number","nativeSrc":"20596:3:66","nodeType":"YulLiteral","src":"20596:3:66","type":"","value":"318"}],"functionName":{"name":"not","nativeSrc":"20592:3:66","nodeType":"YulIdentifier","src":"20592:3:66"},"nativeSrc":"20592:8:66","nodeType":"YulFunctionCall","src":"20592:8:66"}],"functionName":{"name":"add","nativeSrc":"20557:3:66","nodeType":"YulIdentifier","src":"20557:3:66"},"nativeSrc":"20557:44:66","nodeType":"YulFunctionCall","src":"20557:44:66"}],"functionName":{"name":"slt","nativeSrc":"20533:3:66","nodeType":"YulIdentifier","src":"20533:3:66"},"nativeSrc":"20533:69:66","nodeType":"YulFunctionCall","src":"20533:69:66"}],"functionName":{"name":"iszero","nativeSrc":"20526:6:66","nodeType":"YulIdentifier","src":"20526:6:66"},"nativeSrc":"20526:77:66","nodeType":"YulFunctionCall","src":"20526:77:66"},"nativeSrc":"20523:97:66","nodeType":"YulIf","src":"20523:97:66"},{"nativeSrc":"20629:41:66","nodeType":"YulAssignment","src":"20629:41:66","value":{"arguments":[{"name":"base_ref","nativeSrc":"20641:8:66","nodeType":"YulIdentifier","src":"20641:8:66"},{"name":"rel_offset_of_tail","nativeSrc":"20651:18:66","nodeType":"YulIdentifier","src":"20651:18:66"}],"functionName":{"name":"add","nativeSrc":"20637:3:66","nodeType":"YulIdentifier","src":"20637:3:66"},"nativeSrc":"20637:33:66","nodeType":"YulFunctionCall","src":"20637:33:66"},"variableNames":[{"name":"addr","nativeSrc":"20629:4:66","nodeType":"YulIdentifier","src":"20629:4:66"}]}]},"name":"access_calldata_tail_t_struct$_InboundPacket_$2486_calldata_ptr","nativeSrc":"20345:331:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nativeSrc":"20418:8:66","nodeType":"YulTypedName","src":"20418:8:66","type":""},{"name":"ptr_to_tail","nativeSrc":"20428:11:66","nodeType":"YulTypedName","src":"20428:11:66","type":""}],"returnVariables":[{"name":"addr","nativeSrc":"20444:4:66","nodeType":"YulTypedName","src":"20444:4:66","type":""}],"src":"20345:331:66"},{"body":{"nativeSrc":"20775:427:66","nodeType":"YulBlock","src":"20775:427:66","statements":[{"nativeSrc":"20785:51:66","nodeType":"YulVariableDeclaration","src":"20785:51:66","value":{"arguments":[{"name":"ptr_to_tail","nativeSrc":"20824:11:66","nodeType":"YulIdentifier","src":"20824:11:66"}],"functionName":{"name":"calldataload","nativeSrc":"20811:12:66","nodeType":"YulIdentifier","src":"20811:12:66"},"nativeSrc":"20811:25:66","nodeType":"YulFunctionCall","src":"20811:25:66"},"variables":[{"name":"rel_offset_of_tail","nativeSrc":"20789:18:66","nodeType":"YulTypedName","src":"20789:18:66","type":""}]},{"body":{"nativeSrc":"20925:16:66","nodeType":"YulBlock","src":"20925:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"20934:1:66","nodeType":"YulLiteral","src":"20934:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"20937:1:66","nodeType":"YulLiteral","src":"20937:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"20927:6:66","nodeType":"YulIdentifier","src":"20927:6:66"},"nativeSrc":"20927:12:66","nodeType":"YulFunctionCall","src":"20927:12:66"},"nativeSrc":"20927:12:66","nodeType":"YulExpressionStatement","src":"20927:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"rel_offset_of_tail","nativeSrc":"20859:18:66","nodeType":"YulIdentifier","src":"20859:18:66"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"20887:12:66","nodeType":"YulIdentifier","src":"20887:12:66"},"nativeSrc":"20887:14:66","nodeType":"YulFunctionCall","src":"20887:14:66"},{"name":"base_ref","nativeSrc":"20903:8:66","nodeType":"YulIdentifier","src":"20903:8:66"}],"functionName":{"name":"sub","nativeSrc":"20883:3:66","nodeType":"YulIdentifier","src":"20883:3:66"},"nativeSrc":"20883:29:66","nodeType":"YulFunctionCall","src":"20883:29:66"},{"arguments":[{"kind":"number","nativeSrc":"20918:2:66","nodeType":"YulLiteral","src":"20918:2:66","type":"","value":"30"}],"functionName":{"name":"not","nativeSrc":"20914:3:66","nodeType":"YulIdentifier","src":"20914:3:66"},"nativeSrc":"20914:7:66","nodeType":"YulFunctionCall","src":"20914:7:66"}],"functionName":{"name":"add","nativeSrc":"20879:3:66","nodeType":"YulIdentifier","src":"20879:3:66"},"nativeSrc":"20879:43:66","nodeType":"YulFunctionCall","src":"20879:43:66"}],"functionName":{"name":"slt","nativeSrc":"20855:3:66","nodeType":"YulIdentifier","src":"20855:3:66"},"nativeSrc":"20855:68:66","nodeType":"YulFunctionCall","src":"20855:68:66"}],"functionName":{"name":"iszero","nativeSrc":"20848:6:66","nodeType":"YulIdentifier","src":"20848:6:66"},"nativeSrc":"20848:76:66","nodeType":"YulFunctionCall","src":"20848:76:66"},"nativeSrc":"20845:96:66","nodeType":"YulIf","src":"20845:96:66"},{"nativeSrc":"20950:47:66","nodeType":"YulVariableDeclaration","src":"20950:47:66","value":{"arguments":[{"name":"base_ref","nativeSrc":"20968:8:66","nodeType":"YulIdentifier","src":"20968:8:66"},{"name":"rel_offset_of_tail","nativeSrc":"20978:18:66","nodeType":"YulIdentifier","src":"20978:18:66"}],"functionName":{"name":"add","nativeSrc":"20964:3:66","nodeType":"YulIdentifier","src":"20964:3:66"},"nativeSrc":"20964:33:66","nodeType":"YulFunctionCall","src":"20964:33:66"},"variables":[{"name":"addr_1","nativeSrc":"20954:6:66","nodeType":"YulTypedName","src":"20954:6:66","type":""}]},{"nativeSrc":"21006:30:66","nodeType":"YulAssignment","src":"21006:30:66","value":{"arguments":[{"name":"addr_1","nativeSrc":"21029:6:66","nodeType":"YulIdentifier","src":"21029:6:66"}],"functionName":{"name":"calldataload","nativeSrc":"21016:12:66","nodeType":"YulIdentifier","src":"21016:12:66"},"nativeSrc":"21016:20:66","nodeType":"YulFunctionCall","src":"21016:20:66"},"variableNames":[{"name":"length","nativeSrc":"21006:6:66","nodeType":"YulIdentifier","src":"21006:6:66"}]},{"body":{"nativeSrc":"21079:16:66","nodeType":"YulBlock","src":"21079:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21088:1:66","nodeType":"YulLiteral","src":"21088:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"21091:1:66","nodeType":"YulLiteral","src":"21091:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"21081:6:66","nodeType":"YulIdentifier","src":"21081:6:66"},"nativeSrc":"21081:12:66","nodeType":"YulFunctionCall","src":"21081:12:66"},"nativeSrc":"21081:12:66","nodeType":"YulExpressionStatement","src":"21081:12:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"21051:6:66","nodeType":"YulIdentifier","src":"21051:6:66"},{"kind":"number","nativeSrc":"21059:18:66","nodeType":"YulLiteral","src":"21059:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"21048:2:66","nodeType":"YulIdentifier","src":"21048:2:66"},"nativeSrc":"21048:30:66","nodeType":"YulFunctionCall","src":"21048:30:66"},"nativeSrc":"21045:50:66","nodeType":"YulIf","src":"21045:50:66"},{"nativeSrc":"21104:25:66","nodeType":"YulAssignment","src":"21104:25:66","value":{"arguments":[{"name":"addr_1","nativeSrc":"21116:6:66","nodeType":"YulIdentifier","src":"21116:6:66"},{"kind":"number","nativeSrc":"21124:4:66","nodeType":"YulLiteral","src":"21124:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"21112:3:66","nodeType":"YulIdentifier","src":"21112:3:66"},"nativeSrc":"21112:17:66","nodeType":"YulFunctionCall","src":"21112:17:66"},"variableNames":[{"name":"addr","nativeSrc":"21104:4:66","nodeType":"YulIdentifier","src":"21104:4:66"}]},{"body":{"nativeSrc":"21180:16:66","nodeType":"YulBlock","src":"21180:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21189:1:66","nodeType":"YulLiteral","src":"21189:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"21192:1:66","nodeType":"YulLiteral","src":"21192:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"21182:6:66","nodeType":"YulIdentifier","src":"21182:6:66"},"nativeSrc":"21182:12:66","nodeType":"YulFunctionCall","src":"21182:12:66"},"nativeSrc":"21182:12:66","nodeType":"YulExpressionStatement","src":"21182:12:66"}]},"condition":{"arguments":[{"name":"addr","nativeSrc":"21145:4:66","nodeType":"YulIdentifier","src":"21145:4:66"},{"arguments":[{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"21155:12:66","nodeType":"YulIdentifier","src":"21155:12:66"},"nativeSrc":"21155:14:66","nodeType":"YulFunctionCall","src":"21155:14:66"},{"name":"length","nativeSrc":"21171:6:66","nodeType":"YulIdentifier","src":"21171:6:66"}],"functionName":{"name":"sub","nativeSrc":"21151:3:66","nodeType":"YulIdentifier","src":"21151:3:66"},"nativeSrc":"21151:27:66","nodeType":"YulFunctionCall","src":"21151:27:66"}],"functionName":{"name":"sgt","nativeSrc":"21141:3:66","nodeType":"YulIdentifier","src":"21141:3:66"},"nativeSrc":"21141:38:66","nodeType":"YulFunctionCall","src":"21141:38:66"},"nativeSrc":"21138:58:66","nodeType":"YulIf","src":"21138:58:66"}]},"name":"access_calldata_tail_t_bytes_calldata_ptr","nativeSrc":"20681:521:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"base_ref","nativeSrc":"20732:8:66","nodeType":"YulTypedName","src":"20732:8:66","type":""},{"name":"ptr_to_tail","nativeSrc":"20742:11:66","nodeType":"YulTypedName","src":"20742:11:66","type":""}],"returnVariables":[{"name":"addr","nativeSrc":"20758:4:66","nodeType":"YulTypedName","src":"20758:4:66","type":""},{"name":"length","nativeSrc":"20764:6:66","nodeType":"YulTypedName","src":"20764:6:66","type":""}],"src":"20681:521:66"},{"body":{"nativeSrc":"21251:85:66","nodeType":"YulBlock","src":"21251:85:66","statements":[{"body":{"nativeSrc":"21314:16:66","nodeType":"YulBlock","src":"21314:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21323:1:66","nodeType":"YulLiteral","src":"21323:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"21326:1:66","nodeType":"YulLiteral","src":"21326:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"21316:6:66","nodeType":"YulIdentifier","src":"21316:6:66"},"nativeSrc":"21316:12:66","nodeType":"YulFunctionCall","src":"21316:12:66"},"nativeSrc":"21316:12:66","nodeType":"YulExpressionStatement","src":"21316:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"21274:5:66","nodeType":"YulIdentifier","src":"21274:5:66"},{"arguments":[{"name":"value","nativeSrc":"21285:5:66","nodeType":"YulIdentifier","src":"21285:5:66"},{"kind":"number","nativeSrc":"21292:18:66","nodeType":"YulLiteral","src":"21292:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"21281:3:66","nodeType":"YulIdentifier","src":"21281:3:66"},"nativeSrc":"21281:30:66","nodeType":"YulFunctionCall","src":"21281:30:66"}],"functionName":{"name":"eq","nativeSrc":"21271:2:66","nodeType":"YulIdentifier","src":"21271:2:66"},"nativeSrc":"21271:41:66","nodeType":"YulFunctionCall","src":"21271:41:66"}],"functionName":{"name":"iszero","nativeSrc":"21264:6:66","nodeType":"YulIdentifier","src":"21264:6:66"},"nativeSrc":"21264:49:66","nodeType":"YulFunctionCall","src":"21264:49:66"},"nativeSrc":"21261:69:66","nodeType":"YulIf","src":"21261:69:66"}]},"name":"validator_revert_uint64","nativeSrc":"21207:129:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"21240:5:66","nodeType":"YulTypedName","src":"21240:5:66","type":""}],"src":"21207:129:66"},{"body":{"nativeSrc":"21656:725:66","nodeType":"YulBlock","src":"21656:725:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"21673:9:66","nodeType":"YulIdentifier","src":"21673:9:66"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"21706:6:66","nodeType":"YulIdentifier","src":"21706:6:66"}],"functionName":{"name":"abi_decode_uint32","nativeSrc":"21688:17:66","nodeType":"YulIdentifier","src":"21688:17:66"},"nativeSrc":"21688:25:66","nodeType":"YulFunctionCall","src":"21688:25:66"},{"kind":"number","nativeSrc":"21715:10:66","nodeType":"YulLiteral","src":"21715:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"21684:3:66","nodeType":"YulIdentifier","src":"21684:3:66"},"nativeSrc":"21684:42:66","nodeType":"YulFunctionCall","src":"21684:42:66"}],"functionName":{"name":"mstore","nativeSrc":"21666:6:66","nodeType":"YulIdentifier","src":"21666:6:66"},"nativeSrc":"21666:61:66","nodeType":"YulFunctionCall","src":"21666:61:66"},"nativeSrc":"21666:61:66","nodeType":"YulExpressionStatement","src":"21666:61:66"},{"nativeSrc":"21736:14:66","nodeType":"YulVariableDeclaration","src":"21736:14:66","value":{"kind":"number","nativeSrc":"21749:1:66","nodeType":"YulLiteral","src":"21749:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"21740:5:66","nodeType":"YulTypedName","src":"21740:5:66","type":""}]},{"nativeSrc":"21759:40:66","nodeType":"YulAssignment","src":"21759:40:66","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"21785:6:66","nodeType":"YulIdentifier","src":"21785:6:66"},{"kind":"number","nativeSrc":"21793:4:66","nodeType":"YulLiteral","src":"21793:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"21781:3:66","nodeType":"YulIdentifier","src":"21781:3:66"},"nativeSrc":"21781:17:66","nodeType":"YulFunctionCall","src":"21781:17:66"}],"functionName":{"name":"calldataload","nativeSrc":"21768:12:66","nodeType":"YulIdentifier","src":"21768:12:66"},"nativeSrc":"21768:31:66","nodeType":"YulFunctionCall","src":"21768:31:66"},"variableNames":[{"name":"value","nativeSrc":"21759:5:66","nodeType":"YulIdentifier","src":"21759:5:66"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21819:9:66","nodeType":"YulIdentifier","src":"21819:9:66"},{"kind":"number","nativeSrc":"21830:4:66","nodeType":"YulLiteral","src":"21830:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"21815:3:66","nodeType":"YulIdentifier","src":"21815:3:66"},"nativeSrc":"21815:20:66","nodeType":"YulFunctionCall","src":"21815:20:66"},{"name":"value","nativeSrc":"21837:5:66","nodeType":"YulIdentifier","src":"21837:5:66"}],"functionName":{"name":"mstore","nativeSrc":"21808:6:66","nodeType":"YulIdentifier","src":"21808:6:66"},"nativeSrc":"21808:35:66","nodeType":"YulFunctionCall","src":"21808:35:66"},"nativeSrc":"21808:35:66","nodeType":"YulExpressionStatement","src":"21808:35:66"},{"nativeSrc":"21852:46:66","nodeType":"YulVariableDeclaration","src":"21852:46:66","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"21884:6:66","nodeType":"YulIdentifier","src":"21884:6:66"},{"kind":"number","nativeSrc":"21892:4:66","nodeType":"YulLiteral","src":"21892:4:66","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"21880:3:66","nodeType":"YulIdentifier","src":"21880:3:66"},"nativeSrc":"21880:17:66","nodeType":"YulFunctionCall","src":"21880:17:66"}],"functionName":{"name":"calldataload","nativeSrc":"21867:12:66","nodeType":"YulIdentifier","src":"21867:12:66"},"nativeSrc":"21867:31:66","nodeType":"YulFunctionCall","src":"21867:31:66"},"variables":[{"name":"value_1","nativeSrc":"21856:7:66","nodeType":"YulTypedName","src":"21856:7:66","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"21931:7:66","nodeType":"YulIdentifier","src":"21931:7:66"}],"functionName":{"name":"validator_revert_uint64","nativeSrc":"21907:23:66","nodeType":"YulIdentifier","src":"21907:23:66"},"nativeSrc":"21907:32:66","nodeType":"YulFunctionCall","src":"21907:32:66"},"nativeSrc":"21907:32:66","nodeType":"YulExpressionStatement","src":"21907:32:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"21959:9:66","nodeType":"YulIdentifier","src":"21959:9:66"},{"kind":"number","nativeSrc":"21970:4:66","nodeType":"YulLiteral","src":"21970:4:66","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"21955:3:66","nodeType":"YulIdentifier","src":"21955:3:66"},"nativeSrc":"21955:20:66","nodeType":"YulFunctionCall","src":"21955:20:66"},{"arguments":[{"name":"value_1","nativeSrc":"21981:7:66","nodeType":"YulIdentifier","src":"21981:7:66"},{"kind":"number","nativeSrc":"21990:18:66","nodeType":"YulLiteral","src":"21990:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"21977:3:66","nodeType":"YulIdentifier","src":"21977:3:66"},"nativeSrc":"21977:32:66","nodeType":"YulFunctionCall","src":"21977:32:66"}],"functionName":{"name":"mstore","nativeSrc":"21948:6:66","nodeType":"YulIdentifier","src":"21948:6:66"},"nativeSrc":"21948:62:66","nodeType":"YulFunctionCall","src":"21948:62:66"},"nativeSrc":"21948:62:66","nodeType":"YulExpressionStatement","src":"21948:62:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22030:9:66","nodeType":"YulIdentifier","src":"22030:9:66"},{"kind":"number","nativeSrc":"22041:2:66","nodeType":"YulLiteral","src":"22041:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"22026:3:66","nodeType":"YulIdentifier","src":"22026:3:66"},"nativeSrc":"22026:18:66","nodeType":"YulFunctionCall","src":"22026:18:66"},{"name":"value1","nativeSrc":"22046:6:66","nodeType":"YulIdentifier","src":"22046:6:66"}],"functionName":{"name":"mstore","nativeSrc":"22019:6:66","nodeType":"YulIdentifier","src":"22019:6:66"},"nativeSrc":"22019:34:66","nodeType":"YulFunctionCall","src":"22019:34:66"},"nativeSrc":"22019:34:66","nodeType":"YulExpressionStatement","src":"22019:34:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22073:9:66","nodeType":"YulIdentifier","src":"22073:9:66"},{"kind":"number","nativeSrc":"22084:3:66","nodeType":"YulLiteral","src":"22084:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"22069:3:66","nodeType":"YulIdentifier","src":"22069:3:66"},"nativeSrc":"22069:19:66","nodeType":"YulFunctionCall","src":"22069:19:66"},{"kind":"number","nativeSrc":"22090:3:66","nodeType":"YulLiteral","src":"22090:3:66","type":"","value":"224"}],"functionName":{"name":"mstore","nativeSrc":"22062:6:66","nodeType":"YulIdentifier","src":"22062:6:66"},"nativeSrc":"22062:32:66","nodeType":"YulFunctionCall","src":"22062:32:66"},"nativeSrc":"22062:32:66","nodeType":"YulExpressionStatement","src":"22062:32:66"},{"nativeSrc":"22103:76:66","nodeType":"YulVariableDeclaration","src":"22103:76:66","value":{"arguments":[{"name":"value2","nativeSrc":"22143:6:66","nodeType":"YulIdentifier","src":"22143:6:66"},{"name":"value3","nativeSrc":"22151:6:66","nodeType":"YulIdentifier","src":"22151:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"22163:9:66","nodeType":"YulIdentifier","src":"22163:9:66"},{"kind":"number","nativeSrc":"22174:3:66","nodeType":"YulLiteral","src":"22174:3:66","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"22159:3:66","nodeType":"YulIdentifier","src":"22159:3:66"},"nativeSrc":"22159:19:66","nodeType":"YulFunctionCall","src":"22159:19:66"}],"functionName":{"name":"abi_encode_bytes_calldata","nativeSrc":"22117:25:66","nodeType":"YulIdentifier","src":"22117:25:66"},"nativeSrc":"22117:62:66","nodeType":"YulFunctionCall","src":"22117:62:66"},"variables":[{"name":"tail_1","nativeSrc":"22107:6:66","nodeType":"YulTypedName","src":"22107:6:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22199:9:66","nodeType":"YulIdentifier","src":"22199:9:66"},{"kind":"number","nativeSrc":"22210:3:66","nodeType":"YulLiteral","src":"22210:3:66","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"22195:3:66","nodeType":"YulIdentifier","src":"22195:3:66"},"nativeSrc":"22195:19:66","nodeType":"YulFunctionCall","src":"22195:19:66"},{"arguments":[{"name":"value4","nativeSrc":"22220:6:66","nodeType":"YulIdentifier","src":"22220:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"22236:3:66","nodeType":"YulLiteral","src":"22236:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"22241:1:66","nodeType":"YulLiteral","src":"22241:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"22232:3:66","nodeType":"YulIdentifier","src":"22232:3:66"},"nativeSrc":"22232:11:66","nodeType":"YulFunctionCall","src":"22232:11:66"},{"kind":"number","nativeSrc":"22245:1:66","nodeType":"YulLiteral","src":"22245:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"22228:3:66","nodeType":"YulIdentifier","src":"22228:3:66"},"nativeSrc":"22228:19:66","nodeType":"YulFunctionCall","src":"22228:19:66"}],"functionName":{"name":"and","nativeSrc":"22216:3:66","nodeType":"YulIdentifier","src":"22216:3:66"},"nativeSrc":"22216:32:66","nodeType":"YulFunctionCall","src":"22216:32:66"}],"functionName":{"name":"mstore","nativeSrc":"22188:6:66","nodeType":"YulIdentifier","src":"22188:6:66"},"nativeSrc":"22188:61:66","nodeType":"YulFunctionCall","src":"22188:61:66"},"nativeSrc":"22188:61:66","nodeType":"YulExpressionStatement","src":"22188:61:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"22269:9:66","nodeType":"YulIdentifier","src":"22269:9:66"},{"kind":"number","nativeSrc":"22280:3:66","nodeType":"YulLiteral","src":"22280:3:66","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"22265:3:66","nodeType":"YulIdentifier","src":"22265:3:66"},"nativeSrc":"22265:19:66","nodeType":"YulFunctionCall","src":"22265:19:66"},{"arguments":[{"name":"tail_1","nativeSrc":"22290:6:66","nodeType":"YulIdentifier","src":"22290:6:66"},{"name":"headStart","nativeSrc":"22298:9:66","nodeType":"YulIdentifier","src":"22298:9:66"}],"functionName":{"name":"sub","nativeSrc":"22286:3:66","nodeType":"YulIdentifier","src":"22286:3:66"},"nativeSrc":"22286:22:66","nodeType":"YulFunctionCall","src":"22286:22:66"}],"functionName":{"name":"mstore","nativeSrc":"22258:6:66","nodeType":"YulIdentifier","src":"22258:6:66"},"nativeSrc":"22258:51:66","nodeType":"YulFunctionCall","src":"22258:51:66"},"nativeSrc":"22258:51:66","nodeType":"YulExpressionStatement","src":"22258:51:66"},{"nativeSrc":"22318:57:66","nodeType":"YulAssignment","src":"22318:57:66","value":{"arguments":[{"name":"value5","nativeSrc":"22352:6:66","nodeType":"YulIdentifier","src":"22352:6:66"},{"name":"value6","nativeSrc":"22360:6:66","nodeType":"YulIdentifier","src":"22360:6:66"},{"name":"tail_1","nativeSrc":"22368:6:66","nodeType":"YulIdentifier","src":"22368:6:66"}],"functionName":{"name":"abi_encode_bytes_calldata","nativeSrc":"22326:25:66","nodeType":"YulIdentifier","src":"22326:25:66"},"nativeSrc":"22326:49:66","nodeType":"YulFunctionCall","src":"22326:49:66"},"variableNames":[{"name":"tail","nativeSrc":"22318:4:66","nodeType":"YulIdentifier","src":"22318:4:66"}]}]},"name":"abi_encode_tuple_t_struct$_Origin_$40_calldata_ptr_t_bytes32_t_bytes_calldata_ptr_t_address_t_bytes_calldata_ptr__to_t_struct$_Origin_$40_memory_ptr_t_bytes32_t_bytes_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"21341:1040:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"21577:9:66","nodeType":"YulTypedName","src":"21577:9:66","type":""},{"name":"value6","nativeSrc":"21588:6:66","nodeType":"YulTypedName","src":"21588:6:66","type":""},{"name":"value5","nativeSrc":"21596:6:66","nodeType":"YulTypedName","src":"21596:6:66","type":""},{"name":"value4","nativeSrc":"21604:6:66","nodeType":"YulTypedName","src":"21604:6:66","type":""},{"name":"value3","nativeSrc":"21612:6:66","nodeType":"YulTypedName","src":"21612:6:66","type":""},{"name":"value2","nativeSrc":"21620:6:66","nodeType":"YulTypedName","src":"21620:6:66","type":""},{"name":"value1","nativeSrc":"21628:6:66","nodeType":"YulTypedName","src":"21628:6:66","type":""},{"name":"value0","nativeSrc":"21636:6:66","nodeType":"YulTypedName","src":"21636:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"21647:4:66","nodeType":"YulTypedName","src":"21647:4:66","type":""}],"src":"21341:1040:66"},{"body":{"nativeSrc":"22476:577:66","nodeType":"YulBlock","src":"22476:577:66","statements":[{"body":{"nativeSrc":"22522:16:66","nodeType":"YulBlock","src":"22522:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22531:1:66","nodeType":"YulLiteral","src":"22531:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"22534:1:66","nodeType":"YulLiteral","src":"22534:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"22524:6:66","nodeType":"YulIdentifier","src":"22524:6:66"},"nativeSrc":"22524:12:66","nodeType":"YulFunctionCall","src":"22524:12:66"},"nativeSrc":"22524:12:66","nodeType":"YulExpressionStatement","src":"22524:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"22497:7:66","nodeType":"YulIdentifier","src":"22497:7:66"},{"name":"headStart","nativeSrc":"22506:9:66","nodeType":"YulIdentifier","src":"22506:9:66"}],"functionName":{"name":"sub","nativeSrc":"22493:3:66","nodeType":"YulIdentifier","src":"22493:3:66"},"nativeSrc":"22493:23:66","nodeType":"YulFunctionCall","src":"22493:23:66"},{"kind":"number","nativeSrc":"22518:2:66","nodeType":"YulLiteral","src":"22518:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"22489:3:66","nodeType":"YulIdentifier","src":"22489:3:66"},"nativeSrc":"22489:32:66","nodeType":"YulFunctionCall","src":"22489:32:66"},"nativeSrc":"22486:52:66","nodeType":"YulIf","src":"22486:52:66"},{"nativeSrc":"22547:30:66","nodeType":"YulVariableDeclaration","src":"22547:30:66","value":{"arguments":[{"name":"headStart","nativeSrc":"22567:9:66","nodeType":"YulIdentifier","src":"22567:9:66"}],"functionName":{"name":"mload","nativeSrc":"22561:5:66","nodeType":"YulIdentifier","src":"22561:5:66"},"nativeSrc":"22561:16:66","nodeType":"YulFunctionCall","src":"22561:16:66"},"variables":[{"name":"offset","nativeSrc":"22551:6:66","nodeType":"YulTypedName","src":"22551:6:66","type":""}]},{"body":{"nativeSrc":"22620:16:66","nodeType":"YulBlock","src":"22620:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22629:1:66","nodeType":"YulLiteral","src":"22629:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"22632:1:66","nodeType":"YulLiteral","src":"22632:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"22622:6:66","nodeType":"YulIdentifier","src":"22622:6:66"},"nativeSrc":"22622:12:66","nodeType":"YulFunctionCall","src":"22622:12:66"},"nativeSrc":"22622:12:66","nodeType":"YulExpressionStatement","src":"22622:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"22592:6:66","nodeType":"YulIdentifier","src":"22592:6:66"},{"kind":"number","nativeSrc":"22600:18:66","nodeType":"YulLiteral","src":"22600:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"22589:2:66","nodeType":"YulIdentifier","src":"22589:2:66"},"nativeSrc":"22589:30:66","nodeType":"YulFunctionCall","src":"22589:30:66"},"nativeSrc":"22586:50:66","nodeType":"YulIf","src":"22586:50:66"},{"nativeSrc":"22645:32:66","nodeType":"YulVariableDeclaration","src":"22645:32:66","value":{"arguments":[{"name":"headStart","nativeSrc":"22659:9:66","nodeType":"YulIdentifier","src":"22659:9:66"},{"name":"offset","nativeSrc":"22670:6:66","nodeType":"YulIdentifier","src":"22670:6:66"}],"functionName":{"name":"add","nativeSrc":"22655:3:66","nodeType":"YulIdentifier","src":"22655:3:66"},"nativeSrc":"22655:22:66","nodeType":"YulFunctionCall","src":"22655:22:66"},"variables":[{"name":"_1","nativeSrc":"22649:2:66","nodeType":"YulTypedName","src":"22649:2:66","type":""}]},{"body":{"nativeSrc":"22725:16:66","nodeType":"YulBlock","src":"22725:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22734:1:66","nodeType":"YulLiteral","src":"22734:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"22737:1:66","nodeType":"YulLiteral","src":"22737:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"22727:6:66","nodeType":"YulIdentifier","src":"22727:6:66"},"nativeSrc":"22727:12:66","nodeType":"YulFunctionCall","src":"22727:12:66"},"nativeSrc":"22727:12:66","nodeType":"YulExpressionStatement","src":"22727:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"22704:2:66","nodeType":"YulIdentifier","src":"22704:2:66"},{"kind":"number","nativeSrc":"22708:4:66","nodeType":"YulLiteral","src":"22708:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"22700:3:66","nodeType":"YulIdentifier","src":"22700:3:66"},"nativeSrc":"22700:13:66","nodeType":"YulFunctionCall","src":"22700:13:66"},{"name":"dataEnd","nativeSrc":"22715:7:66","nodeType":"YulIdentifier","src":"22715:7:66"}],"functionName":{"name":"slt","nativeSrc":"22696:3:66","nodeType":"YulIdentifier","src":"22696:3:66"},"nativeSrc":"22696:27:66","nodeType":"YulFunctionCall","src":"22696:27:66"}],"functionName":{"name":"iszero","nativeSrc":"22689:6:66","nodeType":"YulIdentifier","src":"22689:6:66"},"nativeSrc":"22689:35:66","nodeType":"YulFunctionCall","src":"22689:35:66"},"nativeSrc":"22686:55:66","nodeType":"YulIf","src":"22686:55:66"},{"nativeSrc":"22750:23:66","nodeType":"YulVariableDeclaration","src":"22750:23:66","value":{"arguments":[{"name":"_1","nativeSrc":"22770:2:66","nodeType":"YulIdentifier","src":"22770:2:66"}],"functionName":{"name":"mload","nativeSrc":"22764:5:66","nodeType":"YulIdentifier","src":"22764:5:66"},"nativeSrc":"22764:9:66","nodeType":"YulFunctionCall","src":"22764:9:66"},"variables":[{"name":"length","nativeSrc":"22754:6:66","nodeType":"YulTypedName","src":"22754:6:66","type":""}]},{"nativeSrc":"22782:65:66","nodeType":"YulVariableDeclaration","src":"22782:65:66","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"22839:6:66","nodeType":"YulIdentifier","src":"22839:6:66"}],"functionName":{"name":"array_allocation_size_bytes","nativeSrc":"22811:27:66","nodeType":"YulIdentifier","src":"22811:27:66"},"nativeSrc":"22811:35:66","nodeType":"YulFunctionCall","src":"22811:35:66"}],"functionName":{"name":"allocate_memory","nativeSrc":"22795:15:66","nodeType":"YulIdentifier","src":"22795:15:66"},"nativeSrc":"22795:52:66","nodeType":"YulFunctionCall","src":"22795:52:66"},"variables":[{"name":"array","nativeSrc":"22786:5:66","nodeType":"YulTypedName","src":"22786:5:66","type":""}]},{"expression":{"arguments":[{"name":"array","nativeSrc":"22863:5:66","nodeType":"YulIdentifier","src":"22863:5:66"},{"name":"length","nativeSrc":"22870:6:66","nodeType":"YulIdentifier","src":"22870:6:66"}],"functionName":{"name":"mstore","nativeSrc":"22856:6:66","nodeType":"YulIdentifier","src":"22856:6:66"},"nativeSrc":"22856:21:66","nodeType":"YulFunctionCall","src":"22856:21:66"},"nativeSrc":"22856:21:66","nodeType":"YulExpressionStatement","src":"22856:21:66"},{"body":{"nativeSrc":"22927:16:66","nodeType":"YulBlock","src":"22927:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22936:1:66","nodeType":"YulLiteral","src":"22936:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"22939:1:66","nodeType":"YulLiteral","src":"22939:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"22929:6:66","nodeType":"YulIdentifier","src":"22929:6:66"},"nativeSrc":"22929:12:66","nodeType":"YulFunctionCall","src":"22929:12:66"},"nativeSrc":"22929:12:66","nodeType":"YulExpressionStatement","src":"22929:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"22900:2:66","nodeType":"YulIdentifier","src":"22900:2:66"},{"name":"length","nativeSrc":"22904:6:66","nodeType":"YulIdentifier","src":"22904:6:66"}],"functionName":{"name":"add","nativeSrc":"22896:3:66","nodeType":"YulIdentifier","src":"22896:3:66"},"nativeSrc":"22896:15:66","nodeType":"YulFunctionCall","src":"22896:15:66"},{"kind":"number","nativeSrc":"22913:2:66","nodeType":"YulLiteral","src":"22913:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22892:3:66","nodeType":"YulIdentifier","src":"22892:3:66"},"nativeSrc":"22892:24:66","nodeType":"YulFunctionCall","src":"22892:24:66"},{"name":"dataEnd","nativeSrc":"22918:7:66","nodeType":"YulIdentifier","src":"22918:7:66"}],"functionName":{"name":"gt","nativeSrc":"22889:2:66","nodeType":"YulIdentifier","src":"22889:2:66"},"nativeSrc":"22889:37:66","nodeType":"YulFunctionCall","src":"22889:37:66"},"nativeSrc":"22886:57:66","nodeType":"YulIf","src":"22886:57:66"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"22991:2:66","nodeType":"YulIdentifier","src":"22991:2:66"},{"kind":"number","nativeSrc":"22995:2:66","nodeType":"YulLiteral","src":"22995:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"22987:3:66","nodeType":"YulIdentifier","src":"22987:3:66"},"nativeSrc":"22987:11:66","nodeType":"YulFunctionCall","src":"22987:11:66"},{"arguments":[{"name":"array","nativeSrc":"23004:5:66","nodeType":"YulIdentifier","src":"23004:5:66"},{"kind":"number","nativeSrc":"23011:2:66","nodeType":"YulLiteral","src":"23011:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23000:3:66","nodeType":"YulIdentifier","src":"23000:3:66"},"nativeSrc":"23000:14:66","nodeType":"YulFunctionCall","src":"23000:14:66"},{"name":"length","nativeSrc":"23016:6:66","nodeType":"YulIdentifier","src":"23016:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"22952:34:66","nodeType":"YulIdentifier","src":"22952:34:66"},"nativeSrc":"22952:71:66","nodeType":"YulFunctionCall","src":"22952:71:66"},"nativeSrc":"22952:71:66","nodeType":"YulExpressionStatement","src":"22952:71:66"},{"nativeSrc":"23032:15:66","nodeType":"YulAssignment","src":"23032:15:66","value":{"name":"array","nativeSrc":"23042:5:66","nodeType":"YulIdentifier","src":"23042:5:66"},"variableNames":[{"name":"value0","nativeSrc":"23032:6:66","nodeType":"YulIdentifier","src":"23032:6:66"}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nativeSrc":"22386:667:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"22442:9:66","nodeType":"YulTypedName","src":"22442:9:66","type":""},{"name":"dataEnd","nativeSrc":"22453:7:66","nodeType":"YulTypedName","src":"22453:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"22465:6:66","nodeType":"YulTypedName","src":"22465:6:66","type":""}],"src":"22386:667:66"},{"body":{"nativeSrc":"23187:119:66","nodeType":"YulBlock","src":"23187:119:66","statements":[{"nativeSrc":"23197:26:66","nodeType":"YulAssignment","src":"23197:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"23209:9:66","nodeType":"YulIdentifier","src":"23209:9:66"},{"kind":"number","nativeSrc":"23220:2:66","nodeType":"YulLiteral","src":"23220:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"23205:3:66","nodeType":"YulIdentifier","src":"23205:3:66"},"nativeSrc":"23205:18:66","nodeType":"YulFunctionCall","src":"23205:18:66"},"variableNames":[{"name":"tail","nativeSrc":"23197:4:66","nodeType":"YulIdentifier","src":"23197:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"23239:9:66","nodeType":"YulIdentifier","src":"23239:9:66"},{"name":"value0","nativeSrc":"23250:6:66","nodeType":"YulIdentifier","src":"23250:6:66"}],"functionName":{"name":"mstore","nativeSrc":"23232:6:66","nodeType":"YulIdentifier","src":"23232:6:66"},"nativeSrc":"23232:25:66","nodeType":"YulFunctionCall","src":"23232:25:66"},"nativeSrc":"23232:25:66","nodeType":"YulExpressionStatement","src":"23232:25:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"23277:9:66","nodeType":"YulIdentifier","src":"23277:9:66"},{"kind":"number","nativeSrc":"23288:2:66","nodeType":"YulLiteral","src":"23288:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23273:3:66","nodeType":"YulIdentifier","src":"23273:3:66"},"nativeSrc":"23273:18:66","nodeType":"YulFunctionCall","src":"23273:18:66"},{"name":"value1","nativeSrc":"23293:6:66","nodeType":"YulIdentifier","src":"23293:6:66"}],"functionName":{"name":"mstore","nativeSrc":"23266:6:66","nodeType":"YulIdentifier","src":"23266:6:66"},"nativeSrc":"23266:34:66","nodeType":"YulFunctionCall","src":"23266:34:66"},"nativeSrc":"23266:34:66","nodeType":"YulExpressionStatement","src":"23266:34:66"}]},"name":"abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"23058:248:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23148:9:66","nodeType":"YulTypedName","src":"23148:9:66","type":""},{"name":"value1","nativeSrc":"23159:6:66","nodeType":"YulTypedName","src":"23159:6:66","type":""},{"name":"value0","nativeSrc":"23167:6:66","nodeType":"YulTypedName","src":"23167:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"23178:4:66","nodeType":"YulTypedName","src":"23178:4:66","type":""}],"src":"23058:248:66"},{"body":{"nativeSrc":"23410:93:66","nodeType":"YulBlock","src":"23410:93:66","statements":[{"nativeSrc":"23420:26:66","nodeType":"YulAssignment","src":"23420:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"23432:9:66","nodeType":"YulIdentifier","src":"23432:9:66"},{"kind":"number","nativeSrc":"23443:2:66","nodeType":"YulLiteral","src":"23443:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"23428:3:66","nodeType":"YulIdentifier","src":"23428:3:66"},"nativeSrc":"23428:18:66","nodeType":"YulFunctionCall","src":"23428:18:66"},"variableNames":[{"name":"tail","nativeSrc":"23420:4:66","nodeType":"YulIdentifier","src":"23420:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"23462:9:66","nodeType":"YulIdentifier","src":"23462:9:66"},{"arguments":[{"name":"value0","nativeSrc":"23477:6:66","nodeType":"YulIdentifier","src":"23477:6:66"},{"kind":"number","nativeSrc":"23485:10:66","nodeType":"YulLiteral","src":"23485:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"23473:3:66","nodeType":"YulIdentifier","src":"23473:3:66"},"nativeSrc":"23473:23:66","nodeType":"YulFunctionCall","src":"23473:23:66"}],"functionName":{"name":"mstore","nativeSrc":"23455:6:66","nodeType":"YulIdentifier","src":"23455:6:66"},"nativeSrc":"23455:42:66","nodeType":"YulFunctionCall","src":"23455:42:66"},"nativeSrc":"23455:42:66","nodeType":"YulExpressionStatement","src":"23455:42:66"}]},"name":"abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed","nativeSrc":"23311:192:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23379:9:66","nodeType":"YulTypedName","src":"23379:9:66","type":""},{"name":"value0","nativeSrc":"23390:6:66","nodeType":"YulTypedName","src":"23390:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"23401:4:66","nodeType":"YulTypedName","src":"23401:4:66","type":""}],"src":"23311:192:66"},{"body":{"nativeSrc":"23577:176:66","nodeType":"YulBlock","src":"23577:176:66","statements":[{"body":{"nativeSrc":"23623:16:66","nodeType":"YulBlock","src":"23623:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"23632:1:66","nodeType":"YulLiteral","src":"23632:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"23635:1:66","nodeType":"YulLiteral","src":"23635:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"23625:6:66","nodeType":"YulIdentifier","src":"23625:6:66"},"nativeSrc":"23625:12:66","nodeType":"YulFunctionCall","src":"23625:12:66"},"nativeSrc":"23625:12:66","nodeType":"YulExpressionStatement","src":"23625:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"23598:7:66","nodeType":"YulIdentifier","src":"23598:7:66"},{"name":"headStart","nativeSrc":"23607:9:66","nodeType":"YulIdentifier","src":"23607:9:66"}],"functionName":{"name":"sub","nativeSrc":"23594:3:66","nodeType":"YulIdentifier","src":"23594:3:66"},"nativeSrc":"23594:23:66","nodeType":"YulFunctionCall","src":"23594:23:66"},{"kind":"number","nativeSrc":"23619:2:66","nodeType":"YulLiteral","src":"23619:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"23590:3:66","nodeType":"YulIdentifier","src":"23590:3:66"},"nativeSrc":"23590:32:66","nodeType":"YulFunctionCall","src":"23590:32:66"},"nativeSrc":"23587:52:66","nodeType":"YulIf","src":"23587:52:66"},{"nativeSrc":"23648:36:66","nodeType":"YulVariableDeclaration","src":"23648:36:66","value":{"arguments":[{"name":"headStart","nativeSrc":"23674:9:66","nodeType":"YulIdentifier","src":"23674:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"23661:12:66","nodeType":"YulIdentifier","src":"23661:12:66"},"nativeSrc":"23661:23:66","nodeType":"YulFunctionCall","src":"23661:23:66"},"variables":[{"name":"value","nativeSrc":"23652:5:66","nodeType":"YulTypedName","src":"23652:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"23717:5:66","nodeType":"YulIdentifier","src":"23717:5:66"}],"functionName":{"name":"validator_revert_uint64","nativeSrc":"23693:23:66","nodeType":"YulIdentifier","src":"23693:23:66"},"nativeSrc":"23693:30:66","nodeType":"YulFunctionCall","src":"23693:30:66"},"nativeSrc":"23693:30:66","nodeType":"YulExpressionStatement","src":"23693:30:66"},{"nativeSrc":"23732:15:66","nodeType":"YulAssignment","src":"23732:15:66","value":{"name":"value","nativeSrc":"23742:5:66","nodeType":"YulIdentifier","src":"23742:5:66"},"variableNames":[{"name":"value0","nativeSrc":"23732:6:66","nodeType":"YulIdentifier","src":"23732:6:66"}]}]},"name":"abi_decode_tuple_t_uint64","nativeSrc":"23508:245:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23543:9:66","nodeType":"YulTypedName","src":"23543:9:66","type":""},{"name":"dataEnd","nativeSrc":"23554:7:66","nodeType":"YulTypedName","src":"23554:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"23566:6:66","nodeType":"YulTypedName","src":"23566:6:66","type":""}],"src":"23508:245:66"},{"body":{"nativeSrc":"23968:269:66","nodeType":"YulBlock","src":"23968:269:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"23985:9:66","nodeType":"YulIdentifier","src":"23985:9:66"},{"arguments":[{"name":"value0","nativeSrc":"24000:6:66","nodeType":"YulIdentifier","src":"24000:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"24016:3:66","nodeType":"YulLiteral","src":"24016:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"24021:1:66","nodeType":"YulLiteral","src":"24021:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"24012:3:66","nodeType":"YulIdentifier","src":"24012:3:66"},"nativeSrc":"24012:11:66","nodeType":"YulFunctionCall","src":"24012:11:66"},{"kind":"number","nativeSrc":"24025:1:66","nodeType":"YulLiteral","src":"24025:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"24008:3:66","nodeType":"YulIdentifier","src":"24008:3:66"},"nativeSrc":"24008:19:66","nodeType":"YulFunctionCall","src":"24008:19:66"}],"functionName":{"name":"and","nativeSrc":"23996:3:66","nodeType":"YulIdentifier","src":"23996:3:66"},"nativeSrc":"23996:32:66","nodeType":"YulFunctionCall","src":"23996:32:66"}],"functionName":{"name":"mstore","nativeSrc":"23978:6:66","nodeType":"YulIdentifier","src":"23978:6:66"},"nativeSrc":"23978:51:66","nodeType":"YulFunctionCall","src":"23978:51:66"},"nativeSrc":"23978:51:66","nodeType":"YulExpressionStatement","src":"23978:51:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24049:9:66","nodeType":"YulIdentifier","src":"24049:9:66"},{"kind":"number","nativeSrc":"24060:2:66","nodeType":"YulLiteral","src":"24060:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24045:3:66","nodeType":"YulIdentifier","src":"24045:3:66"},"nativeSrc":"24045:18:66","nodeType":"YulFunctionCall","src":"24045:18:66"},{"name":"value1","nativeSrc":"24065:6:66","nodeType":"YulIdentifier","src":"24065:6:66"}],"functionName":{"name":"mstore","nativeSrc":"24038:6:66","nodeType":"YulIdentifier","src":"24038:6:66"},"nativeSrc":"24038:34:66","nodeType":"YulFunctionCall","src":"24038:34:66"},"nativeSrc":"24038:34:66","nodeType":"YulExpressionStatement","src":"24038:34:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24092:9:66","nodeType":"YulIdentifier","src":"24092:9:66"},{"kind":"number","nativeSrc":"24103:2:66","nodeType":"YulLiteral","src":"24103:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"24088:3:66","nodeType":"YulIdentifier","src":"24088:3:66"},"nativeSrc":"24088:18:66","nodeType":"YulFunctionCall","src":"24088:18:66"},{"arguments":[{"name":"value2","nativeSrc":"24112:6:66","nodeType":"YulIdentifier","src":"24112:6:66"},{"kind":"number","nativeSrc":"24120:6:66","nodeType":"YulLiteral","src":"24120:6:66","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"24108:3:66","nodeType":"YulIdentifier","src":"24108:3:66"},"nativeSrc":"24108:19:66","nodeType":"YulFunctionCall","src":"24108:19:66"}],"functionName":{"name":"mstore","nativeSrc":"24081:6:66","nodeType":"YulIdentifier","src":"24081:6:66"},"nativeSrc":"24081:47:66","nodeType":"YulFunctionCall","src":"24081:47:66"},"nativeSrc":"24081:47:66","nodeType":"YulExpressionStatement","src":"24081:47:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24148:9:66","nodeType":"YulIdentifier","src":"24148:9:66"},{"kind":"number","nativeSrc":"24159:2:66","nodeType":"YulLiteral","src":"24159:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"24144:3:66","nodeType":"YulIdentifier","src":"24144:3:66"},"nativeSrc":"24144:18:66","nodeType":"YulFunctionCall","src":"24144:18:66"},{"kind":"number","nativeSrc":"24164:3:66","nodeType":"YulLiteral","src":"24164:3:66","type":"","value":"128"}],"functionName":{"name":"mstore","nativeSrc":"24137:6:66","nodeType":"YulIdentifier","src":"24137:6:66"},"nativeSrc":"24137:31:66","nodeType":"YulFunctionCall","src":"24137:31:66"},"nativeSrc":"24137:31:66","nodeType":"YulExpressionStatement","src":"24137:31:66"},{"nativeSrc":"24177:54:66","nodeType":"YulAssignment","src":"24177:54:66","value":{"arguments":[{"name":"value3","nativeSrc":"24203:6:66","nodeType":"YulIdentifier","src":"24203:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"24215:9:66","nodeType":"YulIdentifier","src":"24215:9:66"},{"kind":"number","nativeSrc":"24226:3:66","nodeType":"YulLiteral","src":"24226:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"24211:3:66","nodeType":"YulIdentifier","src":"24211:3:66"},"nativeSrc":"24211:19:66","nodeType":"YulFunctionCall","src":"24211:19:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"24185:17:66","nodeType":"YulIdentifier","src":"24185:17:66"},"nativeSrc":"24185:46:66","nodeType":"YulFunctionCall","src":"24185:46:66"},"variableNames":[{"name":"tail","nativeSrc":"24177:4:66","nodeType":"YulIdentifier","src":"24177:4:66"}]}]},"name":"abi_encode_tuple_t_address_t_bytes32_t_rational_0_by_1_t_bytes_memory_ptr__to_t_address_t_bytes32_t_uint16_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"23758:479:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"23913:9:66","nodeType":"YulTypedName","src":"23913:9:66","type":""},{"name":"value3","nativeSrc":"23924:6:66","nodeType":"YulTypedName","src":"23924:6:66","type":""},{"name":"value2","nativeSrc":"23932:6:66","nodeType":"YulTypedName","src":"23932:6:66","type":""},{"name":"value1","nativeSrc":"23940:6:66","nodeType":"YulTypedName","src":"23940:6:66","type":""},{"name":"value0","nativeSrc":"23948:6:66","nodeType":"YulTypedName","src":"23948:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"23959:4:66","nodeType":"YulTypedName","src":"23959:4:66","type":""}],"src":"23758:479:66"},{"body":{"nativeSrc":"24369:136:66","nodeType":"YulBlock","src":"24369:136:66","statements":[{"nativeSrc":"24379:26:66","nodeType":"YulAssignment","src":"24379:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"24391:9:66","nodeType":"YulIdentifier","src":"24391:9:66"},{"kind":"number","nativeSrc":"24402:2:66","nodeType":"YulLiteral","src":"24402:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"24387:3:66","nodeType":"YulIdentifier","src":"24387:3:66"},"nativeSrc":"24387:18:66","nodeType":"YulFunctionCall","src":"24387:18:66"},"variableNames":[{"name":"tail","nativeSrc":"24379:4:66","nodeType":"YulIdentifier","src":"24379:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"24421:9:66","nodeType":"YulIdentifier","src":"24421:9:66"},{"arguments":[{"name":"value0","nativeSrc":"24436:6:66","nodeType":"YulIdentifier","src":"24436:6:66"},{"kind":"number","nativeSrc":"24444:10:66","nodeType":"YulLiteral","src":"24444:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"24432:3:66","nodeType":"YulIdentifier","src":"24432:3:66"},"nativeSrc":"24432:23:66","nodeType":"YulFunctionCall","src":"24432:23:66"}],"functionName":{"name":"mstore","nativeSrc":"24414:6:66","nodeType":"YulIdentifier","src":"24414:6:66"},"nativeSrc":"24414:42:66","nodeType":"YulFunctionCall","src":"24414:42:66"},"nativeSrc":"24414:42:66","nodeType":"YulExpressionStatement","src":"24414:42:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24476:9:66","nodeType":"YulIdentifier","src":"24476:9:66"},{"kind":"number","nativeSrc":"24487:2:66","nodeType":"YulLiteral","src":"24487:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24472:3:66","nodeType":"YulIdentifier","src":"24472:3:66"},"nativeSrc":"24472:18:66","nodeType":"YulFunctionCall","src":"24472:18:66"},{"name":"value1","nativeSrc":"24492:6:66","nodeType":"YulIdentifier","src":"24492:6:66"}],"functionName":{"name":"mstore","nativeSrc":"24465:6:66","nodeType":"YulIdentifier","src":"24465:6:66"},"nativeSrc":"24465:34:66","nodeType":"YulFunctionCall","src":"24465:34:66"},"nativeSrc":"24465:34:66","nodeType":"YulExpressionStatement","src":"24465:34:66"}]},"name":"abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed","nativeSrc":"24242:263:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24330:9:66","nodeType":"YulTypedName","src":"24330:9:66","type":""},{"name":"value1","nativeSrc":"24341:6:66","nodeType":"YulTypedName","src":"24341:6:66","type":""},{"name":"value0","nativeSrc":"24349:6:66","nodeType":"YulTypedName","src":"24349:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"24360:4:66","nodeType":"YulTypedName","src":"24360:4:66","type":""}],"src":"24242:263:66"},{"body":{"nativeSrc":"24667:188:66","nodeType":"YulBlock","src":"24667:188:66","statements":[{"nativeSrc":"24677:26:66","nodeType":"YulAssignment","src":"24677:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"24689:9:66","nodeType":"YulIdentifier","src":"24689:9:66"},{"kind":"number","nativeSrc":"24700:2:66","nodeType":"YulLiteral","src":"24700:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"24685:3:66","nodeType":"YulIdentifier","src":"24685:3:66"},"nativeSrc":"24685:18:66","nodeType":"YulFunctionCall","src":"24685:18:66"},"variableNames":[{"name":"tail","nativeSrc":"24677:4:66","nodeType":"YulIdentifier","src":"24677:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"24719:9:66","nodeType":"YulIdentifier","src":"24719:9:66"},{"arguments":[{"name":"value0","nativeSrc":"24734:6:66","nodeType":"YulIdentifier","src":"24734:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"24750:3:66","nodeType":"YulLiteral","src":"24750:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"24755:1:66","nodeType":"YulLiteral","src":"24755:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"24746:3:66","nodeType":"YulIdentifier","src":"24746:3:66"},"nativeSrc":"24746:11:66","nodeType":"YulFunctionCall","src":"24746:11:66"},{"kind":"number","nativeSrc":"24759:1:66","nodeType":"YulLiteral","src":"24759:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"24742:3:66","nodeType":"YulIdentifier","src":"24742:3:66"},"nativeSrc":"24742:19:66","nodeType":"YulFunctionCall","src":"24742:19:66"}],"functionName":{"name":"and","nativeSrc":"24730:3:66","nodeType":"YulIdentifier","src":"24730:3:66"},"nativeSrc":"24730:32:66","nodeType":"YulFunctionCall","src":"24730:32:66"}],"functionName":{"name":"mstore","nativeSrc":"24712:6:66","nodeType":"YulIdentifier","src":"24712:6:66"},"nativeSrc":"24712:51:66","nodeType":"YulFunctionCall","src":"24712:51:66"},"nativeSrc":"24712:51:66","nodeType":"YulExpressionStatement","src":"24712:51:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24783:9:66","nodeType":"YulIdentifier","src":"24783:9:66"},{"kind":"number","nativeSrc":"24794:2:66","nodeType":"YulLiteral","src":"24794:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"24779:3:66","nodeType":"YulIdentifier","src":"24779:3:66"},"nativeSrc":"24779:18:66","nodeType":"YulFunctionCall","src":"24779:18:66"},{"name":"value1","nativeSrc":"24799:6:66","nodeType":"YulIdentifier","src":"24799:6:66"}],"functionName":{"name":"mstore","nativeSrc":"24772:6:66","nodeType":"YulIdentifier","src":"24772:6:66"},"nativeSrc":"24772:34:66","nodeType":"YulFunctionCall","src":"24772:34:66"},"nativeSrc":"24772:34:66","nodeType":"YulExpressionStatement","src":"24772:34:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"24826:9:66","nodeType":"YulIdentifier","src":"24826:9:66"},{"kind":"number","nativeSrc":"24837:2:66","nodeType":"YulLiteral","src":"24837:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"24822:3:66","nodeType":"YulIdentifier","src":"24822:3:66"},"nativeSrc":"24822:18:66","nodeType":"YulFunctionCall","src":"24822:18:66"},{"name":"value2","nativeSrc":"24842:6:66","nodeType":"YulIdentifier","src":"24842:6:66"}],"functionName":{"name":"mstore","nativeSrc":"24815:6:66","nodeType":"YulIdentifier","src":"24815:6:66"},"nativeSrc":"24815:34:66","nodeType":"YulFunctionCall","src":"24815:34:66"},"nativeSrc":"24815:34:66","nodeType":"YulExpressionStatement","src":"24815:34:66"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"24510:345:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24620:9:66","nodeType":"YulTypedName","src":"24620:9:66","type":""},{"name":"value2","nativeSrc":"24631:6:66","nodeType":"YulTypedName","src":"24631:6:66","type":""},{"name":"value1","nativeSrc":"24639:6:66","nodeType":"YulTypedName","src":"24639:6:66","type":""},{"name":"value0","nativeSrc":"24647:6:66","nodeType":"YulTypedName","src":"24647:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"24658:4:66","nodeType":"YulTypedName","src":"24658:4:66","type":""}],"src":"24510:345:66"},{"body":{"nativeSrc":"25025:214:66","nodeType":"YulBlock","src":"25025:214:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"25042:9:66","nodeType":"YulIdentifier","src":"25042:9:66"},{"kind":"number","nativeSrc":"25053:2:66","nodeType":"YulLiteral","src":"25053:2:66","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"25035:6:66","nodeType":"YulIdentifier","src":"25035:6:66"},"nativeSrc":"25035:21:66","nodeType":"YulFunctionCall","src":"25035:21:66"},"nativeSrc":"25035:21:66","nodeType":"YulExpressionStatement","src":"25035:21:66"},{"nativeSrc":"25065:59:66","nodeType":"YulVariableDeclaration","src":"25065:59:66","value":{"arguments":[{"name":"value0","nativeSrc":"25097:6:66","nodeType":"YulIdentifier","src":"25097:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"25109:9:66","nodeType":"YulIdentifier","src":"25109:9:66"},{"kind":"number","nativeSrc":"25120:2:66","nodeType":"YulLiteral","src":"25120:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"25105:3:66","nodeType":"YulIdentifier","src":"25105:3:66"},"nativeSrc":"25105:18:66","nodeType":"YulFunctionCall","src":"25105:18:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"25079:17:66","nodeType":"YulIdentifier","src":"25079:17:66"},"nativeSrc":"25079:45:66","nodeType":"YulFunctionCall","src":"25079:45:66"},"variables":[{"name":"tail_1","nativeSrc":"25069:6:66","nodeType":"YulTypedName","src":"25069:6:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25144:9:66","nodeType":"YulIdentifier","src":"25144:9:66"},{"kind":"number","nativeSrc":"25155:2:66","nodeType":"YulLiteral","src":"25155:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"25140:3:66","nodeType":"YulIdentifier","src":"25140:3:66"},"nativeSrc":"25140:18:66","nodeType":"YulFunctionCall","src":"25140:18:66"},{"arguments":[{"name":"tail_1","nativeSrc":"25164:6:66","nodeType":"YulIdentifier","src":"25164:6:66"},{"name":"headStart","nativeSrc":"25172:9:66","nodeType":"YulIdentifier","src":"25172:9:66"}],"functionName":{"name":"sub","nativeSrc":"25160:3:66","nodeType":"YulIdentifier","src":"25160:3:66"},"nativeSrc":"25160:22:66","nodeType":"YulFunctionCall","src":"25160:22:66"}],"functionName":{"name":"mstore","nativeSrc":"25133:6:66","nodeType":"YulIdentifier","src":"25133:6:66"},"nativeSrc":"25133:50:66","nodeType":"YulFunctionCall","src":"25133:50:66"},"nativeSrc":"25133:50:66","nodeType":"YulExpressionStatement","src":"25133:50:66"},{"nativeSrc":"25192:41:66","nodeType":"YulAssignment","src":"25192:41:66","value":{"arguments":[{"name":"value1","nativeSrc":"25218:6:66","nodeType":"YulIdentifier","src":"25218:6:66"},{"name":"tail_1","nativeSrc":"25226:6:66","nodeType":"YulIdentifier","src":"25226:6:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"25200:17:66","nodeType":"YulIdentifier","src":"25200:17:66"},"nativeSrc":"25200:33:66","nodeType":"YulFunctionCall","src":"25200:33:66"},"variableNames":[{"name":"tail","nativeSrc":"25192:4:66","nodeType":"YulIdentifier","src":"25192:4:66"}]}]},"name":"abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"24860:379:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"24986:9:66","nodeType":"YulTypedName","src":"24986:9:66","type":""},{"name":"value1","nativeSrc":"24997:6:66","nodeType":"YulTypedName","src":"24997:6:66","type":""},{"name":"value0","nativeSrc":"25005:6:66","nodeType":"YulTypedName","src":"25005:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"25016:4:66","nodeType":"YulTypedName","src":"25016:4:66","type":""}],"src":"24860:379:66"},{"body":{"nativeSrc":"25322:167:66","nodeType":"YulBlock","src":"25322:167:66","statements":[{"body":{"nativeSrc":"25368:16:66","nodeType":"YulBlock","src":"25368:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"25377:1:66","nodeType":"YulLiteral","src":"25377:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"25380:1:66","nodeType":"YulLiteral","src":"25380:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"25370:6:66","nodeType":"YulIdentifier","src":"25370:6:66"},"nativeSrc":"25370:12:66","nodeType":"YulFunctionCall","src":"25370:12:66"},"nativeSrc":"25370:12:66","nodeType":"YulExpressionStatement","src":"25370:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"25343:7:66","nodeType":"YulIdentifier","src":"25343:7:66"},{"name":"headStart","nativeSrc":"25352:9:66","nodeType":"YulIdentifier","src":"25352:9:66"}],"functionName":{"name":"sub","nativeSrc":"25339:3:66","nodeType":"YulIdentifier","src":"25339:3:66"},"nativeSrc":"25339:23:66","nodeType":"YulFunctionCall","src":"25339:23:66"},{"kind":"number","nativeSrc":"25364:2:66","nodeType":"YulLiteral","src":"25364:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"25335:3:66","nodeType":"YulIdentifier","src":"25335:3:66"},"nativeSrc":"25335:32:66","nodeType":"YulFunctionCall","src":"25335:32:66"},"nativeSrc":"25332:52:66","nodeType":"YulIf","src":"25332:52:66"},{"nativeSrc":"25393:29:66","nodeType":"YulVariableDeclaration","src":"25393:29:66","value":{"arguments":[{"name":"headStart","nativeSrc":"25412:9:66","nodeType":"YulIdentifier","src":"25412:9:66"}],"functionName":{"name":"mload","nativeSrc":"25406:5:66","nodeType":"YulIdentifier","src":"25406:5:66"},"nativeSrc":"25406:16:66","nodeType":"YulFunctionCall","src":"25406:16:66"},"variables":[{"name":"value","nativeSrc":"25397:5:66","nodeType":"YulTypedName","src":"25397:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"25453:5:66","nodeType":"YulIdentifier","src":"25453:5:66"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"25431:21:66","nodeType":"YulIdentifier","src":"25431:21:66"},"nativeSrc":"25431:28:66","nodeType":"YulFunctionCall","src":"25431:28:66"},"nativeSrc":"25431:28:66","nodeType":"YulExpressionStatement","src":"25431:28:66"},{"nativeSrc":"25468:15:66","nodeType":"YulAssignment","src":"25468:15:66","value":{"name":"value","nativeSrc":"25478:5:66","nodeType":"YulIdentifier","src":"25478:5:66"},"variableNames":[{"name":"value0","nativeSrc":"25468:6:66","nodeType":"YulIdentifier","src":"25468:6:66"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"25244:245:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"25288:9:66","nodeType":"YulTypedName","src":"25288:9:66","type":""},{"name":"dataEnd","nativeSrc":"25299:7:66","nodeType":"YulTypedName","src":"25299:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"25311:6:66","nodeType":"YulTypedName","src":"25311:6:66","type":""}],"src":"25244:245:66"},{"body":{"nativeSrc":"25685:696:66","nodeType":"YulBlock","src":"25685:696:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"25702:9:66","nodeType":"YulIdentifier","src":"25702:9:66"},{"kind":"number","nativeSrc":"25713:2:66","nodeType":"YulLiteral","src":"25713:2:66","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"25695:6:66","nodeType":"YulIdentifier","src":"25695:6:66"},"nativeSrc":"25695:21:66","nodeType":"YulFunctionCall","src":"25695:21:66"},"nativeSrc":"25695:21:66","nodeType":"YulExpressionStatement","src":"25695:21:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25736:9:66","nodeType":"YulIdentifier","src":"25736:9:66"},{"kind":"number","nativeSrc":"25747:2:66","nodeType":"YulLiteral","src":"25747:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"25732:3:66","nodeType":"YulIdentifier","src":"25732:3:66"},"nativeSrc":"25732:18:66","nodeType":"YulFunctionCall","src":"25732:18:66"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"25762:6:66","nodeType":"YulIdentifier","src":"25762:6:66"}],"functionName":{"name":"mload","nativeSrc":"25756:5:66","nodeType":"YulIdentifier","src":"25756:5:66"},"nativeSrc":"25756:13:66","nodeType":"YulFunctionCall","src":"25756:13:66"},{"kind":"number","nativeSrc":"25771:10:66","nodeType":"YulLiteral","src":"25771:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"25752:3:66","nodeType":"YulIdentifier","src":"25752:3:66"},"nativeSrc":"25752:30:66","nodeType":"YulFunctionCall","src":"25752:30:66"}],"functionName":{"name":"mstore","nativeSrc":"25725:6:66","nodeType":"YulIdentifier","src":"25725:6:66"},"nativeSrc":"25725:58:66","nodeType":"YulFunctionCall","src":"25725:58:66"},"nativeSrc":"25725:58:66","nodeType":"YulExpressionStatement","src":"25725:58:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25803:9:66","nodeType":"YulIdentifier","src":"25803:9:66"},{"kind":"number","nativeSrc":"25814:2:66","nodeType":"YulLiteral","src":"25814:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"25799:3:66","nodeType":"YulIdentifier","src":"25799:3:66"},"nativeSrc":"25799:18:66","nodeType":"YulFunctionCall","src":"25799:18:66"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"25829:6:66","nodeType":"YulIdentifier","src":"25829:6:66"},{"kind":"number","nativeSrc":"25837:4:66","nodeType":"YulLiteral","src":"25837:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"25825:3:66","nodeType":"YulIdentifier","src":"25825:3:66"},"nativeSrc":"25825:17:66","nodeType":"YulFunctionCall","src":"25825:17:66"}],"functionName":{"name":"mload","nativeSrc":"25819:5:66","nodeType":"YulIdentifier","src":"25819:5:66"},"nativeSrc":"25819:24:66","nodeType":"YulFunctionCall","src":"25819:24:66"}],"functionName":{"name":"mstore","nativeSrc":"25792:6:66","nodeType":"YulIdentifier","src":"25792:6:66"},"nativeSrc":"25792:52:66","nodeType":"YulFunctionCall","src":"25792:52:66"},"nativeSrc":"25792:52:66","nodeType":"YulExpressionStatement","src":"25792:52:66"},{"nativeSrc":"25853:42:66","nodeType":"YulVariableDeclaration","src":"25853:42:66","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"25883:6:66","nodeType":"YulIdentifier","src":"25883:6:66"},{"kind":"number","nativeSrc":"25891:2:66","nodeType":"YulLiteral","src":"25891:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"25879:3:66","nodeType":"YulIdentifier","src":"25879:3:66"},"nativeSrc":"25879:15:66","nodeType":"YulFunctionCall","src":"25879:15:66"}],"functionName":{"name":"mload","nativeSrc":"25873:5:66","nodeType":"YulIdentifier","src":"25873:5:66"},"nativeSrc":"25873:22:66","nodeType":"YulFunctionCall","src":"25873:22:66"},"variables":[{"name":"memberValue0","nativeSrc":"25857:12:66","nodeType":"YulTypedName","src":"25857:12:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"25915:9:66","nodeType":"YulIdentifier","src":"25915:9:66"},{"kind":"number","nativeSrc":"25926:3:66","nodeType":"YulLiteral","src":"25926:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"25911:3:66","nodeType":"YulIdentifier","src":"25911:3:66"},"nativeSrc":"25911:19:66","nodeType":"YulFunctionCall","src":"25911:19:66"},{"kind":"number","nativeSrc":"25932:4:66","nodeType":"YulLiteral","src":"25932:4:66","type":"","value":"0xa0"}],"functionName":{"name":"mstore","nativeSrc":"25904:6:66","nodeType":"YulIdentifier","src":"25904:6:66"},"nativeSrc":"25904:33:66","nodeType":"YulFunctionCall","src":"25904:33:66"},"nativeSrc":"25904:33:66","nodeType":"YulExpressionStatement","src":"25904:33:66"},{"nativeSrc":"25946:66:66","nodeType":"YulVariableDeclaration","src":"25946:66:66","value":{"arguments":[{"name":"memberValue0","nativeSrc":"25978:12:66","nodeType":"YulIdentifier","src":"25978:12:66"},{"arguments":[{"name":"headStart","nativeSrc":"25996:9:66","nodeType":"YulIdentifier","src":"25996:9:66"},{"kind":"number","nativeSrc":"26007:3:66","nodeType":"YulLiteral","src":"26007:3:66","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"25992:3:66","nodeType":"YulIdentifier","src":"25992:3:66"},"nativeSrc":"25992:19:66","nodeType":"YulFunctionCall","src":"25992:19:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"25960:17:66","nodeType":"YulIdentifier","src":"25960:17:66"},"nativeSrc":"25960:52:66","nodeType":"YulFunctionCall","src":"25960:52:66"},"variables":[{"name":"tail_1","nativeSrc":"25950:6:66","nodeType":"YulTypedName","src":"25950:6:66","type":""}]},{"nativeSrc":"26021:44:66","nodeType":"YulVariableDeclaration","src":"26021:44:66","value":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"26053:6:66","nodeType":"YulIdentifier","src":"26053:6:66"},{"kind":"number","nativeSrc":"26061:2:66","nodeType":"YulLiteral","src":"26061:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"26049:3:66","nodeType":"YulIdentifier","src":"26049:3:66"},"nativeSrc":"26049:15:66","nodeType":"YulFunctionCall","src":"26049:15:66"}],"functionName":{"name":"mload","nativeSrc":"26043:5:66","nodeType":"YulIdentifier","src":"26043:5:66"},"nativeSrc":"26043:22:66","nodeType":"YulFunctionCall","src":"26043:22:66"},"variables":[{"name":"memberValue0_1","nativeSrc":"26025:14:66","nodeType":"YulTypedName","src":"26025:14:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"26085:9:66","nodeType":"YulIdentifier","src":"26085:9:66"},{"kind":"number","nativeSrc":"26096:4:66","nodeType":"YulLiteral","src":"26096:4:66","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"26081:3:66","nodeType":"YulIdentifier","src":"26081:3:66"},"nativeSrc":"26081:20:66","nodeType":"YulFunctionCall","src":"26081:20:66"},{"arguments":[{"arguments":[{"name":"tail_1","nativeSrc":"26111:6:66","nodeType":"YulIdentifier","src":"26111:6:66"},{"name":"headStart","nativeSrc":"26119:9:66","nodeType":"YulIdentifier","src":"26119:9:66"}],"functionName":{"name":"sub","nativeSrc":"26107:3:66","nodeType":"YulIdentifier","src":"26107:3:66"},"nativeSrc":"26107:22:66","nodeType":"YulFunctionCall","src":"26107:22:66"},{"arguments":[{"kind":"number","nativeSrc":"26135:2:66","nodeType":"YulLiteral","src":"26135:2:66","type":"","value":"63"}],"functionName":{"name":"not","nativeSrc":"26131:3:66","nodeType":"YulIdentifier","src":"26131:3:66"},"nativeSrc":"26131:7:66","nodeType":"YulFunctionCall","src":"26131:7:66"}],"functionName":{"name":"add","nativeSrc":"26103:3:66","nodeType":"YulIdentifier","src":"26103:3:66"},"nativeSrc":"26103:36:66","nodeType":"YulFunctionCall","src":"26103:36:66"}],"functionName":{"name":"mstore","nativeSrc":"26074:6:66","nodeType":"YulIdentifier","src":"26074:6:66"},"nativeSrc":"26074:66:66","nodeType":"YulFunctionCall","src":"26074:66:66"},"nativeSrc":"26074:66:66","nodeType":"YulExpressionStatement","src":"26074:66:66"},{"nativeSrc":"26149:55:66","nodeType":"YulVariableDeclaration","src":"26149:55:66","value":{"arguments":[{"name":"memberValue0_1","nativeSrc":"26181:14:66","nodeType":"YulIdentifier","src":"26181:14:66"},{"name":"tail_1","nativeSrc":"26197:6:66","nodeType":"YulIdentifier","src":"26197:6:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"26163:17:66","nodeType":"YulIdentifier","src":"26163:17:66"},"nativeSrc":"26163:41:66","nodeType":"YulFunctionCall","src":"26163:41:66"},"variables":[{"name":"tail_2","nativeSrc":"26153:6:66","nodeType":"YulTypedName","src":"26153:6:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"26224:9:66","nodeType":"YulIdentifier","src":"26224:9:66"},{"kind":"number","nativeSrc":"26235:3:66","nodeType":"YulLiteral","src":"26235:3:66","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"26220:3:66","nodeType":"YulIdentifier","src":"26220:3:66"},"nativeSrc":"26220:19:66","nodeType":"YulFunctionCall","src":"26220:19:66"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"26265:6:66","nodeType":"YulIdentifier","src":"26265:6:66"},{"kind":"number","nativeSrc":"26273:3:66","nodeType":"YulLiteral","src":"26273:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"26261:3:66","nodeType":"YulIdentifier","src":"26261:3:66"},"nativeSrc":"26261:16:66","nodeType":"YulFunctionCall","src":"26261:16:66"}],"functionName":{"name":"mload","nativeSrc":"26255:5:66","nodeType":"YulIdentifier","src":"26255:5:66"},"nativeSrc":"26255:23:66","nodeType":"YulFunctionCall","src":"26255:23:66"}],"functionName":{"name":"iszero","nativeSrc":"26248:6:66","nodeType":"YulIdentifier","src":"26248:6:66"},"nativeSrc":"26248:31:66","nodeType":"YulFunctionCall","src":"26248:31:66"}],"functionName":{"name":"iszero","nativeSrc":"26241:6:66","nodeType":"YulIdentifier","src":"26241:6:66"},"nativeSrc":"26241:39:66","nodeType":"YulFunctionCall","src":"26241:39:66"}],"functionName":{"name":"mstore","nativeSrc":"26213:6:66","nodeType":"YulIdentifier","src":"26213:6:66"},"nativeSrc":"26213:68:66","nodeType":"YulFunctionCall","src":"26213:68:66"},"nativeSrc":"26213:68:66","nodeType":"YulExpressionStatement","src":"26213:68:66"},{"nativeSrc":"26290:14:66","nodeType":"YulAssignment","src":"26290:14:66","value":{"name":"tail_2","nativeSrc":"26298:6:66","nodeType":"YulIdentifier","src":"26298:6:66"},"variableNames":[{"name":"tail","nativeSrc":"26290:4:66","nodeType":"YulIdentifier","src":"26290:4:66"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"26324:9:66","nodeType":"YulIdentifier","src":"26324:9:66"},{"kind":"number","nativeSrc":"26335:4:66","nodeType":"YulLiteral","src":"26335:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"26320:3:66","nodeType":"YulIdentifier","src":"26320:3:66"},"nativeSrc":"26320:20:66","nodeType":"YulFunctionCall","src":"26320:20:66"},{"arguments":[{"name":"value1","nativeSrc":"26346:6:66","nodeType":"YulIdentifier","src":"26346:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"26362:3:66","nodeType":"YulLiteral","src":"26362:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"26367:1:66","nodeType":"YulLiteral","src":"26367:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"26358:3:66","nodeType":"YulIdentifier","src":"26358:3:66"},"nativeSrc":"26358:11:66","nodeType":"YulFunctionCall","src":"26358:11:66"},{"kind":"number","nativeSrc":"26371:1:66","nodeType":"YulLiteral","src":"26371:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"26354:3:66","nodeType":"YulIdentifier","src":"26354:3:66"},"nativeSrc":"26354:19:66","nodeType":"YulFunctionCall","src":"26354:19:66"}],"functionName":{"name":"and","nativeSrc":"26342:3:66","nodeType":"YulIdentifier","src":"26342:3:66"},"nativeSrc":"26342:32:66","nodeType":"YulFunctionCall","src":"26342:32:66"}],"functionName":{"name":"mstore","nativeSrc":"26313:6:66","nodeType":"YulIdentifier","src":"26313:6:66"},"nativeSrc":"26313:62:66","nodeType":"YulFunctionCall","src":"26313:62:66"},"nativeSrc":"26313:62:66","nodeType":"YulExpressionStatement","src":"26313:62:66"}]},"name":"abi_encode_tuple_t_struct$_MessagingParams_$20_memory_ptr_t_address__to_t_struct$_MessagingParams_$20_memory_ptr_t_address__fromStack_reversed","nativeSrc":"25494:887:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"25646:9:66","nodeType":"YulTypedName","src":"25646:9:66","type":""},{"name":"value1","nativeSrc":"25657:6:66","nodeType":"YulTypedName","src":"25657:6:66","type":""},{"name":"value0","nativeSrc":"25665:6:66","nodeType":"YulTypedName","src":"25665:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"25676:4:66","nodeType":"YulTypedName","src":"25676:4:66","type":""}],"src":"25494:887:66"},{"body":{"nativeSrc":"26466:308:66","nodeType":"YulBlock","src":"26466:308:66","statements":[{"body":{"nativeSrc":"26510:16:66","nodeType":"YulBlock","src":"26510:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"26519:1:66","nodeType":"YulLiteral","src":"26519:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"26522:1:66","nodeType":"YulLiteral","src":"26522:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"26512:6:66","nodeType":"YulIdentifier","src":"26512:6:66"},"nativeSrc":"26512:12:66","nodeType":"YulFunctionCall","src":"26512:12:66"},"nativeSrc":"26512:12:66","nodeType":"YulExpressionStatement","src":"26512:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nativeSrc":"26487:3:66","nodeType":"YulIdentifier","src":"26487:3:66"},{"name":"headStart","nativeSrc":"26492:9:66","nodeType":"YulIdentifier","src":"26492:9:66"}],"functionName":{"name":"sub","nativeSrc":"26483:3:66","nodeType":"YulIdentifier","src":"26483:3:66"},"nativeSrc":"26483:19:66","nodeType":"YulFunctionCall","src":"26483:19:66"},{"kind":"number","nativeSrc":"26504:4:66","nodeType":"YulLiteral","src":"26504:4:66","type":"","value":"0x40"}],"functionName":{"name":"slt","nativeSrc":"26479:3:66","nodeType":"YulIdentifier","src":"26479:3:66"},"nativeSrc":"26479:30:66","nodeType":"YulFunctionCall","src":"26479:30:66"},"nativeSrc":"26476:50:66","nodeType":"YulIf","src":"26476:50:66"},{"nativeSrc":"26535:31:66","nodeType":"YulAssignment","src":"26535:31:66","value":{"arguments":[],"functionName":{"name":"allocate_memory_3874","nativeSrc":"26544:20:66","nodeType":"YulIdentifier","src":"26544:20:66"},"nativeSrc":"26544:22:66","nodeType":"YulFunctionCall","src":"26544:22:66"},"variableNames":[{"name":"value","nativeSrc":"26535:5:66","nodeType":"YulIdentifier","src":"26535:5:66"}]},{"nativeSrc":"26575:16:66","nodeType":"YulVariableDeclaration","src":"26575:16:66","value":{"kind":"number","nativeSrc":"26590:1:66","nodeType":"YulLiteral","src":"26590:1:66","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"26579:7:66","nodeType":"YulTypedName","src":"26579:7:66","type":""}]},{"nativeSrc":"26600:27:66","nodeType":"YulAssignment","src":"26600:27:66","value":{"arguments":[{"name":"headStart","nativeSrc":"26617:9:66","nodeType":"YulIdentifier","src":"26617:9:66"}],"functionName":{"name":"mload","nativeSrc":"26611:5:66","nodeType":"YulIdentifier","src":"26611:5:66"},"nativeSrc":"26611:16:66","nodeType":"YulFunctionCall","src":"26611:16:66"},"variableNames":[{"name":"value_1","nativeSrc":"26600:7:66","nodeType":"YulIdentifier","src":"26600:7:66"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"26643:5:66","nodeType":"YulIdentifier","src":"26643:5:66"},{"name":"value_1","nativeSrc":"26650:7:66","nodeType":"YulIdentifier","src":"26650:7:66"}],"functionName":{"name":"mstore","nativeSrc":"26636:6:66","nodeType":"YulIdentifier","src":"26636:6:66"},"nativeSrc":"26636:22:66","nodeType":"YulFunctionCall","src":"26636:22:66"},"nativeSrc":"26636:22:66","nodeType":"YulExpressionStatement","src":"26636:22:66"},{"nativeSrc":"26667:16:66","nodeType":"YulVariableDeclaration","src":"26667:16:66","value":{"kind":"number","nativeSrc":"26682:1:66","nodeType":"YulLiteral","src":"26682:1:66","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"26671:7:66","nodeType":"YulTypedName","src":"26671:7:66","type":""}]},{"nativeSrc":"26692:36:66","nodeType":"YulAssignment","src":"26692:36:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"26713:9:66","nodeType":"YulIdentifier","src":"26713:9:66"},{"kind":"number","nativeSrc":"26724:2:66","nodeType":"YulLiteral","src":"26724:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"26709:3:66","nodeType":"YulIdentifier","src":"26709:3:66"},"nativeSrc":"26709:18:66","nodeType":"YulFunctionCall","src":"26709:18:66"}],"functionName":{"name":"mload","nativeSrc":"26703:5:66","nodeType":"YulIdentifier","src":"26703:5:66"},"nativeSrc":"26703:25:66","nodeType":"YulFunctionCall","src":"26703:25:66"},"variableNames":[{"name":"value_2","nativeSrc":"26692:7:66","nodeType":"YulIdentifier","src":"26692:7:66"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"26748:5:66","nodeType":"YulIdentifier","src":"26748:5:66"},{"kind":"number","nativeSrc":"26755:2:66","nodeType":"YulLiteral","src":"26755:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"26744:3:66","nodeType":"YulIdentifier","src":"26744:3:66"},"nativeSrc":"26744:14:66","nodeType":"YulFunctionCall","src":"26744:14:66"},{"name":"value_2","nativeSrc":"26760:7:66","nodeType":"YulIdentifier","src":"26760:7:66"}],"functionName":{"name":"mstore","nativeSrc":"26737:6:66","nodeType":"YulIdentifier","src":"26737:6:66"},"nativeSrc":"26737:31:66","nodeType":"YulFunctionCall","src":"26737:31:66"},"nativeSrc":"26737:31:66","nodeType":"YulExpressionStatement","src":"26737:31:66"}]},"name":"abi_decode_struct_MessagingFee_fromMemory","nativeSrc":"26386:388:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"26437:9:66","nodeType":"YulTypedName","src":"26437:9:66","type":""},{"name":"end","nativeSrc":"26448:3:66","nodeType":"YulTypedName","src":"26448:3:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"26456:5:66","nodeType":"YulTypedName","src":"26456:5:66","type":""}],"src":"26386:388:66"},{"body":{"nativeSrc":"26888:148:66","nodeType":"YulBlock","src":"26888:148:66","statements":[{"body":{"nativeSrc":"26934:16:66","nodeType":"YulBlock","src":"26934:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"26943:1:66","nodeType":"YulLiteral","src":"26943:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"26946:1:66","nodeType":"YulLiteral","src":"26946:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"26936:6:66","nodeType":"YulIdentifier","src":"26936:6:66"},"nativeSrc":"26936:12:66","nodeType":"YulFunctionCall","src":"26936:12:66"},"nativeSrc":"26936:12:66","nodeType":"YulExpressionStatement","src":"26936:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"26909:7:66","nodeType":"YulIdentifier","src":"26909:7:66"},{"name":"headStart","nativeSrc":"26918:9:66","nodeType":"YulIdentifier","src":"26918:9:66"}],"functionName":{"name":"sub","nativeSrc":"26905:3:66","nodeType":"YulIdentifier","src":"26905:3:66"},"nativeSrc":"26905:23:66","nodeType":"YulFunctionCall","src":"26905:23:66"},{"kind":"number","nativeSrc":"26930:2:66","nodeType":"YulLiteral","src":"26930:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"26901:3:66","nodeType":"YulIdentifier","src":"26901:3:66"},"nativeSrc":"26901:32:66","nodeType":"YulFunctionCall","src":"26901:32:66"},"nativeSrc":"26898:52:66","nodeType":"YulIf","src":"26898:52:66"},{"nativeSrc":"26959:71:66","nodeType":"YulAssignment","src":"26959:71:66","value":{"arguments":[{"name":"headStart","nativeSrc":"27011:9:66","nodeType":"YulIdentifier","src":"27011:9:66"},{"name":"dataEnd","nativeSrc":"27022:7:66","nodeType":"YulIdentifier","src":"27022:7:66"}],"functionName":{"name":"abi_decode_struct_MessagingFee_fromMemory","nativeSrc":"26969:41:66","nodeType":"YulIdentifier","src":"26969:41:66"},"nativeSrc":"26969:61:66","nodeType":"YulFunctionCall","src":"26969:61:66"},"variableNames":[{"name":"value0","nativeSrc":"26959:6:66","nodeType":"YulIdentifier","src":"26959:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr_fromMemory","nativeSrc":"26779:257:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"26854:9:66","nodeType":"YulTypedName","src":"26854:9:66","type":""},{"name":"dataEnd","nativeSrc":"26865:7:66","nodeType":"YulTypedName","src":"26865:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"26877:6:66","nodeType":"YulTypedName","src":"26877:6:66","type":""}],"src":"26779:257:66"},{"body":{"nativeSrc":"27096:65:66","nodeType":"YulBlock","src":"27096:65:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"27113:1:66","nodeType":"YulLiteral","src":"27113:1:66","type":"","value":"0"},{"name":"ptr","nativeSrc":"27116:3:66","nodeType":"YulIdentifier","src":"27116:3:66"}],"functionName":{"name":"mstore","nativeSrc":"27106:6:66","nodeType":"YulIdentifier","src":"27106:6:66"},"nativeSrc":"27106:14:66","nodeType":"YulFunctionCall","src":"27106:14:66"},"nativeSrc":"27106:14:66","nodeType":"YulExpressionStatement","src":"27106:14:66"},{"nativeSrc":"27129:26:66","nodeType":"YulAssignment","src":"27129:26:66","value":{"arguments":[{"kind":"number","nativeSrc":"27147:1:66","nodeType":"YulLiteral","src":"27147:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"27150:4:66","nodeType":"YulLiteral","src":"27150:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"27137:9:66","nodeType":"YulIdentifier","src":"27137:9:66"},"nativeSrc":"27137:18:66","nodeType":"YulFunctionCall","src":"27137:18:66"},"variableNames":[{"name":"data","nativeSrc":"27129:4:66","nodeType":"YulIdentifier","src":"27129:4:66"}]}]},"name":"array_dataslot_bytes_storage","nativeSrc":"27041:120:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"27079:3:66","nodeType":"YulTypedName","src":"27079:3:66","type":""}],"returnVariables":[{"name":"data","nativeSrc":"27087:4:66","nodeType":"YulTypedName","src":"27087:4:66","type":""}],"src":"27041:120:66"},{"body":{"nativeSrc":"27246:437:66","nodeType":"YulBlock","src":"27246:437:66","statements":[{"body":{"nativeSrc":"27279:398:66","nodeType":"YulBlock","src":"27279:398:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"27300:1:66","nodeType":"YulLiteral","src":"27300:1:66","type":"","value":"0"},{"name":"array","nativeSrc":"27303:5:66","nodeType":"YulIdentifier","src":"27303:5:66"}],"functionName":{"name":"mstore","nativeSrc":"27293:6:66","nodeType":"YulIdentifier","src":"27293:6:66"},"nativeSrc":"27293:16:66","nodeType":"YulFunctionCall","src":"27293:16:66"},"nativeSrc":"27293:16:66","nodeType":"YulExpressionStatement","src":"27293:16:66"},{"nativeSrc":"27322:30:66","nodeType":"YulVariableDeclaration","src":"27322:30:66","value":{"arguments":[{"kind":"number","nativeSrc":"27344:1:66","nodeType":"YulLiteral","src":"27344:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"27347:4:66","nodeType":"YulLiteral","src":"27347:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"27334:9:66","nodeType":"YulIdentifier","src":"27334:9:66"},"nativeSrc":"27334:18:66","nodeType":"YulFunctionCall","src":"27334:18:66"},"variables":[{"name":"data","nativeSrc":"27326:4:66","nodeType":"YulTypedName","src":"27326:4:66","type":""}]},{"nativeSrc":"27365:57:66","nodeType":"YulVariableDeclaration","src":"27365:57:66","value":{"arguments":[{"name":"data","nativeSrc":"27388:4:66","nodeType":"YulIdentifier","src":"27388:4:66"},{"arguments":[{"kind":"number","nativeSrc":"27398:1:66","nodeType":"YulLiteral","src":"27398:1:66","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"27405:10:66","nodeType":"YulIdentifier","src":"27405:10:66"},{"kind":"number","nativeSrc":"27417:2:66","nodeType":"YulLiteral","src":"27417:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"27401:3:66","nodeType":"YulIdentifier","src":"27401:3:66"},"nativeSrc":"27401:19:66","nodeType":"YulFunctionCall","src":"27401:19:66"}],"functionName":{"name":"shr","nativeSrc":"27394:3:66","nodeType":"YulIdentifier","src":"27394:3:66"},"nativeSrc":"27394:27:66","nodeType":"YulFunctionCall","src":"27394:27:66"}],"functionName":{"name":"add","nativeSrc":"27384:3:66","nodeType":"YulIdentifier","src":"27384:3:66"},"nativeSrc":"27384:38:66","nodeType":"YulFunctionCall","src":"27384:38:66"},"variables":[{"name":"deleteStart","nativeSrc":"27369:11:66","nodeType":"YulTypedName","src":"27369:11:66","type":""}]},{"body":{"nativeSrc":"27459:23:66","nodeType":"YulBlock","src":"27459:23:66","statements":[{"nativeSrc":"27461:19:66","nodeType":"YulAssignment","src":"27461:19:66","value":{"name":"data","nativeSrc":"27476:4:66","nodeType":"YulIdentifier","src":"27476:4:66"},"variableNames":[{"name":"deleteStart","nativeSrc":"27461:11:66","nodeType":"YulIdentifier","src":"27461:11:66"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"27441:10:66","nodeType":"YulIdentifier","src":"27441:10:66"},{"kind":"number","nativeSrc":"27453:4:66","nodeType":"YulLiteral","src":"27453:4:66","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"27438:2:66","nodeType":"YulIdentifier","src":"27438:2:66"},"nativeSrc":"27438:20:66","nodeType":"YulFunctionCall","src":"27438:20:66"},"nativeSrc":"27435:47:66","nodeType":"YulIf","src":"27435:47:66"},{"nativeSrc":"27495:41:66","nodeType":"YulVariableDeclaration","src":"27495:41:66","value":{"arguments":[{"name":"data","nativeSrc":"27509:4:66","nodeType":"YulIdentifier","src":"27509:4:66"},{"arguments":[{"kind":"number","nativeSrc":"27519:1:66","nodeType":"YulLiteral","src":"27519:1:66","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"27526:3:66","nodeType":"YulIdentifier","src":"27526:3:66"},{"kind":"number","nativeSrc":"27531:2:66","nodeType":"YulLiteral","src":"27531:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"27522:3:66","nodeType":"YulIdentifier","src":"27522:3:66"},"nativeSrc":"27522:12:66","nodeType":"YulFunctionCall","src":"27522:12:66"}],"functionName":{"name":"shr","nativeSrc":"27515:3:66","nodeType":"YulIdentifier","src":"27515:3:66"},"nativeSrc":"27515:20:66","nodeType":"YulFunctionCall","src":"27515:20:66"}],"functionName":{"name":"add","nativeSrc":"27505:3:66","nodeType":"YulIdentifier","src":"27505:3:66"},"nativeSrc":"27505:31:66","nodeType":"YulFunctionCall","src":"27505:31:66"},"variables":[{"name":"_1","nativeSrc":"27499:2:66","nodeType":"YulTypedName","src":"27499:2:66","type":""}]},{"nativeSrc":"27549:24:66","nodeType":"YulVariableDeclaration","src":"27549:24:66","value":{"name":"deleteStart","nativeSrc":"27562:11:66","nodeType":"YulIdentifier","src":"27562:11:66"},"variables":[{"name":"start","nativeSrc":"27553:5:66","nodeType":"YulTypedName","src":"27553:5:66","type":""}]},{"body":{"nativeSrc":"27647:20:66","nodeType":"YulBlock","src":"27647:20:66","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"27656:5:66","nodeType":"YulIdentifier","src":"27656:5:66"},{"kind":"number","nativeSrc":"27663:1:66","nodeType":"YulLiteral","src":"27663:1:66","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"27649:6:66","nodeType":"YulIdentifier","src":"27649:6:66"},"nativeSrc":"27649:16:66","nodeType":"YulFunctionCall","src":"27649:16:66"},"nativeSrc":"27649:16:66","nodeType":"YulExpressionStatement","src":"27649:16:66"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"27597:5:66","nodeType":"YulIdentifier","src":"27597:5:66"},{"name":"_1","nativeSrc":"27604:2:66","nodeType":"YulIdentifier","src":"27604:2:66"}],"functionName":{"name":"lt","nativeSrc":"27594:2:66","nodeType":"YulIdentifier","src":"27594:2:66"},"nativeSrc":"27594:13:66","nodeType":"YulFunctionCall","src":"27594:13:66"},"nativeSrc":"27586:81:66","nodeType":"YulForLoop","post":{"nativeSrc":"27608:26:66","nodeType":"YulBlock","src":"27608:26:66","statements":[{"nativeSrc":"27610:22:66","nodeType":"YulAssignment","src":"27610:22:66","value":{"arguments":[{"name":"start","nativeSrc":"27623:5:66","nodeType":"YulIdentifier","src":"27623:5:66"},{"kind":"number","nativeSrc":"27630:1:66","nodeType":"YulLiteral","src":"27630:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"27619:3:66","nodeType":"YulIdentifier","src":"27619:3:66"},"nativeSrc":"27619:13:66","nodeType":"YulFunctionCall","src":"27619:13:66"},"variableNames":[{"name":"start","nativeSrc":"27610:5:66","nodeType":"YulIdentifier","src":"27610:5:66"}]}]},"pre":{"nativeSrc":"27590:3:66","nodeType":"YulBlock","src":"27590:3:66","statements":[]},"src":"27586:81:66"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"27262:3:66","nodeType":"YulIdentifier","src":"27262:3:66"},{"kind":"number","nativeSrc":"27267:2:66","nodeType":"YulLiteral","src":"27267:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"27259:2:66","nodeType":"YulIdentifier","src":"27259:2:66"},"nativeSrc":"27259:11:66","nodeType":"YulFunctionCall","src":"27259:11:66"},"nativeSrc":"27256:421:66","nodeType":"YulIf","src":"27256:421:66"}]},"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"27166:517:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"27218:5:66","nodeType":"YulTypedName","src":"27218:5:66","type":""},{"name":"len","nativeSrc":"27225:3:66","nodeType":"YulTypedName","src":"27225:3:66","type":""},{"name":"startIndex","nativeSrc":"27230:10:66","nodeType":"YulTypedName","src":"27230:10:66","type":""}],"src":"27166:517:66"},{"body":{"nativeSrc":"27773:81:66","nodeType":"YulBlock","src":"27773:81:66","statements":[{"nativeSrc":"27783:65:66","nodeType":"YulAssignment","src":"27783:65:66","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"27798:4:66","nodeType":"YulIdentifier","src":"27798:4:66"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"27816:1:66","nodeType":"YulLiteral","src":"27816:1:66","type":"","value":"3"},{"name":"len","nativeSrc":"27819:3:66","nodeType":"YulIdentifier","src":"27819:3:66"}],"functionName":{"name":"shl","nativeSrc":"27812:3:66","nodeType":"YulIdentifier","src":"27812:3:66"},"nativeSrc":"27812:11:66","nodeType":"YulFunctionCall","src":"27812:11:66"},{"arguments":[{"kind":"number","nativeSrc":"27829:1:66","nodeType":"YulLiteral","src":"27829:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"27825:3:66","nodeType":"YulIdentifier","src":"27825:3:66"},"nativeSrc":"27825:6:66","nodeType":"YulFunctionCall","src":"27825:6:66"}],"functionName":{"name":"shr","nativeSrc":"27808:3:66","nodeType":"YulIdentifier","src":"27808:3:66"},"nativeSrc":"27808:24:66","nodeType":"YulFunctionCall","src":"27808:24:66"}],"functionName":{"name":"not","nativeSrc":"27804:3:66","nodeType":"YulIdentifier","src":"27804:3:66"},"nativeSrc":"27804:29:66","nodeType":"YulFunctionCall","src":"27804:29:66"}],"functionName":{"name":"and","nativeSrc":"27794:3:66","nodeType":"YulIdentifier","src":"27794:3:66"},"nativeSrc":"27794:40:66","nodeType":"YulFunctionCall","src":"27794:40:66"},{"arguments":[{"kind":"number","nativeSrc":"27840:1:66","nodeType":"YulLiteral","src":"27840:1:66","type":"","value":"1"},{"name":"len","nativeSrc":"27843:3:66","nodeType":"YulIdentifier","src":"27843:3:66"}],"functionName":{"name":"shl","nativeSrc":"27836:3:66","nodeType":"YulIdentifier","src":"27836:3:66"},"nativeSrc":"27836:11:66","nodeType":"YulFunctionCall","src":"27836:11:66"}],"functionName":{"name":"or","nativeSrc":"27791:2:66","nodeType":"YulIdentifier","src":"27791:2:66"},"nativeSrc":"27791:57:66","nodeType":"YulFunctionCall","src":"27791:57:66"},"variableNames":[{"name":"used","nativeSrc":"27783:4:66","nodeType":"YulIdentifier","src":"27783:4:66"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"27688:166:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"27750:4:66","nodeType":"YulTypedName","src":"27750:4:66","type":""},{"name":"len","nativeSrc":"27756:3:66","nodeType":"YulTypedName","src":"27756:3:66","type":""}],"returnVariables":[{"name":"used","nativeSrc":"27764:4:66","nodeType":"YulTypedName","src":"27764:4:66","type":""}],"src":"27688:166:66"},{"body":{"nativeSrc":"27953:1201:66","nodeType":"YulBlock","src":"27953:1201:66","statements":[{"nativeSrc":"27963:24:66","nodeType":"YulVariableDeclaration","src":"27963:24:66","value":{"arguments":[{"name":"src","nativeSrc":"27983:3:66","nodeType":"YulIdentifier","src":"27983:3:66"}],"functionName":{"name":"mload","nativeSrc":"27977:5:66","nodeType":"YulIdentifier","src":"27977:5:66"},"nativeSrc":"27977:10:66","nodeType":"YulFunctionCall","src":"27977:10:66"},"variables":[{"name":"newLen","nativeSrc":"27967:6:66","nodeType":"YulTypedName","src":"27967:6:66","type":""}]},{"body":{"nativeSrc":"28030:22:66","nodeType":"YulBlock","src":"28030:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"28032:16:66","nodeType":"YulIdentifier","src":"28032:16:66"},"nativeSrc":"28032:18:66","nodeType":"YulFunctionCall","src":"28032:18:66"},"nativeSrc":"28032:18:66","nodeType":"YulExpressionStatement","src":"28032:18:66"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"28002:6:66","nodeType":"YulIdentifier","src":"28002:6:66"},{"kind":"number","nativeSrc":"28010:18:66","nodeType":"YulLiteral","src":"28010:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"27999:2:66","nodeType":"YulIdentifier","src":"27999:2:66"},"nativeSrc":"27999:30:66","nodeType":"YulFunctionCall","src":"27999:30:66"},"nativeSrc":"27996:56:66","nodeType":"YulIf","src":"27996:56:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"28104:4:66","nodeType":"YulIdentifier","src":"28104:4:66"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"28142:4:66","nodeType":"YulIdentifier","src":"28142:4:66"}],"functionName":{"name":"sload","nativeSrc":"28136:5:66","nodeType":"YulIdentifier","src":"28136:5:66"},"nativeSrc":"28136:11:66","nodeType":"YulFunctionCall","src":"28136:11:66"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"28110:25:66","nodeType":"YulIdentifier","src":"28110:25:66"},"nativeSrc":"28110:38:66","nodeType":"YulFunctionCall","src":"28110:38:66"},{"name":"newLen","nativeSrc":"28150:6:66","nodeType":"YulIdentifier","src":"28150:6:66"}],"functionName":{"name":"clean_up_bytearray_end_slots_bytes_storage","nativeSrc":"28061:42:66","nodeType":"YulIdentifier","src":"28061:42:66"},"nativeSrc":"28061:96:66","nodeType":"YulFunctionCall","src":"28061:96:66"},"nativeSrc":"28061:96:66","nodeType":"YulExpressionStatement","src":"28061:96:66"},{"nativeSrc":"28166:18:66","nodeType":"YulVariableDeclaration","src":"28166:18:66","value":{"kind":"number","nativeSrc":"28183:1:66","nodeType":"YulLiteral","src":"28183:1:66","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"28170:9:66","nodeType":"YulTypedName","src":"28170:9:66","type":""}]},{"nativeSrc":"28193:17:66","nodeType":"YulAssignment","src":"28193:17:66","value":{"kind":"number","nativeSrc":"28206:4:66","nodeType":"YulLiteral","src":"28206:4:66","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"28193:9:66","nodeType":"YulIdentifier","src":"28193:9:66"}]},{"cases":[{"body":{"nativeSrc":"28256:641:66","nodeType":"YulBlock","src":"28256:641:66","statements":[{"nativeSrc":"28270:35:66","nodeType":"YulVariableDeclaration","src":"28270:35:66","value":{"arguments":[{"name":"newLen","nativeSrc":"28289:6:66","nodeType":"YulIdentifier","src":"28289:6:66"},{"arguments":[{"kind":"number","nativeSrc":"28301:2:66","nodeType":"YulLiteral","src":"28301:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"28297:3:66","nodeType":"YulIdentifier","src":"28297:3:66"},"nativeSrc":"28297:7:66","nodeType":"YulFunctionCall","src":"28297:7:66"}],"functionName":{"name":"and","nativeSrc":"28285:3:66","nodeType":"YulIdentifier","src":"28285:3:66"},"nativeSrc":"28285:20:66","nodeType":"YulFunctionCall","src":"28285:20:66"},"variables":[{"name":"loopEnd","nativeSrc":"28274:7:66","nodeType":"YulTypedName","src":"28274:7:66","type":""}]},{"nativeSrc":"28318:48:66","nodeType":"YulVariableDeclaration","src":"28318:48:66","value":{"arguments":[{"name":"slot","nativeSrc":"28361:4:66","nodeType":"YulIdentifier","src":"28361:4:66"}],"functionName":{"name":"array_dataslot_bytes_storage","nativeSrc":"28332:28:66","nodeType":"YulIdentifier","src":"28332:28:66"},"nativeSrc":"28332:34:66","nodeType":"YulFunctionCall","src":"28332:34:66"},"variables":[{"name":"dstPtr","nativeSrc":"28322:6:66","nodeType":"YulTypedName","src":"28322:6:66","type":""}]},{"nativeSrc":"28379:10:66","nodeType":"YulVariableDeclaration","src":"28379:10:66","value":{"kind":"number","nativeSrc":"28388:1:66","nodeType":"YulLiteral","src":"28388:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"28383:1:66","nodeType":"YulTypedName","src":"28383:1:66","type":""}]},{"body":{"nativeSrc":"28459:165:66","nodeType":"YulBlock","src":"28459:165:66","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"28484:6:66","nodeType":"YulIdentifier","src":"28484:6:66"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"28502:3:66","nodeType":"YulIdentifier","src":"28502:3:66"},{"name":"srcOffset","nativeSrc":"28507:9:66","nodeType":"YulIdentifier","src":"28507:9:66"}],"functionName":{"name":"add","nativeSrc":"28498:3:66","nodeType":"YulIdentifier","src":"28498:3:66"},"nativeSrc":"28498:19:66","nodeType":"YulFunctionCall","src":"28498:19:66"}],"functionName":{"name":"mload","nativeSrc":"28492:5:66","nodeType":"YulIdentifier","src":"28492:5:66"},"nativeSrc":"28492:26:66","nodeType":"YulFunctionCall","src":"28492:26:66"}],"functionName":{"name":"sstore","nativeSrc":"28477:6:66","nodeType":"YulIdentifier","src":"28477:6:66"},"nativeSrc":"28477:42:66","nodeType":"YulFunctionCall","src":"28477:42:66"},"nativeSrc":"28477:42:66","nodeType":"YulExpressionStatement","src":"28477:42:66"},{"nativeSrc":"28536:24:66","nodeType":"YulAssignment","src":"28536:24:66","value":{"arguments":[{"name":"dstPtr","nativeSrc":"28550:6:66","nodeType":"YulIdentifier","src":"28550:6:66"},{"kind":"number","nativeSrc":"28558:1:66","nodeType":"YulLiteral","src":"28558:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"28546:3:66","nodeType":"YulIdentifier","src":"28546:3:66"},"nativeSrc":"28546:14:66","nodeType":"YulFunctionCall","src":"28546:14:66"},"variableNames":[{"name":"dstPtr","nativeSrc":"28536:6:66","nodeType":"YulIdentifier","src":"28536:6:66"}]},{"nativeSrc":"28577:33:66","nodeType":"YulAssignment","src":"28577:33:66","value":{"arguments":[{"name":"srcOffset","nativeSrc":"28594:9:66","nodeType":"YulIdentifier","src":"28594:9:66"},{"kind":"number","nativeSrc":"28605:4:66","nodeType":"YulLiteral","src":"28605:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"28590:3:66","nodeType":"YulIdentifier","src":"28590:3:66"},"nativeSrc":"28590:20:66","nodeType":"YulFunctionCall","src":"28590:20:66"},"variableNames":[{"name":"srcOffset","nativeSrc":"28577:9:66","nodeType":"YulIdentifier","src":"28577:9:66"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"28413:1:66","nodeType":"YulIdentifier","src":"28413:1:66"},{"name":"loopEnd","nativeSrc":"28416:7:66","nodeType":"YulIdentifier","src":"28416:7:66"}],"functionName":{"name":"lt","nativeSrc":"28410:2:66","nodeType":"YulIdentifier","src":"28410:2:66"},"nativeSrc":"28410:14:66","nodeType":"YulFunctionCall","src":"28410:14:66"},"nativeSrc":"28402:222:66","nodeType":"YulForLoop","post":{"nativeSrc":"28425:21:66","nodeType":"YulBlock","src":"28425:21:66","statements":[{"nativeSrc":"28427:17:66","nodeType":"YulAssignment","src":"28427:17:66","value":{"arguments":[{"name":"i","nativeSrc":"28436:1:66","nodeType":"YulIdentifier","src":"28436:1:66"},{"kind":"number","nativeSrc":"28439:4:66","nodeType":"YulLiteral","src":"28439:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"28432:3:66","nodeType":"YulIdentifier","src":"28432:3:66"},"nativeSrc":"28432:12:66","nodeType":"YulFunctionCall","src":"28432:12:66"},"variableNames":[{"name":"i","nativeSrc":"28427:1:66","nodeType":"YulIdentifier","src":"28427:1:66"}]}]},"pre":{"nativeSrc":"28406:3:66","nodeType":"YulBlock","src":"28406:3:66","statements":[]},"src":"28402:222:66"},{"body":{"nativeSrc":"28672:166:66","nodeType":"YulBlock","src":"28672:166:66","statements":[{"nativeSrc":"28690:43:66","nodeType":"YulVariableDeclaration","src":"28690:43:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"28717:3:66","nodeType":"YulIdentifier","src":"28717:3:66"},{"name":"srcOffset","nativeSrc":"28722:9:66","nodeType":"YulIdentifier","src":"28722:9:66"}],"functionName":{"name":"add","nativeSrc":"28713:3:66","nodeType":"YulIdentifier","src":"28713:3:66"},"nativeSrc":"28713:19:66","nodeType":"YulFunctionCall","src":"28713:19:66"}],"functionName":{"name":"mload","nativeSrc":"28707:5:66","nodeType":"YulIdentifier","src":"28707:5:66"},"nativeSrc":"28707:26:66","nodeType":"YulFunctionCall","src":"28707:26:66"},"variables":[{"name":"lastValue","nativeSrc":"28694:9:66","nodeType":"YulTypedName","src":"28694:9:66","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"28757:6:66","nodeType":"YulIdentifier","src":"28757:6:66"},{"arguments":[{"name":"lastValue","nativeSrc":"28769:9:66","nodeType":"YulIdentifier","src":"28769:9:66"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"28796:1:66","nodeType":"YulLiteral","src":"28796:1:66","type":"","value":"3"},{"name":"newLen","nativeSrc":"28799:6:66","nodeType":"YulIdentifier","src":"28799:6:66"}],"functionName":{"name":"shl","nativeSrc":"28792:3:66","nodeType":"YulIdentifier","src":"28792:3:66"},"nativeSrc":"28792:14:66","nodeType":"YulFunctionCall","src":"28792:14:66"},{"kind":"number","nativeSrc":"28808:3:66","nodeType":"YulLiteral","src":"28808:3:66","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"28788:3:66","nodeType":"YulIdentifier","src":"28788:3:66"},"nativeSrc":"28788:24:66","nodeType":"YulFunctionCall","src":"28788:24:66"},{"arguments":[{"kind":"number","nativeSrc":"28818:1:66","nodeType":"YulLiteral","src":"28818:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"28814:3:66","nodeType":"YulIdentifier","src":"28814:3:66"},"nativeSrc":"28814:6:66","nodeType":"YulFunctionCall","src":"28814:6:66"}],"functionName":{"name":"shr","nativeSrc":"28784:3:66","nodeType":"YulIdentifier","src":"28784:3:66"},"nativeSrc":"28784:37:66","nodeType":"YulFunctionCall","src":"28784:37:66"}],"functionName":{"name":"not","nativeSrc":"28780:3:66","nodeType":"YulIdentifier","src":"28780:3:66"},"nativeSrc":"28780:42:66","nodeType":"YulFunctionCall","src":"28780:42:66"}],"functionName":{"name":"and","nativeSrc":"28765:3:66","nodeType":"YulIdentifier","src":"28765:3:66"},"nativeSrc":"28765:58:66","nodeType":"YulFunctionCall","src":"28765:58:66"}],"functionName":{"name":"sstore","nativeSrc":"28750:6:66","nodeType":"YulIdentifier","src":"28750:6:66"},"nativeSrc":"28750:74:66","nodeType":"YulFunctionCall","src":"28750:74:66"},"nativeSrc":"28750:74:66","nodeType":"YulExpressionStatement","src":"28750:74:66"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"28643:7:66","nodeType":"YulIdentifier","src":"28643:7:66"},{"name":"newLen","nativeSrc":"28652:6:66","nodeType":"YulIdentifier","src":"28652:6:66"}],"functionName":{"name":"lt","nativeSrc":"28640:2:66","nodeType":"YulIdentifier","src":"28640:2:66"},"nativeSrc":"28640:19:66","nodeType":"YulFunctionCall","src":"28640:19:66"},"nativeSrc":"28637:201:66","nodeType":"YulIf","src":"28637:201:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"28858:4:66","nodeType":"YulIdentifier","src":"28858:4:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"28872:1:66","nodeType":"YulLiteral","src":"28872:1:66","type":"","value":"1"},{"name":"newLen","nativeSrc":"28875:6:66","nodeType":"YulIdentifier","src":"28875:6:66"}],"functionName":{"name":"shl","nativeSrc":"28868:3:66","nodeType":"YulIdentifier","src":"28868:3:66"},"nativeSrc":"28868:14:66","nodeType":"YulFunctionCall","src":"28868:14:66"},{"kind":"number","nativeSrc":"28884:1:66","nodeType":"YulLiteral","src":"28884:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"28864:3:66","nodeType":"YulIdentifier","src":"28864:3:66"},"nativeSrc":"28864:22:66","nodeType":"YulFunctionCall","src":"28864:22:66"}],"functionName":{"name":"sstore","nativeSrc":"28851:6:66","nodeType":"YulIdentifier","src":"28851:6:66"},"nativeSrc":"28851:36:66","nodeType":"YulFunctionCall","src":"28851:36:66"},"nativeSrc":"28851:36:66","nodeType":"YulExpressionStatement","src":"28851:36:66"}]},"nativeSrc":"28249:648:66","nodeType":"YulCase","src":"28249:648:66","value":{"kind":"number","nativeSrc":"28254:1:66","nodeType":"YulLiteral","src":"28254:1:66","type":"","value":"1"}},{"body":{"nativeSrc":"28914:234:66","nodeType":"YulBlock","src":"28914:234:66","statements":[{"nativeSrc":"28928:14:66","nodeType":"YulVariableDeclaration","src":"28928:14:66","value":{"kind":"number","nativeSrc":"28941:1:66","nodeType":"YulLiteral","src":"28941:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"28932:5:66","nodeType":"YulTypedName","src":"28932:5:66","type":""}]},{"body":{"nativeSrc":"28977:67:66","nodeType":"YulBlock","src":"28977:67:66","statements":[{"nativeSrc":"28995:35:66","nodeType":"YulAssignment","src":"28995:35:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"29014:3:66","nodeType":"YulIdentifier","src":"29014:3:66"},{"name":"srcOffset","nativeSrc":"29019:9:66","nodeType":"YulIdentifier","src":"29019:9:66"}],"functionName":{"name":"add","nativeSrc":"29010:3:66","nodeType":"YulIdentifier","src":"29010:3:66"},"nativeSrc":"29010:19:66","nodeType":"YulFunctionCall","src":"29010:19:66"}],"functionName":{"name":"mload","nativeSrc":"29004:5:66","nodeType":"YulIdentifier","src":"29004:5:66"},"nativeSrc":"29004:26:66","nodeType":"YulFunctionCall","src":"29004:26:66"},"variableNames":[{"name":"value","nativeSrc":"28995:5:66","nodeType":"YulIdentifier","src":"28995:5:66"}]}]},"condition":{"name":"newLen","nativeSrc":"28958:6:66","nodeType":"YulIdentifier","src":"28958:6:66"},"nativeSrc":"28955:89:66","nodeType":"YulIf","src":"28955:89:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"29064:4:66","nodeType":"YulIdentifier","src":"29064:4:66"},{"arguments":[{"name":"value","nativeSrc":"29123:5:66","nodeType":"YulIdentifier","src":"29123:5:66"},{"name":"newLen","nativeSrc":"29130:6:66","nodeType":"YulIdentifier","src":"29130:6:66"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"29070:52:66","nodeType":"YulIdentifier","src":"29070:52:66"},"nativeSrc":"29070:67:66","nodeType":"YulFunctionCall","src":"29070:67:66"}],"functionName":{"name":"sstore","nativeSrc":"29057:6:66","nodeType":"YulIdentifier","src":"29057:6:66"},"nativeSrc":"29057:81:66","nodeType":"YulFunctionCall","src":"29057:81:66"},"nativeSrc":"29057:81:66","nodeType":"YulExpressionStatement","src":"29057:81:66"}]},"nativeSrc":"28906:242:66","nodeType":"YulCase","src":"28906:242:66","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"28229:6:66","nodeType":"YulIdentifier","src":"28229:6:66"},{"kind":"number","nativeSrc":"28237:2:66","nodeType":"YulLiteral","src":"28237:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"28226:2:66","nodeType":"YulIdentifier","src":"28226:2:66"},"nativeSrc":"28226:14:66","nodeType":"YulFunctionCall","src":"28226:14:66"},"nativeSrc":"28219:929:66","nodeType":"YulSwitch","src":"28219:929:66"}]},"name":"copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage","nativeSrc":"27859:1295:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"27938:4:66","nodeType":"YulTypedName","src":"27938:4:66","type":""},{"name":"src","nativeSrc":"27944:3:66","nodeType":"YulTypedName","src":"27944:3:66","type":""}],"src":"27859:1295:66"},{"body":{"nativeSrc":"29384:874:66","nodeType":"YulBlock","src":"29384:874:66","statements":[{"nativeSrc":"29394:32:66","nodeType":"YulVariableDeclaration","src":"29394:32:66","value":{"arguments":[{"name":"headStart","nativeSrc":"29412:9:66","nodeType":"YulIdentifier","src":"29412:9:66"},{"kind":"number","nativeSrc":"29423:2:66","nodeType":"YulLiteral","src":"29423:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29408:3:66","nodeType":"YulIdentifier","src":"29408:3:66"},"nativeSrc":"29408:18:66","nodeType":"YulFunctionCall","src":"29408:18:66"},"variables":[{"name":"tail_1","nativeSrc":"29398:6:66","nodeType":"YulTypedName","src":"29398:6:66","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"29442:9:66","nodeType":"YulIdentifier","src":"29442:9:66"},{"kind":"number","nativeSrc":"29453:2:66","nodeType":"YulLiteral","src":"29453:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"29435:6:66","nodeType":"YulIdentifier","src":"29435:6:66"},"nativeSrc":"29435:21:66","nodeType":"YulFunctionCall","src":"29435:21:66"},"nativeSrc":"29435:21:66","nodeType":"YulExpressionStatement","src":"29435:21:66"},{"nativeSrc":"29465:17:66","nodeType":"YulVariableDeclaration","src":"29465:17:66","value":{"name":"tail_1","nativeSrc":"29476:6:66","nodeType":"YulIdentifier","src":"29476:6:66"},"variables":[{"name":"pos","nativeSrc":"29469:3:66","nodeType":"YulTypedName","src":"29469:3:66","type":""}]},{"nativeSrc":"29491:27:66","nodeType":"YulVariableDeclaration","src":"29491:27:66","value":{"arguments":[{"name":"value0","nativeSrc":"29511:6:66","nodeType":"YulIdentifier","src":"29511:6:66"}],"functionName":{"name":"mload","nativeSrc":"29505:5:66","nodeType":"YulIdentifier","src":"29505:5:66"},"nativeSrc":"29505:13:66","nodeType":"YulFunctionCall","src":"29505:13:66"},"variables":[{"name":"length","nativeSrc":"29495:6:66","nodeType":"YulTypedName","src":"29495:6:66","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"29534:6:66","nodeType":"YulIdentifier","src":"29534:6:66"},{"name":"length","nativeSrc":"29542:6:66","nodeType":"YulIdentifier","src":"29542:6:66"}],"functionName":{"name":"mstore","nativeSrc":"29527:6:66","nodeType":"YulIdentifier","src":"29527:6:66"},"nativeSrc":"29527:22:66","nodeType":"YulFunctionCall","src":"29527:22:66"},"nativeSrc":"29527:22:66","nodeType":"YulExpressionStatement","src":"29527:22:66"},{"nativeSrc":"29558:25:66","nodeType":"YulAssignment","src":"29558:25:66","value":{"arguments":[{"name":"headStart","nativeSrc":"29569:9:66","nodeType":"YulIdentifier","src":"29569:9:66"},{"kind":"number","nativeSrc":"29580:2:66","nodeType":"YulLiteral","src":"29580:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"29565:3:66","nodeType":"YulIdentifier","src":"29565:3:66"},"nativeSrc":"29565:18:66","nodeType":"YulFunctionCall","src":"29565:18:66"},"variableNames":[{"name":"pos","nativeSrc":"29558:3:66","nodeType":"YulIdentifier","src":"29558:3:66"}]},{"nativeSrc":"29592:53:66","nodeType":"YulVariableDeclaration","src":"29592:53:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"29614:9:66","nodeType":"YulIdentifier","src":"29614:9:66"},{"arguments":[{"kind":"number","nativeSrc":"29629:1:66","nodeType":"YulLiteral","src":"29629:1:66","type":"","value":"5"},{"name":"length","nativeSrc":"29632:6:66","nodeType":"YulIdentifier","src":"29632:6:66"}],"functionName":{"name":"shl","nativeSrc":"29625:3:66","nodeType":"YulIdentifier","src":"29625:3:66"},"nativeSrc":"29625:14:66","nodeType":"YulFunctionCall","src":"29625:14:66"}],"functionName":{"name":"add","nativeSrc":"29610:3:66","nodeType":"YulIdentifier","src":"29610:3:66"},"nativeSrc":"29610:30:66","nodeType":"YulFunctionCall","src":"29610:30:66"},{"kind":"number","nativeSrc":"29642:2:66","nodeType":"YulLiteral","src":"29642:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"29606:3:66","nodeType":"YulIdentifier","src":"29606:3:66"},"nativeSrc":"29606:39:66","nodeType":"YulFunctionCall","src":"29606:39:66"},"variables":[{"name":"tail_2","nativeSrc":"29596:6:66","nodeType":"YulTypedName","src":"29596:6:66","type":""}]},{"nativeSrc":"29654:29:66","nodeType":"YulVariableDeclaration","src":"29654:29:66","value":{"arguments":[{"name":"value0","nativeSrc":"29672:6:66","nodeType":"YulIdentifier","src":"29672:6:66"},{"kind":"number","nativeSrc":"29680:2:66","nodeType":"YulLiteral","src":"29680:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29668:3:66","nodeType":"YulIdentifier","src":"29668:3:66"},"nativeSrc":"29668:15:66","nodeType":"YulFunctionCall","src":"29668:15:66"},"variables":[{"name":"srcPtr","nativeSrc":"29658:6:66","nodeType":"YulTypedName","src":"29658:6:66","type":""}]},{"nativeSrc":"29692:10:66","nodeType":"YulVariableDeclaration","src":"29692:10:66","value":{"kind":"number","nativeSrc":"29701:1:66","nodeType":"YulLiteral","src":"29701:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"29696:1:66","nodeType":"YulTypedName","src":"29696:1:66","type":""}]},{"body":{"nativeSrc":"29760:469:66","nodeType":"YulBlock","src":"29760:469:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"29781:3:66","nodeType":"YulIdentifier","src":"29781:3:66"},{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"29794:6:66","nodeType":"YulIdentifier","src":"29794:6:66"},{"name":"headStart","nativeSrc":"29802:9:66","nodeType":"YulIdentifier","src":"29802:9:66"}],"functionName":{"name":"sub","nativeSrc":"29790:3:66","nodeType":"YulIdentifier","src":"29790:3:66"},"nativeSrc":"29790:22:66","nodeType":"YulFunctionCall","src":"29790:22:66"},{"arguments":[{"kind":"number","nativeSrc":"29818:2:66","nodeType":"YulLiteral","src":"29818:2:66","type":"","value":"63"}],"functionName":{"name":"not","nativeSrc":"29814:3:66","nodeType":"YulIdentifier","src":"29814:3:66"},"nativeSrc":"29814:7:66","nodeType":"YulFunctionCall","src":"29814:7:66"}],"functionName":{"name":"add","nativeSrc":"29786:3:66","nodeType":"YulIdentifier","src":"29786:3:66"},"nativeSrc":"29786:36:66","nodeType":"YulFunctionCall","src":"29786:36:66"}],"functionName":{"name":"mstore","nativeSrc":"29774:6:66","nodeType":"YulIdentifier","src":"29774:6:66"},"nativeSrc":"29774:49:66","nodeType":"YulFunctionCall","src":"29774:49:66"},"nativeSrc":"29774:49:66","nodeType":"YulExpressionStatement","src":"29774:49:66"},{"nativeSrc":"29836:23:66","nodeType":"YulVariableDeclaration","src":"29836:23:66","value":{"arguments":[{"name":"srcPtr","nativeSrc":"29852:6:66","nodeType":"YulIdentifier","src":"29852:6:66"}],"functionName":{"name":"mload","nativeSrc":"29846:5:66","nodeType":"YulIdentifier","src":"29846:5:66"},"nativeSrc":"29846:13:66","nodeType":"YulFunctionCall","src":"29846:13:66"},"variables":[{"name":"_1","nativeSrc":"29840:2:66","nodeType":"YulTypedName","src":"29840:2:66","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nativeSrc":"29879:6:66","nodeType":"YulIdentifier","src":"29879:6:66"},{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"29897:2:66","nodeType":"YulIdentifier","src":"29897:2:66"}],"functionName":{"name":"mload","nativeSrc":"29891:5:66","nodeType":"YulIdentifier","src":"29891:5:66"},"nativeSrc":"29891:9:66","nodeType":"YulFunctionCall","src":"29891:9:66"},{"kind":"number","nativeSrc":"29902:10:66","nodeType":"YulLiteral","src":"29902:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"29887:3:66","nodeType":"YulIdentifier","src":"29887:3:66"},"nativeSrc":"29887:26:66","nodeType":"YulFunctionCall","src":"29887:26:66"}],"functionName":{"name":"mstore","nativeSrc":"29872:6:66","nodeType":"YulIdentifier","src":"29872:6:66"},"nativeSrc":"29872:42:66","nodeType":"YulFunctionCall","src":"29872:42:66"},"nativeSrc":"29872:42:66","nodeType":"YulExpressionStatement","src":"29872:42:66"},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"29938:6:66","nodeType":"YulIdentifier","src":"29938:6:66"},{"kind":"number","nativeSrc":"29946:2:66","nodeType":"YulLiteral","src":"29946:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29934:3:66","nodeType":"YulIdentifier","src":"29934:3:66"},"nativeSrc":"29934:15:66","nodeType":"YulFunctionCall","src":"29934:15:66"},{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"29965:2:66","nodeType":"YulIdentifier","src":"29965:2:66"},{"kind":"number","nativeSrc":"29969:2:66","nodeType":"YulLiteral","src":"29969:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"29961:3:66","nodeType":"YulIdentifier","src":"29961:3:66"},"nativeSrc":"29961:11:66","nodeType":"YulFunctionCall","src":"29961:11:66"}],"functionName":{"name":"mload","nativeSrc":"29955:5:66","nodeType":"YulIdentifier","src":"29955:5:66"},"nativeSrc":"29955:18:66","nodeType":"YulFunctionCall","src":"29955:18:66"},{"kind":"number","nativeSrc":"29975:6:66","nodeType":"YulLiteral","src":"29975:6:66","type":"","value":"0xffff"}],"functionName":{"name":"and","nativeSrc":"29951:3:66","nodeType":"YulIdentifier","src":"29951:3:66"},"nativeSrc":"29951:31:66","nodeType":"YulFunctionCall","src":"29951:31:66"}],"functionName":{"name":"mstore","nativeSrc":"29927:6:66","nodeType":"YulIdentifier","src":"29927:6:66"},"nativeSrc":"29927:56:66","nodeType":"YulFunctionCall","src":"29927:56:66"},"nativeSrc":"29927:56:66","nodeType":"YulExpressionStatement","src":"29927:56:66"},{"nativeSrc":"29996:38:66","nodeType":"YulVariableDeclaration","src":"29996:38:66","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"30026:2:66","nodeType":"YulIdentifier","src":"30026:2:66"},{"kind":"number","nativeSrc":"30030:2:66","nodeType":"YulLiteral","src":"30030:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"30022:3:66","nodeType":"YulIdentifier","src":"30022:3:66"},"nativeSrc":"30022:11:66","nodeType":"YulFunctionCall","src":"30022:11:66"}],"functionName":{"name":"mload","nativeSrc":"30016:5:66","nodeType":"YulIdentifier","src":"30016:5:66"},"nativeSrc":"30016:18:66","nodeType":"YulFunctionCall","src":"30016:18:66"},"variables":[{"name":"memberValue0","nativeSrc":"30000:12:66","nodeType":"YulTypedName","src":"30000:12:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"tail_2","nativeSrc":"30058:6:66","nodeType":"YulIdentifier","src":"30058:6:66"},{"kind":"number","nativeSrc":"30066:2:66","nodeType":"YulLiteral","src":"30066:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"30054:3:66","nodeType":"YulIdentifier","src":"30054:3:66"},"nativeSrc":"30054:15:66","nodeType":"YulFunctionCall","src":"30054:15:66"},{"kind":"number","nativeSrc":"30071:4:66","nodeType":"YulLiteral","src":"30071:4:66","type":"","value":"0x60"}],"functionName":{"name":"mstore","nativeSrc":"30047:6:66","nodeType":"YulIdentifier","src":"30047:6:66"},"nativeSrc":"30047:29:66","nodeType":"YulFunctionCall","src":"30047:29:66"},"nativeSrc":"30047:29:66","nodeType":"YulExpressionStatement","src":"30047:29:66"},{"nativeSrc":"30089:60:66","nodeType":"YulAssignment","src":"30089:60:66","value":{"arguments":[{"name":"memberValue0","nativeSrc":"30117:12:66","nodeType":"YulIdentifier","src":"30117:12:66"},{"arguments":[{"name":"tail_2","nativeSrc":"30135:6:66","nodeType":"YulIdentifier","src":"30135:6:66"},{"kind":"number","nativeSrc":"30143:4:66","nodeType":"YulLiteral","src":"30143:4:66","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"30131:3:66","nodeType":"YulIdentifier","src":"30131:3:66"},"nativeSrc":"30131:17:66","nodeType":"YulFunctionCall","src":"30131:17:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"30099:17:66","nodeType":"YulIdentifier","src":"30099:17:66"},"nativeSrc":"30099:50:66","nodeType":"YulFunctionCall","src":"30099:50:66"},"variableNames":[{"name":"tail_2","nativeSrc":"30089:6:66","nodeType":"YulIdentifier","src":"30089:6:66"}]},{"nativeSrc":"30162:25:66","nodeType":"YulAssignment","src":"30162:25:66","value":{"arguments":[{"name":"srcPtr","nativeSrc":"30176:6:66","nodeType":"YulIdentifier","src":"30176:6:66"},{"kind":"number","nativeSrc":"30184:2:66","nodeType":"YulLiteral","src":"30184:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"30172:3:66","nodeType":"YulIdentifier","src":"30172:3:66"},"nativeSrc":"30172:15:66","nodeType":"YulFunctionCall","src":"30172:15:66"},"variableNames":[{"name":"srcPtr","nativeSrc":"30162:6:66","nodeType":"YulIdentifier","src":"30162:6:66"}]},{"nativeSrc":"30200:19:66","nodeType":"YulAssignment","src":"30200:19:66","value":{"arguments":[{"name":"pos","nativeSrc":"30211:3:66","nodeType":"YulIdentifier","src":"30211:3:66"},{"kind":"number","nativeSrc":"30216:2:66","nodeType":"YulLiteral","src":"30216:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"30207:3:66","nodeType":"YulIdentifier","src":"30207:3:66"},"nativeSrc":"30207:12:66","nodeType":"YulFunctionCall","src":"30207:12:66"},"variableNames":[{"name":"pos","nativeSrc":"30200:3:66","nodeType":"YulIdentifier","src":"30200:3:66"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"29722:1:66","nodeType":"YulIdentifier","src":"29722:1:66"},{"name":"length","nativeSrc":"29725:6:66","nodeType":"YulIdentifier","src":"29725:6:66"}],"functionName":{"name":"lt","nativeSrc":"29719:2:66","nodeType":"YulIdentifier","src":"29719:2:66"},"nativeSrc":"29719:13:66","nodeType":"YulFunctionCall","src":"29719:13:66"},"nativeSrc":"29711:518:66","nodeType":"YulForLoop","post":{"nativeSrc":"29733:18:66","nodeType":"YulBlock","src":"29733:18:66","statements":[{"nativeSrc":"29735:14:66","nodeType":"YulAssignment","src":"29735:14:66","value":{"arguments":[{"name":"i","nativeSrc":"29744:1:66","nodeType":"YulIdentifier","src":"29744:1:66"},{"kind":"number","nativeSrc":"29747:1:66","nodeType":"YulLiteral","src":"29747:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"29740:3:66","nodeType":"YulIdentifier","src":"29740:3:66"},"nativeSrc":"29740:9:66","nodeType":"YulFunctionCall","src":"29740:9:66"},"variableNames":[{"name":"i","nativeSrc":"29735:1:66","nodeType":"YulIdentifier","src":"29735:1:66"}]}]},"pre":{"nativeSrc":"29715:3:66","nodeType":"YulBlock","src":"29715:3:66","statements":[]},"src":"29711:518:66"},{"nativeSrc":"30238:14:66","nodeType":"YulAssignment","src":"30238:14:66","value":{"name":"tail_2","nativeSrc":"30246:6:66","nodeType":"YulIdentifier","src":"30246:6:66"},"variableNames":[{"name":"tail","nativeSrc":"30238:4:66","nodeType":"YulIdentifier","src":"30238:4:66"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"29159:1099:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"29353:9:66","nodeType":"YulTypedName","src":"29353:9:66","type":""},{"name":"value0","nativeSrc":"29364:6:66","nodeType":"YulTypedName","src":"29364:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"29375:4:66","nodeType":"YulTypedName","src":"29375:4:66","type":""}],"src":"29159:1099:66"},{"body":{"nativeSrc":"30361:389:66","nodeType":"YulBlock","src":"30361:389:66","statements":[{"nativeSrc":"30371:42:66","nodeType":"YulVariableDeclaration","src":"30371:42:66","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"30389:7:66","nodeType":"YulIdentifier","src":"30389:7:66"},{"name":"headStart","nativeSrc":"30398:9:66","nodeType":"YulIdentifier","src":"30398:9:66"}],"functionName":{"name":"sub","nativeSrc":"30385:3:66","nodeType":"YulIdentifier","src":"30385:3:66"},"nativeSrc":"30385:23:66","nodeType":"YulFunctionCall","src":"30385:23:66"},{"kind":"number","nativeSrc":"30410:2:66","nodeType":"YulLiteral","src":"30410:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"30381:3:66","nodeType":"YulIdentifier","src":"30381:3:66"},"nativeSrc":"30381:32:66","nodeType":"YulFunctionCall","src":"30381:32:66"},"variables":[{"name":"_1","nativeSrc":"30375:2:66","nodeType":"YulTypedName","src":"30375:2:66","type":""}]},{"body":{"nativeSrc":"30428:16:66","nodeType":"YulBlock","src":"30428:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"30437:1:66","nodeType":"YulLiteral","src":"30437:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"30440:1:66","nodeType":"YulLiteral","src":"30440:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"30430:6:66","nodeType":"YulIdentifier","src":"30430:6:66"},"nativeSrc":"30430:12:66","nodeType":"YulFunctionCall","src":"30430:12:66"},"nativeSrc":"30430:12:66","nodeType":"YulExpressionStatement","src":"30430:12:66"}]},"condition":{"name":"_1","nativeSrc":"30425:2:66","nodeType":"YulIdentifier","src":"30425:2:66"},"nativeSrc":"30422:22:66","nodeType":"YulIf","src":"30422:22:66"},{"nativeSrc":"30453:7:66","nodeType":"YulAssignment","src":"30453:7:66","value":{"kind":"number","nativeSrc":"30459:1:66","nodeType":"YulLiteral","src":"30459:1:66","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"30453:2:66","nodeType":"YulIdentifier","src":"30453:2:66"}]},{"nativeSrc":"30469:35:66","nodeType":"YulVariableDeclaration","src":"30469:35:66","value":{"arguments":[],"functionName":{"name":"allocate_memory_3874","nativeSrc":"30482:20:66","nodeType":"YulIdentifier","src":"30482:20:66"},"nativeSrc":"30482:22:66","nodeType":"YulFunctionCall","src":"30482:22:66"},"variables":[{"name":"value","nativeSrc":"30473:5:66","nodeType":"YulTypedName","src":"30473:5:66","type":""}]},{"nativeSrc":"30513:16:66","nodeType":"YulVariableDeclaration","src":"30513:16:66","value":{"kind":"number","nativeSrc":"30528:1:66","nodeType":"YulLiteral","src":"30528:1:66","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"30517:7:66","nodeType":"YulTypedName","src":"30517:7:66","type":""}]},{"nativeSrc":"30538:34:66","nodeType":"YulAssignment","src":"30538:34:66","value":{"arguments":[{"name":"headStart","nativeSrc":"30562:9:66","nodeType":"YulIdentifier","src":"30562:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"30549:12:66","nodeType":"YulIdentifier","src":"30549:12:66"},"nativeSrc":"30549:23:66","nodeType":"YulFunctionCall","src":"30549:23:66"},"variableNames":[{"name":"value_1","nativeSrc":"30538:7:66","nodeType":"YulIdentifier","src":"30538:7:66"}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"30588:5:66","nodeType":"YulIdentifier","src":"30588:5:66"},{"name":"value_1","nativeSrc":"30595:7:66","nodeType":"YulIdentifier","src":"30595:7:66"}],"functionName":{"name":"mstore","nativeSrc":"30581:6:66","nodeType":"YulIdentifier","src":"30581:6:66"},"nativeSrc":"30581:22:66","nodeType":"YulFunctionCall","src":"30581:22:66"},"nativeSrc":"30581:22:66","nodeType":"YulExpressionStatement","src":"30581:22:66"},{"nativeSrc":"30612:16:66","nodeType":"YulVariableDeclaration","src":"30612:16:66","value":{"kind":"number","nativeSrc":"30627:1:66","nodeType":"YulLiteral","src":"30627:1:66","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"30616:7:66","nodeType":"YulTypedName","src":"30616:7:66","type":""}]},{"nativeSrc":"30637:43:66","nodeType":"YulAssignment","src":"30637:43:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"30665:9:66","nodeType":"YulIdentifier","src":"30665:9:66"},{"kind":"number","nativeSrc":"30676:2:66","nodeType":"YulLiteral","src":"30676:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"30661:3:66","nodeType":"YulIdentifier","src":"30661:3:66"},"nativeSrc":"30661:18:66","nodeType":"YulFunctionCall","src":"30661:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"30648:12:66","nodeType":"YulIdentifier","src":"30648:12:66"},"nativeSrc":"30648:32:66","nodeType":"YulFunctionCall","src":"30648:32:66"},"variableNames":[{"name":"value_2","nativeSrc":"30637:7:66","nodeType":"YulIdentifier","src":"30637:7:66"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"30700:5:66","nodeType":"YulIdentifier","src":"30700:5:66"},{"kind":"number","nativeSrc":"30707:2:66","nodeType":"YulLiteral","src":"30707:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"30696:3:66","nodeType":"YulIdentifier","src":"30696:3:66"},"nativeSrc":"30696:14:66","nodeType":"YulFunctionCall","src":"30696:14:66"},{"name":"value_2","nativeSrc":"30712:7:66","nodeType":"YulIdentifier","src":"30712:7:66"}],"functionName":{"name":"mstore","nativeSrc":"30689:6:66","nodeType":"YulIdentifier","src":"30689:6:66"},"nativeSrc":"30689:31:66","nodeType":"YulFunctionCall","src":"30689:31:66"},"nativeSrc":"30689:31:66","nodeType":"YulExpressionStatement","src":"30689:31:66"},{"nativeSrc":"30729:15:66","nodeType":"YulAssignment","src":"30729:15:66","value":{"name":"value","nativeSrc":"30739:5:66","nodeType":"YulIdentifier","src":"30739:5:66"},"variableNames":[{"name":"value0","nativeSrc":"30729:6:66","nodeType":"YulIdentifier","src":"30729:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr","nativeSrc":"30263:487:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"30327:9:66","nodeType":"YulTypedName","src":"30327:9:66","type":""},{"name":"dataEnd","nativeSrc":"30338:7:66","nodeType":"YulTypedName","src":"30338:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"30350:6:66","nodeType":"YulTypedName","src":"30350:6:66","type":""}],"src":"30263:487:66"},{"body":{"nativeSrc":"30910:179:66","nodeType":"YulBlock","src":"30910:179:66","statements":[{"nativeSrc":"30920:26:66","nodeType":"YulAssignment","src":"30920:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"30932:9:66","nodeType":"YulIdentifier","src":"30932:9:66"},{"kind":"number","nativeSrc":"30943:2:66","nodeType":"YulLiteral","src":"30943:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"30928:3:66","nodeType":"YulIdentifier","src":"30928:3:66"},"nativeSrc":"30928:18:66","nodeType":"YulFunctionCall","src":"30928:18:66"},"variableNames":[{"name":"tail","nativeSrc":"30920:4:66","nodeType":"YulIdentifier","src":"30920:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"30962:9:66","nodeType":"YulIdentifier","src":"30962:9:66"},{"arguments":[{"name":"value0","nativeSrc":"30977:6:66","nodeType":"YulIdentifier","src":"30977:6:66"},{"kind":"number","nativeSrc":"30985:10:66","nodeType":"YulLiteral","src":"30985:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nativeSrc":"30973:3:66","nodeType":"YulIdentifier","src":"30973:3:66"},"nativeSrc":"30973:23:66","nodeType":"YulFunctionCall","src":"30973:23:66"}],"functionName":{"name":"mstore","nativeSrc":"30955:6:66","nodeType":"YulIdentifier","src":"30955:6:66"},"nativeSrc":"30955:42:66","nodeType":"YulFunctionCall","src":"30955:42:66"},"nativeSrc":"30955:42:66","nodeType":"YulExpressionStatement","src":"30955:42:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"31017:9:66","nodeType":"YulIdentifier","src":"31017:9:66"},{"kind":"number","nativeSrc":"31028:2:66","nodeType":"YulLiteral","src":"31028:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"31013:3:66","nodeType":"YulIdentifier","src":"31013:3:66"},"nativeSrc":"31013:18:66","nodeType":"YulFunctionCall","src":"31013:18:66"},{"name":"value1","nativeSrc":"31033:6:66","nodeType":"YulIdentifier","src":"31033:6:66"}],"functionName":{"name":"mstore","nativeSrc":"31006:6:66","nodeType":"YulIdentifier","src":"31006:6:66"},"nativeSrc":"31006:34:66","nodeType":"YulFunctionCall","src":"31006:34:66"},"nativeSrc":"31006:34:66","nodeType":"YulExpressionStatement","src":"31006:34:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"31060:9:66","nodeType":"YulIdentifier","src":"31060:9:66"},{"kind":"number","nativeSrc":"31071:2:66","nodeType":"YulLiteral","src":"31071:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"31056:3:66","nodeType":"YulIdentifier","src":"31056:3:66"},"nativeSrc":"31056:18:66","nodeType":"YulFunctionCall","src":"31056:18:66"},{"name":"value2","nativeSrc":"31076:6:66","nodeType":"YulIdentifier","src":"31076:6:66"}],"functionName":{"name":"mstore","nativeSrc":"31049:6:66","nodeType":"YulIdentifier","src":"31049:6:66"},"nativeSrc":"31049:34:66","nodeType":"YulFunctionCall","src":"31049:34:66"},"nativeSrc":"31049:34:66","nodeType":"YulExpressionStatement","src":"31049:34:66"}]},"name":"abi_encode_tuple_t_uint32_t_uint256_t_uint256__to_t_uint32_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"30755:334:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"30863:9:66","nodeType":"YulTypedName","src":"30863:9:66","type":""},{"name":"value2","nativeSrc":"30874:6:66","nodeType":"YulTypedName","src":"30874:6:66","type":""},{"name":"value1","nativeSrc":"30882:6:66","nodeType":"YulTypedName","src":"30882:6:66","type":""},{"name":"value0","nativeSrc":"30890:6:66","nodeType":"YulTypedName","src":"30890:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"30901:4:66","nodeType":"YulTypedName","src":"30901:4:66","type":""}],"src":"30755:334:66"},{"body":{"nativeSrc":"31140:171:66","nodeType":"YulBlock","src":"31140:171:66","statements":[{"body":{"nativeSrc":"31171:111:66","nodeType":"YulBlock","src":"31171:111:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"31192:1:66","nodeType":"YulLiteral","src":"31192:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"31199:3:66","nodeType":"YulLiteral","src":"31199:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"31204:10:66","nodeType":"YulLiteral","src":"31204:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"31195:3:66","nodeType":"YulIdentifier","src":"31195:3:66"},"nativeSrc":"31195:20:66","nodeType":"YulFunctionCall","src":"31195:20:66"}],"functionName":{"name":"mstore","nativeSrc":"31185:6:66","nodeType":"YulIdentifier","src":"31185:6:66"},"nativeSrc":"31185:31:66","nodeType":"YulFunctionCall","src":"31185:31:66"},"nativeSrc":"31185:31:66","nodeType":"YulExpressionStatement","src":"31185:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"31236:1:66","nodeType":"YulLiteral","src":"31236:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"31239:4:66","nodeType":"YulLiteral","src":"31239:4:66","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"31229:6:66","nodeType":"YulIdentifier","src":"31229:6:66"},"nativeSrc":"31229:15:66","nodeType":"YulFunctionCall","src":"31229:15:66"},"nativeSrc":"31229:15:66","nodeType":"YulExpressionStatement","src":"31229:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"31264:1:66","nodeType":"YulLiteral","src":"31264:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"31267:4:66","nodeType":"YulLiteral","src":"31267:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"31257:6:66","nodeType":"YulIdentifier","src":"31257:6:66"},"nativeSrc":"31257:15:66","nodeType":"YulFunctionCall","src":"31257:15:66"},"nativeSrc":"31257:15:66","nodeType":"YulExpressionStatement","src":"31257:15:66"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"31160:1:66","nodeType":"YulIdentifier","src":"31160:1:66"}],"functionName":{"name":"iszero","nativeSrc":"31153:6:66","nodeType":"YulIdentifier","src":"31153:6:66"},"nativeSrc":"31153:9:66","nodeType":"YulFunctionCall","src":"31153:9:66"},"nativeSrc":"31150:132:66","nodeType":"YulIf","src":"31150:132:66"},{"nativeSrc":"31291:14:66","nodeType":"YulAssignment","src":"31291:14:66","value":{"arguments":[{"name":"x","nativeSrc":"31300:1:66","nodeType":"YulIdentifier","src":"31300:1:66"},{"name":"y","nativeSrc":"31303:1:66","nodeType":"YulIdentifier","src":"31303:1:66"}],"functionName":{"name":"div","nativeSrc":"31296:3:66","nodeType":"YulIdentifier","src":"31296:3:66"},"nativeSrc":"31296:9:66","nodeType":"YulFunctionCall","src":"31296:9:66"},"variableNames":[{"name":"r","nativeSrc":"31291:1:66","nodeType":"YulIdentifier","src":"31291:1:66"}]}]},"name":"checked_div_t_uint256","nativeSrc":"31094:217:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"31125:1:66","nodeType":"YulTypedName","src":"31125:1:66","type":""},{"name":"y","nativeSrc":"31128:1:66","nodeType":"YulTypedName","src":"31128:1:66","type":""}],"returnVariables":[{"name":"r","nativeSrc":"31134:1:66","nodeType":"YulTypedName","src":"31134:1:66","type":""}],"src":"31094:217:66"},{"body":{"nativeSrc":"31368:116:66","nodeType":"YulBlock","src":"31368:116:66","statements":[{"nativeSrc":"31378:20:66","nodeType":"YulAssignment","src":"31378:20:66","value":{"arguments":[{"name":"x","nativeSrc":"31393:1:66","nodeType":"YulIdentifier","src":"31393:1:66"},{"name":"y","nativeSrc":"31396:1:66","nodeType":"YulIdentifier","src":"31396:1:66"}],"functionName":{"name":"mul","nativeSrc":"31389:3:66","nodeType":"YulIdentifier","src":"31389:3:66"},"nativeSrc":"31389:9:66","nodeType":"YulFunctionCall","src":"31389:9:66"},"variableNames":[{"name":"product","nativeSrc":"31378:7:66","nodeType":"YulIdentifier","src":"31378:7:66"}]},{"body":{"nativeSrc":"31456:22:66","nodeType":"YulBlock","src":"31456:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"31458:16:66","nodeType":"YulIdentifier","src":"31458:16:66"},"nativeSrc":"31458:18:66","nodeType":"YulFunctionCall","src":"31458:18:66"},"nativeSrc":"31458:18:66","nodeType":"YulExpressionStatement","src":"31458:18:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"31427:1:66","nodeType":"YulIdentifier","src":"31427:1:66"}],"functionName":{"name":"iszero","nativeSrc":"31420:6:66","nodeType":"YulIdentifier","src":"31420:6:66"},"nativeSrc":"31420:9:66","nodeType":"YulFunctionCall","src":"31420:9:66"},{"arguments":[{"name":"y","nativeSrc":"31434:1:66","nodeType":"YulIdentifier","src":"31434:1:66"},{"arguments":[{"name":"product","nativeSrc":"31441:7:66","nodeType":"YulIdentifier","src":"31441:7:66"},{"name":"x","nativeSrc":"31450:1:66","nodeType":"YulIdentifier","src":"31450:1:66"}],"functionName":{"name":"div","nativeSrc":"31437:3:66","nodeType":"YulIdentifier","src":"31437:3:66"},"nativeSrc":"31437:15:66","nodeType":"YulFunctionCall","src":"31437:15:66"}],"functionName":{"name":"eq","nativeSrc":"31431:2:66","nodeType":"YulIdentifier","src":"31431:2:66"},"nativeSrc":"31431:22:66","nodeType":"YulFunctionCall","src":"31431:22:66"}],"functionName":{"name":"or","nativeSrc":"31417:2:66","nodeType":"YulIdentifier","src":"31417:2:66"},"nativeSrc":"31417:37:66","nodeType":"YulFunctionCall","src":"31417:37:66"}],"functionName":{"name":"iszero","nativeSrc":"31410:6:66","nodeType":"YulIdentifier","src":"31410:6:66"},"nativeSrc":"31410:45:66","nodeType":"YulFunctionCall","src":"31410:45:66"},"nativeSrc":"31407:71:66","nodeType":"YulIf","src":"31407:71:66"}]},"name":"checked_mul_t_uint256","nativeSrc":"31316:168:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"31347:1:66","nodeType":"YulTypedName","src":"31347:1:66","type":""},{"name":"y","nativeSrc":"31350:1:66","nodeType":"YulTypedName","src":"31350:1:66","type":""}],"returnVariables":[{"name":"product","nativeSrc":"31356:7:66","nodeType":"YulTypedName","src":"31356:7:66","type":""}],"src":"31316:168:66"},{"body":{"nativeSrc":"31590:154:66","nodeType":"YulBlock","src":"31590:154:66","statements":[{"nativeSrc":"31600:28:66","nodeType":"YulAssignment","src":"31600:28:66","value":{"arguments":[{"name":"array","nativeSrc":"31622:5:66","nodeType":"YulIdentifier","src":"31622:5:66"}],"functionName":{"name":"calldataload","nativeSrc":"31609:12:66","nodeType":"YulIdentifier","src":"31609:12:66"},"nativeSrc":"31609:19:66","nodeType":"YulFunctionCall","src":"31609:19:66"},"variableNames":[{"name":"value","nativeSrc":"31600:5:66","nodeType":"YulIdentifier","src":"31600:5:66"}]},{"body":{"nativeSrc":"31660:78:66","nodeType":"YulBlock","src":"31660:78:66","statements":[{"nativeSrc":"31674:54:66","nodeType":"YulAssignment","src":"31674:54:66","value":{"arguments":[{"name":"value","nativeSrc":"31687:5:66","nodeType":"YulIdentifier","src":"31687:5:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"31702:1:66","nodeType":"YulLiteral","src":"31702:1:66","type":"","value":"3"},{"arguments":[{"kind":"number","nativeSrc":"31709:2:66","nodeType":"YulLiteral","src":"31709:2:66","type":"","value":"32"},{"name":"len","nativeSrc":"31713:3:66","nodeType":"YulIdentifier","src":"31713:3:66"}],"functionName":{"name":"sub","nativeSrc":"31705:3:66","nodeType":"YulIdentifier","src":"31705:3:66"},"nativeSrc":"31705:12:66","nodeType":"YulFunctionCall","src":"31705:12:66"}],"functionName":{"name":"shl","nativeSrc":"31698:3:66","nodeType":"YulIdentifier","src":"31698:3:66"},"nativeSrc":"31698:20:66","nodeType":"YulFunctionCall","src":"31698:20:66"},{"arguments":[{"kind":"number","nativeSrc":"31724:1:66","nodeType":"YulLiteral","src":"31724:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"31720:3:66","nodeType":"YulIdentifier","src":"31720:3:66"},"nativeSrc":"31720:6:66","nodeType":"YulFunctionCall","src":"31720:6:66"}],"functionName":{"name":"shl","nativeSrc":"31694:3:66","nodeType":"YulIdentifier","src":"31694:3:66"},"nativeSrc":"31694:33:66","nodeType":"YulFunctionCall","src":"31694:33:66"}],"functionName":{"name":"and","nativeSrc":"31683:3:66","nodeType":"YulIdentifier","src":"31683:3:66"},"nativeSrc":"31683:45:66","nodeType":"YulFunctionCall","src":"31683:45:66"},"variableNames":[{"name":"value","nativeSrc":"31674:5:66","nodeType":"YulIdentifier","src":"31674:5:66"}]}]},"condition":{"arguments":[{"name":"len","nativeSrc":"31643:3:66","nodeType":"YulIdentifier","src":"31643:3:66"},{"kind":"number","nativeSrc":"31648:2:66","nodeType":"YulLiteral","src":"31648:2:66","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"31640:2:66","nodeType":"YulIdentifier","src":"31640:2:66"},"nativeSrc":"31640:11:66","nodeType":"YulFunctionCall","src":"31640:11:66"},"nativeSrc":"31637:101:66","nodeType":"YulIf","src":"31637:101:66"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes32","nativeSrc":"31489:255:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"31565:5:66","nodeType":"YulTypedName","src":"31565:5:66","type":""},{"name":"len","nativeSrc":"31572:3:66","nodeType":"YulTypedName","src":"31572:3:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"31580:5:66","nodeType":"YulTypedName","src":"31580:5:66","type":""}],"src":"31489:255:66"},{"body":{"nativeSrc":"31849:262:66","nodeType":"YulBlock","src":"31849:262:66","statements":[{"nativeSrc":"31859:29:66","nodeType":"YulVariableDeclaration","src":"31859:29:66","value":{"arguments":[{"name":"array","nativeSrc":"31882:5:66","nodeType":"YulIdentifier","src":"31882:5:66"}],"functionName":{"name":"calldataload","nativeSrc":"31869:12:66","nodeType":"YulIdentifier","src":"31869:12:66"},"nativeSrc":"31869:19:66","nodeType":"YulFunctionCall","src":"31869:19:66"},"variables":[{"name":"_1","nativeSrc":"31863:2:66","nodeType":"YulTypedName","src":"31863:2:66","type":""}]},{"nativeSrc":"31897:46:66","nodeType":"YulAssignment","src":"31897:46:66","value":{"arguments":[{"name":"_1","nativeSrc":"31910:2:66","nodeType":"YulIdentifier","src":"31910:2:66"},{"arguments":[{"kind":"number","nativeSrc":"31918:3:66","nodeType":"YulLiteral","src":"31918:3:66","type":"","value":"192"},{"kind":"number","nativeSrc":"31923:18:66","nodeType":"YulLiteral","src":"31923:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"31914:3:66","nodeType":"YulIdentifier","src":"31914:3:66"},"nativeSrc":"31914:28:66","nodeType":"YulFunctionCall","src":"31914:28:66"}],"functionName":{"name":"and","nativeSrc":"31906:3:66","nodeType":"YulIdentifier","src":"31906:3:66"},"nativeSrc":"31906:37:66","nodeType":"YulFunctionCall","src":"31906:37:66"},"variableNames":[{"name":"value","nativeSrc":"31897:5:66","nodeType":"YulIdentifier","src":"31897:5:66"}]},{"body":{"nativeSrc":"31974:131:66","nodeType":"YulBlock","src":"31974:131:66","statements":[{"nativeSrc":"31988:107:66","nodeType":"YulAssignment","src":"31988:107:66","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"32005:2:66","nodeType":"YulIdentifier","src":"32005:2:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"32017:1:66","nodeType":"YulLiteral","src":"32017:1:66","type":"","value":"3"},{"arguments":[{"kind":"number","nativeSrc":"32024:1:66","nodeType":"YulLiteral","src":"32024:1:66","type":"","value":"8"},{"name":"len","nativeSrc":"32027:3:66","nodeType":"YulIdentifier","src":"32027:3:66"}],"functionName":{"name":"sub","nativeSrc":"32020:3:66","nodeType":"YulIdentifier","src":"32020:3:66"},"nativeSrc":"32020:11:66","nodeType":"YulFunctionCall","src":"32020:11:66"}],"functionName":{"name":"shl","nativeSrc":"32013:3:66","nodeType":"YulIdentifier","src":"32013:3:66"},"nativeSrc":"32013:19:66","nodeType":"YulFunctionCall","src":"32013:19:66"},{"arguments":[{"kind":"number","nativeSrc":"32038:3:66","nodeType":"YulLiteral","src":"32038:3:66","type":"","value":"192"},{"kind":"number","nativeSrc":"32043:18:66","nodeType":"YulLiteral","src":"32043:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"32034:3:66","nodeType":"YulIdentifier","src":"32034:3:66"},"nativeSrc":"32034:28:66","nodeType":"YulFunctionCall","src":"32034:28:66"}],"functionName":{"name":"shl","nativeSrc":"32009:3:66","nodeType":"YulIdentifier","src":"32009:3:66"},"nativeSrc":"32009:54:66","nodeType":"YulFunctionCall","src":"32009:54:66"}],"functionName":{"name":"and","nativeSrc":"32001:3:66","nodeType":"YulIdentifier","src":"32001:3:66"},"nativeSrc":"32001:63:66","nodeType":"YulFunctionCall","src":"32001:63:66"},{"arguments":[{"kind":"number","nativeSrc":"32070:3:66","nodeType":"YulLiteral","src":"32070:3:66","type":"","value":"192"},{"kind":"number","nativeSrc":"32075:18:66","nodeType":"YulLiteral","src":"32075:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"32066:3:66","nodeType":"YulIdentifier","src":"32066:3:66"},"nativeSrc":"32066:28:66","nodeType":"YulFunctionCall","src":"32066:28:66"}],"functionName":{"name":"and","nativeSrc":"31997:3:66","nodeType":"YulIdentifier","src":"31997:3:66"},"nativeSrc":"31997:98:66","nodeType":"YulFunctionCall","src":"31997:98:66"},"variableNames":[{"name":"value","nativeSrc":"31988:5:66","nodeType":"YulIdentifier","src":"31988:5:66"}]}]},"condition":{"arguments":[{"name":"len","nativeSrc":"31958:3:66","nodeType":"YulIdentifier","src":"31958:3:66"},{"kind":"number","nativeSrc":"31963:1:66","nodeType":"YulLiteral","src":"31963:1:66","type":"","value":"8"}],"functionName":{"name":"lt","nativeSrc":"31955:2:66","nodeType":"YulIdentifier","src":"31955:2:66"},"nativeSrc":"31955:10:66","nodeType":"YulFunctionCall","src":"31955:10:66"},"nativeSrc":"31952:153:66","nodeType":"YulIf","src":"31952:153:66"}]},"name":"convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes8","nativeSrc":"31749:362:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"31824:5:66","nodeType":"YulTypedName","src":"31824:5:66","type":""},{"name":"len","nativeSrc":"31831:3:66","nodeType":"YulTypedName","src":"31831:3:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"31839:5:66","nodeType":"YulTypedName","src":"31839:5:66","type":""}],"src":"31749:362:66"},{"body":{"nativeSrc":"32333:351:66","nodeType":"YulBlock","src":"32333:351:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"32350:3:66","nodeType":"YulIdentifier","src":"32350:3:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"32363:3:66","nodeType":"YulLiteral","src":"32363:3:66","type":"","value":"192"},{"name":"value0","nativeSrc":"32368:6:66","nodeType":"YulIdentifier","src":"32368:6:66"}],"functionName":{"name":"shl","nativeSrc":"32359:3:66","nodeType":"YulIdentifier","src":"32359:3:66"},"nativeSrc":"32359:16:66","nodeType":"YulFunctionCall","src":"32359:16:66"},{"arguments":[{"kind":"number","nativeSrc":"32381:3:66","nodeType":"YulLiteral","src":"32381:3:66","type":"","value":"192"},{"kind":"number","nativeSrc":"32386:18:66","nodeType":"YulLiteral","src":"32386:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"32377:3:66","nodeType":"YulIdentifier","src":"32377:3:66"},"nativeSrc":"32377:28:66","nodeType":"YulFunctionCall","src":"32377:28:66"}],"functionName":{"name":"and","nativeSrc":"32355:3:66","nodeType":"YulIdentifier","src":"32355:3:66"},"nativeSrc":"32355:51:66","nodeType":"YulFunctionCall","src":"32355:51:66"}],"functionName":{"name":"mstore","nativeSrc":"32343:6:66","nodeType":"YulIdentifier","src":"32343:6:66"},"nativeSrc":"32343:64:66","nodeType":"YulFunctionCall","src":"32343:64:66"},"nativeSrc":"32343:64:66","nodeType":"YulExpressionStatement","src":"32343:64:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"32427:3:66","nodeType":"YulIdentifier","src":"32427:3:66"},{"kind":"number","nativeSrc":"32432:1:66","nodeType":"YulLiteral","src":"32432:1:66","type":"","value":"8"}],"functionName":{"name":"add","nativeSrc":"32423:3:66","nodeType":"YulIdentifier","src":"32423:3:66"},"nativeSrc":"32423:11:66","nodeType":"YulFunctionCall","src":"32423:11:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"32444:3:66","nodeType":"YulLiteral","src":"32444:3:66","type":"","value":"224"},{"name":"value1","nativeSrc":"32449:6:66","nodeType":"YulIdentifier","src":"32449:6:66"}],"functionName":{"name":"shl","nativeSrc":"32440:3:66","nodeType":"YulIdentifier","src":"32440:3:66"},"nativeSrc":"32440:16:66","nodeType":"YulFunctionCall","src":"32440:16:66"},{"arguments":[{"kind":"number","nativeSrc":"32462:3:66","nodeType":"YulLiteral","src":"32462:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"32467:10:66","nodeType":"YulLiteral","src":"32467:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"32458:3:66","nodeType":"YulIdentifier","src":"32458:3:66"},"nativeSrc":"32458:20:66","nodeType":"YulFunctionCall","src":"32458:20:66"}],"functionName":{"name":"and","nativeSrc":"32436:3:66","nodeType":"YulIdentifier","src":"32436:3:66"},"nativeSrc":"32436:43:66","nodeType":"YulFunctionCall","src":"32436:43:66"}],"functionName":{"name":"mstore","nativeSrc":"32416:6:66","nodeType":"YulIdentifier","src":"32416:6:66"},"nativeSrc":"32416:64:66","nodeType":"YulFunctionCall","src":"32416:64:66"},"nativeSrc":"32416:64:66","nodeType":"YulExpressionStatement","src":"32416:64:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"32500:3:66","nodeType":"YulIdentifier","src":"32500:3:66"},{"kind":"number","nativeSrc":"32505:2:66","nodeType":"YulLiteral","src":"32505:2:66","type":"","value":"12"}],"functionName":{"name":"add","nativeSrc":"32496:3:66","nodeType":"YulIdentifier","src":"32496:3:66"},"nativeSrc":"32496:12:66","nodeType":"YulFunctionCall","src":"32496:12:66"},{"name":"value2","nativeSrc":"32510:6:66","nodeType":"YulIdentifier","src":"32510:6:66"}],"functionName":{"name":"mstore","nativeSrc":"32489:6:66","nodeType":"YulIdentifier","src":"32489:6:66"},"nativeSrc":"32489:28:66","nodeType":"YulFunctionCall","src":"32489:28:66"},"nativeSrc":"32489:28:66","nodeType":"YulExpressionStatement","src":"32489:28:66"},{"nativeSrc":"32526:27:66","nodeType":"YulVariableDeclaration","src":"32526:27:66","value":{"arguments":[{"name":"value3","nativeSrc":"32546:6:66","nodeType":"YulIdentifier","src":"32546:6:66"}],"functionName":{"name":"mload","nativeSrc":"32540:5:66","nodeType":"YulIdentifier","src":"32540:5:66"},"nativeSrc":"32540:13:66","nodeType":"YulFunctionCall","src":"32540:13:66"},"variables":[{"name":"length","nativeSrc":"32530:6:66","nodeType":"YulTypedName","src":"32530:6:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value3","nativeSrc":"32601:6:66","nodeType":"YulIdentifier","src":"32601:6:66"},{"kind":"number","nativeSrc":"32609:4:66","nodeType":"YulLiteral","src":"32609:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"32597:3:66","nodeType":"YulIdentifier","src":"32597:3:66"},"nativeSrc":"32597:17:66","nodeType":"YulFunctionCall","src":"32597:17:66"},{"arguments":[{"name":"pos","nativeSrc":"32620:3:66","nodeType":"YulIdentifier","src":"32620:3:66"},{"kind":"number","nativeSrc":"32625:2:66","nodeType":"YulLiteral","src":"32625:2:66","type":"","value":"44"}],"functionName":{"name":"add","nativeSrc":"32616:3:66","nodeType":"YulIdentifier","src":"32616:3:66"},"nativeSrc":"32616:12:66","nodeType":"YulFunctionCall","src":"32616:12:66"},{"name":"length","nativeSrc":"32630:6:66","nodeType":"YulIdentifier","src":"32630:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"32562:34:66","nodeType":"YulIdentifier","src":"32562:34:66"},"nativeSrc":"32562:75:66","nodeType":"YulFunctionCall","src":"32562:75:66"},"nativeSrc":"32562:75:66","nodeType":"YulExpressionStatement","src":"32562:75:66"},{"nativeSrc":"32646:32:66","nodeType":"YulAssignment","src":"32646:32:66","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"32661:3:66","nodeType":"YulIdentifier","src":"32661:3:66"},{"name":"length","nativeSrc":"32666:6:66","nodeType":"YulIdentifier","src":"32666:6:66"}],"functionName":{"name":"add","nativeSrc":"32657:3:66","nodeType":"YulIdentifier","src":"32657:3:66"},"nativeSrc":"32657:16:66","nodeType":"YulFunctionCall","src":"32657:16:66"},{"kind":"number","nativeSrc":"32675:2:66","nodeType":"YulLiteral","src":"32675:2:66","type":"","value":"44"}],"functionName":{"name":"add","nativeSrc":"32653:3:66","nodeType":"YulIdentifier","src":"32653:3:66"},"nativeSrc":"32653:25:66","nodeType":"YulFunctionCall","src":"32653:25:66"},"variableNames":[{"name":"end","nativeSrc":"32646:3:66","nodeType":"YulIdentifier","src":"32646:3:66"}]}]},"name":"abi_encode_tuple_packed_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__to_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"32116:568:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"32285:3:66","nodeType":"YulTypedName","src":"32285:3:66","type":""},{"name":"value3","nativeSrc":"32290:6:66","nodeType":"YulTypedName","src":"32290:6:66","type":""},{"name":"value2","nativeSrc":"32298:6:66","nodeType":"YulTypedName","src":"32298:6:66","type":""},{"name":"value1","nativeSrc":"32306:6:66","nodeType":"YulTypedName","src":"32306:6:66","type":""},{"name":"value0","nativeSrc":"32314:6:66","nodeType":"YulTypedName","src":"32314:6:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"32325:3:66","nodeType":"YulTypedName","src":"32325:3:66","type":""}],"src":"32116:568:66"},{"body":{"nativeSrc":"32834:145:66","nodeType":"YulBlock","src":"32834:145:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"32851:3:66","nodeType":"YulIdentifier","src":"32851:3:66"},{"name":"value0","nativeSrc":"32856:6:66","nodeType":"YulIdentifier","src":"32856:6:66"}],"functionName":{"name":"mstore","nativeSrc":"32844:6:66","nodeType":"YulIdentifier","src":"32844:6:66"},"nativeSrc":"32844:19:66","nodeType":"YulFunctionCall","src":"32844:19:66"},"nativeSrc":"32844:19:66","nodeType":"YulExpressionStatement","src":"32844:19:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"32883:3:66","nodeType":"YulIdentifier","src":"32883:3:66"},{"kind":"number","nativeSrc":"32888:2:66","nodeType":"YulLiteral","src":"32888:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"32879:3:66","nodeType":"YulIdentifier","src":"32879:3:66"},"nativeSrc":"32879:12:66","nodeType":"YulFunctionCall","src":"32879:12:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"32901:3:66","nodeType":"YulLiteral","src":"32901:3:66","type":"","value":"192"},{"name":"value1","nativeSrc":"32906:6:66","nodeType":"YulIdentifier","src":"32906:6:66"}],"functionName":{"name":"shl","nativeSrc":"32897:3:66","nodeType":"YulIdentifier","src":"32897:3:66"},"nativeSrc":"32897:16:66","nodeType":"YulFunctionCall","src":"32897:16:66"},{"arguments":[{"kind":"number","nativeSrc":"32919:3:66","nodeType":"YulLiteral","src":"32919:3:66","type":"","value":"192"},{"kind":"number","nativeSrc":"32924:18:66","nodeType":"YulLiteral","src":"32924:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"32915:3:66","nodeType":"YulIdentifier","src":"32915:3:66"},"nativeSrc":"32915:28:66","nodeType":"YulFunctionCall","src":"32915:28:66"}],"functionName":{"name":"and","nativeSrc":"32893:3:66","nodeType":"YulIdentifier","src":"32893:3:66"},"nativeSrc":"32893:51:66","nodeType":"YulFunctionCall","src":"32893:51:66"}],"functionName":{"name":"mstore","nativeSrc":"32872:6:66","nodeType":"YulIdentifier","src":"32872:6:66"},"nativeSrc":"32872:73:66","nodeType":"YulFunctionCall","src":"32872:73:66"},"nativeSrc":"32872:73:66","nodeType":"YulExpressionStatement","src":"32872:73:66"},{"nativeSrc":"32954:19:66","nodeType":"YulAssignment","src":"32954:19:66","value":{"arguments":[{"name":"pos","nativeSrc":"32965:3:66","nodeType":"YulIdentifier","src":"32965:3:66"},{"kind":"number","nativeSrc":"32970:2:66","nodeType":"YulLiteral","src":"32970:2:66","type":"","value":"40"}],"functionName":{"name":"add","nativeSrc":"32961:3:66","nodeType":"YulIdentifier","src":"32961:3:66"},"nativeSrc":"32961:12:66","nodeType":"YulFunctionCall","src":"32961:12:66"},"variableNames":[{"name":"end","nativeSrc":"32954:3:66","nodeType":"YulIdentifier","src":"32954:3:66"}]}]},"name":"abi_encode_tuple_packed_t_bytes32_t_uint64__to_t_bytes32_t_uint64__nonPadded_inplace_fromStack_reversed","nativeSrc":"32689:290:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"32802:3:66","nodeType":"YulTypedName","src":"32802:3:66","type":""},{"name":"value1","nativeSrc":"32807:6:66","nodeType":"YulTypedName","src":"32807:6:66","type":""},{"name":"value0","nativeSrc":"32815:6:66","nodeType":"YulTypedName","src":"32815:6:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"32826:3:66","nodeType":"YulTypedName","src":"32826:3:66","type":""}],"src":"32689:290:66"},{"body":{"nativeSrc":"33203:313:66","nodeType":"YulBlock","src":"33203:313:66","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"33220:3:66","nodeType":"YulIdentifier","src":"33220:3:66"},{"name":"value0","nativeSrc":"33225:6:66","nodeType":"YulIdentifier","src":"33225:6:66"}],"functionName":{"name":"mstore","nativeSrc":"33213:6:66","nodeType":"YulIdentifier","src":"33213:6:66"},"nativeSrc":"33213:19:66","nodeType":"YulFunctionCall","src":"33213:19:66"},"nativeSrc":"33213:19:66","nodeType":"YulExpressionStatement","src":"33213:19:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"33252:3:66","nodeType":"YulIdentifier","src":"33252:3:66"},{"kind":"number","nativeSrc":"33257:2:66","nodeType":"YulLiteral","src":"33257:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"33248:3:66","nodeType":"YulIdentifier","src":"33248:3:66"},"nativeSrc":"33248:12:66","nodeType":"YulFunctionCall","src":"33248:12:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"33270:3:66","nodeType":"YulLiteral","src":"33270:3:66","type":"","value":"192"},{"name":"value1","nativeSrc":"33275:6:66","nodeType":"YulIdentifier","src":"33275:6:66"}],"functionName":{"name":"shl","nativeSrc":"33266:3:66","nodeType":"YulIdentifier","src":"33266:3:66"},"nativeSrc":"33266:16:66","nodeType":"YulFunctionCall","src":"33266:16:66"},{"arguments":[{"kind":"number","nativeSrc":"33288:3:66","nodeType":"YulLiteral","src":"33288:3:66","type":"","value":"192"},{"kind":"number","nativeSrc":"33293:18:66","nodeType":"YulLiteral","src":"33293:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"shl","nativeSrc":"33284:3:66","nodeType":"YulIdentifier","src":"33284:3:66"},"nativeSrc":"33284:28:66","nodeType":"YulFunctionCall","src":"33284:28:66"}],"functionName":{"name":"and","nativeSrc":"33262:3:66","nodeType":"YulIdentifier","src":"33262:3:66"},"nativeSrc":"33262:51:66","nodeType":"YulFunctionCall","src":"33262:51:66"}],"functionName":{"name":"mstore","nativeSrc":"33241:6:66","nodeType":"YulIdentifier","src":"33241:6:66"},"nativeSrc":"33241:73:66","nodeType":"YulFunctionCall","src":"33241:73:66"},"nativeSrc":"33241:73:66","nodeType":"YulExpressionStatement","src":"33241:73:66"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"33334:3:66","nodeType":"YulIdentifier","src":"33334:3:66"},{"kind":"number","nativeSrc":"33339:2:66","nodeType":"YulLiteral","src":"33339:2:66","type":"","value":"40"}],"functionName":{"name":"add","nativeSrc":"33330:3:66","nodeType":"YulIdentifier","src":"33330:3:66"},"nativeSrc":"33330:12:66","nodeType":"YulFunctionCall","src":"33330:12:66"},{"name":"value2","nativeSrc":"33344:6:66","nodeType":"YulIdentifier","src":"33344:6:66"}],"functionName":{"name":"mstore","nativeSrc":"33323:6:66","nodeType":"YulIdentifier","src":"33323:6:66"},"nativeSrc":"33323:28:66","nodeType":"YulFunctionCall","src":"33323:28:66"},"nativeSrc":"33323:28:66","nodeType":"YulExpressionStatement","src":"33323:28:66"},{"nativeSrc":"33360:27:66","nodeType":"YulVariableDeclaration","src":"33360:27:66","value":{"arguments":[{"name":"value3","nativeSrc":"33380:6:66","nodeType":"YulIdentifier","src":"33380:6:66"}],"functionName":{"name":"mload","nativeSrc":"33374:5:66","nodeType":"YulIdentifier","src":"33374:5:66"},"nativeSrc":"33374:13:66","nodeType":"YulFunctionCall","src":"33374:13:66"},"variables":[{"name":"length","nativeSrc":"33364:6:66","nodeType":"YulTypedName","src":"33364:6:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value3","nativeSrc":"33435:6:66","nodeType":"YulIdentifier","src":"33435:6:66"},{"kind":"number","nativeSrc":"33443:2:66","nodeType":"YulLiteral","src":"33443:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"33431:3:66","nodeType":"YulIdentifier","src":"33431:3:66"},"nativeSrc":"33431:15:66","nodeType":"YulFunctionCall","src":"33431:15:66"},{"arguments":[{"name":"pos","nativeSrc":"33452:3:66","nodeType":"YulIdentifier","src":"33452:3:66"},{"kind":"number","nativeSrc":"33457:2:66","nodeType":"YulLiteral","src":"33457:2:66","type":"","value":"72"}],"functionName":{"name":"add","nativeSrc":"33448:3:66","nodeType":"YulIdentifier","src":"33448:3:66"},"nativeSrc":"33448:12:66","nodeType":"YulFunctionCall","src":"33448:12:66"},{"name":"length","nativeSrc":"33462:6:66","nodeType":"YulIdentifier","src":"33462:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"33396:34:66","nodeType":"YulIdentifier","src":"33396:34:66"},"nativeSrc":"33396:73:66","nodeType":"YulFunctionCall","src":"33396:73:66"},"nativeSrc":"33396:73:66","nodeType":"YulExpressionStatement","src":"33396:73:66"},{"nativeSrc":"33478:32:66","nodeType":"YulAssignment","src":"33478:32:66","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"33493:3:66","nodeType":"YulIdentifier","src":"33493:3:66"},{"name":"length","nativeSrc":"33498:6:66","nodeType":"YulIdentifier","src":"33498:6:66"}],"functionName":{"name":"add","nativeSrc":"33489:3:66","nodeType":"YulIdentifier","src":"33489:3:66"},"nativeSrc":"33489:16:66","nodeType":"YulFunctionCall","src":"33489:16:66"},{"kind":"number","nativeSrc":"33507:2:66","nodeType":"YulLiteral","src":"33507:2:66","type":"","value":"72"}],"functionName":{"name":"add","nativeSrc":"33485:3:66","nodeType":"YulIdentifier","src":"33485:3:66"},"nativeSrc":"33485:25:66","nodeType":"YulFunctionCall","src":"33485:25:66"},"variableNames":[{"name":"end","nativeSrc":"33478:3:66","nodeType":"YulIdentifier","src":"33478:3:66"}]}]},"name":"abi_encode_tuple_packed_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"32984:532:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"33155:3:66","nodeType":"YulTypedName","src":"33155:3:66","type":""},{"name":"value3","nativeSrc":"33160:6:66","nodeType":"YulTypedName","src":"33160:6:66","type":""},{"name":"value2","nativeSrc":"33168:6:66","nodeType":"YulTypedName","src":"33168:6:66","type":""},{"name":"value1","nativeSrc":"33176:6:66","nodeType":"YulTypedName","src":"33176:6:66","type":""},{"name":"value0","nativeSrc":"33184:6:66","nodeType":"YulTypedName","src":"33184:6:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"33195:3:66","nodeType":"YulTypedName","src":"33195:3:66","type":""}],"src":"32984:532:66"},{"body":{"nativeSrc":"33634:447:66","nodeType":"YulBlock","src":"33634:447:66","statements":[{"nativeSrc":"33644:43:66","nodeType":"YulVariableDeclaration","src":"33644:43:66","value":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"33662:7:66","nodeType":"YulIdentifier","src":"33662:7:66"},{"name":"headStart","nativeSrc":"33671:9:66","nodeType":"YulIdentifier","src":"33671:9:66"}],"functionName":{"name":"sub","nativeSrc":"33658:3:66","nodeType":"YulIdentifier","src":"33658:3:66"},"nativeSrc":"33658:23:66","nodeType":"YulFunctionCall","src":"33658:23:66"},{"kind":"number","nativeSrc":"33683:3:66","nodeType":"YulLiteral","src":"33683:3:66","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"33654:3:66","nodeType":"YulIdentifier","src":"33654:3:66"},"nativeSrc":"33654:33:66","nodeType":"YulFunctionCall","src":"33654:33:66"},"variables":[{"name":"_1","nativeSrc":"33648:2:66","nodeType":"YulTypedName","src":"33648:2:66","type":""}]},{"body":{"nativeSrc":"33702:16:66","nodeType":"YulBlock","src":"33702:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"33711:1:66","nodeType":"YulLiteral","src":"33711:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"33714:1:66","nodeType":"YulLiteral","src":"33714:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"33704:6:66","nodeType":"YulIdentifier","src":"33704:6:66"},"nativeSrc":"33704:12:66","nodeType":"YulFunctionCall","src":"33704:12:66"},"nativeSrc":"33704:12:66","nodeType":"YulExpressionStatement","src":"33704:12:66"}]},"condition":{"name":"_1","nativeSrc":"33699:2:66","nodeType":"YulIdentifier","src":"33699:2:66"},"nativeSrc":"33696:22:66","nodeType":"YulIf","src":"33696:22:66"},{"nativeSrc":"33727:7:66","nodeType":"YulAssignment","src":"33727:7:66","value":{"kind":"number","nativeSrc":"33733:1:66","nodeType":"YulLiteral","src":"33733:1:66","type":"","value":"0"},"variableNames":[{"name":"_1","nativeSrc":"33727:2:66","nodeType":"YulIdentifier","src":"33727:2:66"}]},{"nativeSrc":"33743:35:66","nodeType":"YulVariableDeclaration","src":"33743:35:66","value":{"arguments":[],"functionName":{"name":"allocate_memory_3873","nativeSrc":"33756:20:66","nodeType":"YulIdentifier","src":"33756:20:66"},"nativeSrc":"33756:22:66","nodeType":"YulFunctionCall","src":"33756:22:66"},"variables":[{"name":"value","nativeSrc":"33747:5:66","nodeType":"YulTypedName","src":"33747:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"33794:5:66","nodeType":"YulIdentifier","src":"33794:5:66"},{"arguments":[{"name":"headStart","nativeSrc":"33807:9:66","nodeType":"YulIdentifier","src":"33807:9:66"}],"functionName":{"name":"mload","nativeSrc":"33801:5:66","nodeType":"YulIdentifier","src":"33801:5:66"},"nativeSrc":"33801:16:66","nodeType":"YulFunctionCall","src":"33801:16:66"}],"functionName":{"name":"mstore","nativeSrc":"33787:6:66","nodeType":"YulIdentifier","src":"33787:6:66"},"nativeSrc":"33787:31:66","nodeType":"YulFunctionCall","src":"33787:31:66"},"nativeSrc":"33787:31:66","nodeType":"YulExpressionStatement","src":"33787:31:66"},{"nativeSrc":"33827:40:66","nodeType":"YulVariableDeclaration","src":"33827:40:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"33852:9:66","nodeType":"YulIdentifier","src":"33852:9:66"},{"kind":"number","nativeSrc":"33863:2:66","nodeType":"YulLiteral","src":"33863:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"33848:3:66","nodeType":"YulIdentifier","src":"33848:3:66"},"nativeSrc":"33848:18:66","nodeType":"YulFunctionCall","src":"33848:18:66"}],"functionName":{"name":"mload","nativeSrc":"33842:5:66","nodeType":"YulIdentifier","src":"33842:5:66"},"nativeSrc":"33842:25:66","nodeType":"YulFunctionCall","src":"33842:25:66"},"variables":[{"name":"value_1","nativeSrc":"33831:7:66","nodeType":"YulTypedName","src":"33831:7:66","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"33900:7:66","nodeType":"YulIdentifier","src":"33900:7:66"}],"functionName":{"name":"validator_revert_uint64","nativeSrc":"33876:23:66","nodeType":"YulIdentifier","src":"33876:23:66"},"nativeSrc":"33876:32:66","nodeType":"YulFunctionCall","src":"33876:32:66"},"nativeSrc":"33876:32:66","nodeType":"YulExpressionStatement","src":"33876:32:66"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"33928:5:66","nodeType":"YulIdentifier","src":"33928:5:66"},{"kind":"number","nativeSrc":"33935:2:66","nodeType":"YulLiteral","src":"33935:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"33924:3:66","nodeType":"YulIdentifier","src":"33924:3:66"},"nativeSrc":"33924:14:66","nodeType":"YulFunctionCall","src":"33924:14:66"},{"name":"value_1","nativeSrc":"33940:7:66","nodeType":"YulIdentifier","src":"33940:7:66"}],"functionName":{"name":"mstore","nativeSrc":"33917:6:66","nodeType":"YulIdentifier","src":"33917:6:66"},"nativeSrc":"33917:31:66","nodeType":"YulFunctionCall","src":"33917:31:66"},"nativeSrc":"33917:31:66","nodeType":"YulExpressionStatement","src":"33917:31:66"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"33968:5:66","nodeType":"YulIdentifier","src":"33968:5:66"},{"kind":"number","nativeSrc":"33975:2:66","nodeType":"YulLiteral","src":"33975:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"33964:3:66","nodeType":"YulIdentifier","src":"33964:3:66"},"nativeSrc":"33964:14:66","nodeType":"YulFunctionCall","src":"33964:14:66"},{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"34026:9:66","nodeType":"YulIdentifier","src":"34026:9:66"},{"kind":"number","nativeSrc":"34037:2:66","nodeType":"YulLiteral","src":"34037:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"34022:3:66","nodeType":"YulIdentifier","src":"34022:3:66"},"nativeSrc":"34022:18:66","nodeType":"YulFunctionCall","src":"34022:18:66"},{"name":"dataEnd","nativeSrc":"34042:7:66","nodeType":"YulIdentifier","src":"34042:7:66"}],"functionName":{"name":"abi_decode_struct_MessagingFee_fromMemory","nativeSrc":"33980:41:66","nodeType":"YulIdentifier","src":"33980:41:66"},"nativeSrc":"33980:70:66","nodeType":"YulFunctionCall","src":"33980:70:66"}],"functionName":{"name":"mstore","nativeSrc":"33957:6:66","nodeType":"YulIdentifier","src":"33957:6:66"},"nativeSrc":"33957:94:66","nodeType":"YulFunctionCall","src":"33957:94:66"},"nativeSrc":"33957:94:66","nodeType":"YulExpressionStatement","src":"33957:94:66"},{"nativeSrc":"34060:15:66","nodeType":"YulAssignment","src":"34060:15:66","value":{"name":"value","nativeSrc":"34070:5:66","nodeType":"YulIdentifier","src":"34070:5:66"},"variableNames":[{"name":"value0","nativeSrc":"34060:6:66","nodeType":"YulIdentifier","src":"34060:6:66"}]}]},"name":"abi_decode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_fromMemory","nativeSrc":"33521:560:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"33600:9:66","nodeType":"YulTypedName","src":"33600:9:66","type":""},{"name":"dataEnd","nativeSrc":"33611:7:66","nodeType":"YulTypedName","src":"33611:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"33623:6:66","nodeType":"YulTypedName","src":"33623:6:66","type":""}],"src":"33521:560:66"},{"body":{"nativeSrc":"34243:214:66","nodeType":"YulBlock","src":"34243:214:66","statements":[{"nativeSrc":"34253:26:66","nodeType":"YulAssignment","src":"34253:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"34265:9:66","nodeType":"YulIdentifier","src":"34265:9:66"},{"kind":"number","nativeSrc":"34276:2:66","nodeType":"YulLiteral","src":"34276:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"34261:3:66","nodeType":"YulIdentifier","src":"34261:3:66"},"nativeSrc":"34261:18:66","nodeType":"YulFunctionCall","src":"34261:18:66"},"variableNames":[{"name":"tail","nativeSrc":"34253:4:66","nodeType":"YulIdentifier","src":"34253:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"34295:9:66","nodeType":"YulIdentifier","src":"34295:9:66"},{"arguments":[{"name":"value0","nativeSrc":"34310:6:66","nodeType":"YulIdentifier","src":"34310:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"34326:3:66","nodeType":"YulLiteral","src":"34326:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"34331:1:66","nodeType":"YulLiteral","src":"34331:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"34322:3:66","nodeType":"YulIdentifier","src":"34322:3:66"},"nativeSrc":"34322:11:66","nodeType":"YulFunctionCall","src":"34322:11:66"},{"kind":"number","nativeSrc":"34335:1:66","nodeType":"YulLiteral","src":"34335:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"34318:3:66","nodeType":"YulIdentifier","src":"34318:3:66"},"nativeSrc":"34318:19:66","nodeType":"YulFunctionCall","src":"34318:19:66"}],"functionName":{"name":"and","nativeSrc":"34306:3:66","nodeType":"YulIdentifier","src":"34306:3:66"},"nativeSrc":"34306:32:66","nodeType":"YulFunctionCall","src":"34306:32:66"}],"functionName":{"name":"mstore","nativeSrc":"34288:6:66","nodeType":"YulIdentifier","src":"34288:6:66"},"nativeSrc":"34288:51:66","nodeType":"YulFunctionCall","src":"34288:51:66"},"nativeSrc":"34288:51:66","nodeType":"YulExpressionStatement","src":"34288:51:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"34359:9:66","nodeType":"YulIdentifier","src":"34359:9:66"},{"kind":"number","nativeSrc":"34370:2:66","nodeType":"YulLiteral","src":"34370:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"34355:3:66","nodeType":"YulIdentifier","src":"34355:3:66"},"nativeSrc":"34355:18:66","nodeType":"YulFunctionCall","src":"34355:18:66"},{"arguments":[{"name":"value1","nativeSrc":"34379:6:66","nodeType":"YulIdentifier","src":"34379:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"34395:3:66","nodeType":"YulLiteral","src":"34395:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"34400:1:66","nodeType":"YulLiteral","src":"34400:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"34391:3:66","nodeType":"YulIdentifier","src":"34391:3:66"},"nativeSrc":"34391:11:66","nodeType":"YulFunctionCall","src":"34391:11:66"},{"kind":"number","nativeSrc":"34404:1:66","nodeType":"YulLiteral","src":"34404:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"34387:3:66","nodeType":"YulIdentifier","src":"34387:3:66"},"nativeSrc":"34387:19:66","nodeType":"YulFunctionCall","src":"34387:19:66"}],"functionName":{"name":"and","nativeSrc":"34375:3:66","nodeType":"YulIdentifier","src":"34375:3:66"},"nativeSrc":"34375:32:66","nodeType":"YulFunctionCall","src":"34375:32:66"}],"functionName":{"name":"mstore","nativeSrc":"34348:6:66","nodeType":"YulIdentifier","src":"34348:6:66"},"nativeSrc":"34348:60:66","nodeType":"YulFunctionCall","src":"34348:60:66"},"nativeSrc":"34348:60:66","nodeType":"YulExpressionStatement","src":"34348:60:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"34428:9:66","nodeType":"YulIdentifier","src":"34428:9:66"},{"kind":"number","nativeSrc":"34439:2:66","nodeType":"YulLiteral","src":"34439:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"34424:3:66","nodeType":"YulIdentifier","src":"34424:3:66"},"nativeSrc":"34424:18:66","nodeType":"YulFunctionCall","src":"34424:18:66"},{"name":"value2","nativeSrc":"34444:6:66","nodeType":"YulIdentifier","src":"34444:6:66"}],"functionName":{"name":"mstore","nativeSrc":"34417:6:66","nodeType":"YulIdentifier","src":"34417:6:66"},"nativeSrc":"34417:34:66","nodeType":"YulFunctionCall","src":"34417:34:66"},"nativeSrc":"34417:34:66","nodeType":"YulExpressionStatement","src":"34417:34:66"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"34086:371:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"34196:9:66","nodeType":"YulTypedName","src":"34196:9:66","type":""},{"name":"value2","nativeSrc":"34207:6:66","nodeType":"YulTypedName","src":"34207:6:66","type":""},{"name":"value1","nativeSrc":"34215:6:66","nodeType":"YulTypedName","src":"34215:6:66","type":""},{"name":"value0","nativeSrc":"34223:6:66","nodeType":"YulTypedName","src":"34223:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"34234:4:66","nodeType":"YulTypedName","src":"34234:4:66","type":""}],"src":"34086:371:66"}]},"contents":"{\n    { }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_struct_SendParam_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 224) { revert(0, 0) }\n        value := offset\n    }\n    function abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_struct_SendParam_calldata(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_struct_OFTLimit(value, pos)\n    {\n        mstore(pos, mload(value))\n        mstore(add(pos, 0x20), mload(add(value, 0x20)))\n    }\n    function abi_encode_tuple_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_OFTLimit_$3392_memory_ptr_t_array$_t_struct$_OFTFeeDetail_$3404_memory_ptr_$dyn_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 160)\n        abi_encode_struct_OFTLimit(value0, headStart)\n        mstore(add(headStart, 64), 160)\n        let pos := tail_1\n        let length := mload(value1)\n        mstore(tail_1, length)\n        pos := add(headStart, 192)\n        let tail_2 := add(add(headStart, shl(5, length)), 192)\n        let srcPtr := add(value1, 0x20)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(191)))\n            let _1 := mload(srcPtr)\n            mstore(tail_2, mload(_1))\n            let memberValue0 := mload(add(_1, 0x20))\n            mstore(add(tail_2, 0x20), 64)\n            tail_2 := abi_encode_string(memberValue0, add(tail_2, 64))\n            srcPtr := add(srcPtr, 0x20)\n            pos := add(pos, 0x20)\n        }\n        tail := tail_2\n        abi_encode_struct_OFTLimit(value2, add(headStart, 96))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_struct_Origin_calldata(offset, end) -> value\n    {\n        if slt(sub(end, offset), 96) { revert(0, 0) }\n        value := offset\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes32t_bytes_calldata_ptrt_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        value0 := abi_decode_struct_Origin_calldata(headStart, dataEnd)\n        let value := 0\n        value := calldataload(add(headStart, 96))\n        value1 := value\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let value_1 := calldataload(add(headStart, 160))\n        validator_revert_address(value_1)\n        value4 := value_1\n        let offset_1 := calldataload(add(headStart, 192))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        let value5_1, value6_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value5 := value5_1\n        value6 := value6_1\n    }\n    function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffff))\n    }\n    function abi_encode_tuple_t_bytes4_t_uint64__to_t_bytes4_t_uint64__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, shl(224, 0xffffffff)))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint64_t_uint64__to_t_uint64_t_uint64__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint32t_bytes32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint32(headStart)\n        let value := 0\n        value := calldataload(add(headStart, 32))\n        value1 := value\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_struct_SendParam_calldata(add(headStart, offset), dataEnd)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_bool(value)\n        value1 := value\n    }\n    function abi_encode_tuple_t_struct$_MessagingFee_$33_memory_ptr__to_t_struct$_MessagingFee_$33_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        abi_encode_struct_OFTLimit(value0, headStart)\n    }\n    function abi_decode_uint16(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint32t_uint16(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint32(headStart)\n        value1 := abi_decode_uint16(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_contract$_ILayerZeroEndpointV2_$202__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_struct$_Origin_$40_calldata_ptrt_bytes_calldata_ptrt_address(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_struct_Origin_calldata(headStart, dataEnd)\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let value := calldataload(add(headStart, 128))\n        validator_revert_address(value)\n        value3 := value\n    }\n    function abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_decode_tuple_t_uint32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint32(headStart)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_uint32t_uint16t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_uint32(headStart)\n        value1 := abi_decode_uint16(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_array$_t_struct$_InboundPacket_$2486_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_struct_EnforcedOptionParam_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_decode_tuple_t_struct$_SendParam_$3386_calldata_ptrt_struct$_MessagingFee_$33_calldata_ptrt_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 128) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_struct_SendParam_calldata(add(headStart, offset), dataEnd)\n        if slt(add(_1, not(31)), 64) { revert(0, 0) }\n        value1 := add(headStart, 32)\n        let value := calldataload(add(headStart, 96))\n        validator_revert_address(value)\n        value2 := value\n    }\n    function abi_encode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__to_t_struct$_MessagingReceipt_$28_memory_ptr_t_struct$_OFTReceipt_$3398_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, mload(value0))\n        mstore(add(headStart, 0x20), and(mload(add(value0, 0x20)), 0xffffffffffffffff))\n        let memberValue0 := mload(add(value0, 0x40))\n        abi_encode_struct_OFTLimit(memberValue0, add(headStart, 0x40))\n        abi_encode_struct_OFTLimit(value1, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_struct$_Origin_$40_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_struct_Origin_calldata(headStart, dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := mload(headStart)\n        value0 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_uint32_t_bytes32__to_t_uint32_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function allocate_memory_3873() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x60)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function allocate_memory_3874() -> memPtr\n    {\n        memPtr := mload(0x40)\n        let newFreePtr := add(memPtr, 0x40)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(0x40, newFreePtr)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), not(31)), 0x20)\n    }\n    function convert_array_t_array$_t_struct$_EnforcedOptionParam_$1932_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr(value, length) -> converted\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let _1 := shl(5, length)\n        let dst := allocate_memory(add(_1, 0x20))\n        let array := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(value, _1)\n        if gt(srcEnd, calldatasize()) { revert(0, 0) }\n        let src := value\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            let innerOffset := calldataload(src)\n            if gt(innerOffset, 0xffffffffffffffff) { revert(0, 0) }\n            let _2 := add(value, innerOffset)\n            if slt(sub(calldatasize(), _2), 0x60) { revert(0, 0) }\n            let value_1 := allocate_memory_3873()\n            mstore(value_1, abi_decode_uint32(_2))\n            mstore(add(value_1, 0x20), abi_decode_uint16(add(_2, 0x20)))\n            let offset := calldataload(add(_2, 64))\n            if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n            let _3 := add(_2, offset)\n            if iszero(slt(add(_3, 0x1f), calldatasize())) { revert(0, 0) }\n            let length_1 := calldataload(_3)\n            let array_1 := allocate_memory(array_allocation_size_bytes(length_1))\n            mstore(array_1, length_1)\n            if gt(add(add(_3, length_1), 0x20), calldatasize()) { revert(0, 0) }\n            calldatacopy(add(array_1, 0x20), add(_3, 0x20), length_1)\n            mstore(add(add(array_1, length_1), 0x20), 0)\n            mstore(add(value_1, 64), array_1)\n            mstore(dst, value_1)\n            dst := add(dst, 0x20)\n        }\n        converted := array\n    }\n    function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n    {\n        if gt(startIndex, endIndex) { revert(0, 0) }\n        if gt(endIndex, length) { revert(0, 0) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_calldata_ptr_slice__to_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        calldatacopy(end_1, value1, value2)\n        let _1 := add(end_1, value2)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_bytes_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 32))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function access_calldata_tail_t_struct$_InboundPacket_$2486_calldata_ptr(base_ref, ptr_to_tail) -> addr\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(318)))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function validator_revert_uint64(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_encode_tuple_t_struct$_Origin_$40_calldata_ptr_t_bytes32_t_bytes_calldata_ptr_t_address_t_bytes_calldata_ptr__to_t_struct$_Origin_$40_memory_ptr_t_bytes32_t_bytes_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(abi_decode_uint32(value0), 0xffffffff))\n        let value := 0\n        value := calldataload(add(value0, 0x20))\n        mstore(add(headStart, 0x20), value)\n        let value_1 := calldataload(add(value0, 0x40))\n        validator_revert_uint64(value_1)\n        mstore(add(headStart, 0x40), and(value_1, 0xffffffffffffffff))\n        mstore(add(headStart, 96), value1)\n        mstore(add(headStart, 128), 224)\n        let tail_1 := abi_encode_bytes_calldata(value2, value3, add(headStart, 224))\n        mstore(add(headStart, 160), and(value4, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 192), sub(tail_1, headStart))\n        tail := abi_encode_bytes_calldata(value5, value6, tail_1)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := mload(_1)\n        let array := allocate_memory(array_allocation_size_bytes(length))\n        mstore(array, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory_with_cleanup(add(_1, 32), add(array, 32), length)\n        value0 := array\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\n    }\n    function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint64(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_bytes32_t_rational_0_by_1_t_bytes_memory_ptr__to_t_address_t_bytes32_t_uint16_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffff))\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_encode_tuple_t_uint32_t_uint256__to_t_uint32_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let tail_1 := abi_encode_string(value0, add(headStart, 64))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_string(value1, tail_1)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_struct$_MessagingParams_$20_memory_ptr_t_address__to_t_struct$_MessagingParams_$20_memory_ptr_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        mstore(add(headStart, 64), and(mload(value0), 0xffffffff))\n        mstore(add(headStart, 96), mload(add(value0, 0x20)))\n        let memberValue0 := mload(add(value0, 64))\n        mstore(add(headStart, 128), 0xa0)\n        let tail_1 := abi_encode_string(memberValue0, add(headStart, 224))\n        let memberValue0_1 := mload(add(value0, 96))\n        mstore(add(headStart, 0xa0), add(sub(tail_1, headStart), not(63)))\n        let tail_2 := abi_encode_string(memberValue0_1, tail_1)\n        mstore(add(headStart, 192), iszero(iszero(mload(add(value0, 128)))))\n        tail := tail_2\n        mstore(add(headStart, 0x20), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_struct_MessagingFee_fromMemory(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0x40) { revert(0, 0) }\n        value := allocate_memory_3874()\n        let value_1 := 0\n        value_1 := mload(headStart)\n        mstore(value, value_1)\n        let value_2 := 0\n        value_2 := mload(add(headStart, 32))\n        mstore(add(value, 32), value_2)\n    }\n    function abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_struct_MessagingFee_fromMemory(headStart, dataEnd)\n    }\n    function array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_bytes_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_bytes_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_bytes_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_EnforcedOptionParam_$1932_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, shl(5, length)), 64)\n        let srcPtr := add(value0, 32)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(63)))\n            let _1 := mload(srcPtr)\n            mstore(tail_2, and(mload(_1), 0xffffffff))\n            mstore(add(tail_2, 32), and(mload(add(_1, 32)), 0xffff))\n            let memberValue0 := mload(add(_1, 64))\n            mstore(add(tail_2, 64), 0x60)\n            tail_2 := abi_encode_string(memberValue0, add(tail_2, 0x60))\n            srcPtr := add(srcPtr, 32)\n            pos := add(pos, 32)\n        }\n        tail := tail_2\n    }\n    function abi_decode_tuple_t_struct$_MessagingFee_$33_memory_ptr(headStart, dataEnd) -> value0\n    {\n        let _1 := slt(sub(dataEnd, headStart), 64)\n        if _1 { revert(0, 0) }\n        _1 := 0\n        let value := allocate_memory_3874()\n        let value_1 := 0\n        value_1 := calldataload(headStart)\n        mstore(value, value_1)\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 32))\n        mstore(add(value, 32), value_2)\n        value0 := value\n    }\n    function abi_encode_tuple_t_uint32_t_uint256_t_uint256__to_t_uint32_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffffffff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes32(array, len) -> value\n    {\n        value := calldataload(array)\n        if lt(len, 32)\n        {\n            value := and(value, shl(shl(3, sub(32, len)), not(0)))\n        }\n    }\n    function convert_bytes_to_fixedbytes_from_t_bytes_calldata_ptr_to_t_bytes8(array, len) -> value\n    {\n        let _1 := calldataload(array)\n        value := and(_1, shl(192, 0xffffffffffffffff))\n        if lt(len, 8)\n        {\n            value := and(and(_1, shl(shl(3, sub(8, len)), shl(192, 0xffffffffffffffff))), shl(192, 0xffffffffffffffff))\n        }\n    }\n    function abi_encode_tuple_packed_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__to_t_uint64_t_uint32_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, and(shl(192, value0), shl(192, 0xffffffffffffffff)))\n        mstore(add(pos, 8), and(shl(224, value1), shl(224, 0xffffffff)))\n        mstore(add(pos, 12), value2)\n        let length := mload(value3)\n        copy_memory_to_memory_with_cleanup(add(value3, 0x20), add(pos, 44), length)\n        end := add(add(pos, length), 44)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_uint64__to_t_bytes32_t_uint64__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), and(shl(192, value1), shl(192, 0xffffffffffffffff)))\n        end := add(pos, 40)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_uint64_t_bytes32_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), and(shl(192, value1), shl(192, 0xffffffffffffffff)))\n        mstore(add(pos, 40), value2)\n        let length := mload(value3)\n        copy_memory_to_memory_with_cleanup(add(value3, 32), add(pos, 72), length)\n        end := add(add(pos, length), 72)\n    }\n    function abi_decode_tuple_t_struct$_MessagingReceipt_$28_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := slt(sub(dataEnd, headStart), 128)\n        if _1 { revert(0, 0) }\n        _1 := 0\n        let value := allocate_memory_3873()\n        mstore(value, mload(headStart))\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_uint64(value_1)\n        mstore(add(value, 32), value_1)\n        mstore(add(value, 64), abi_decode_struct_MessagingFee_fromMemory(add(headStart, 64), dataEnd))\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n    }\n}","id":66,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"1386":[{"length":32,"start":1330},{"length":32,"start":2722},{"length":32,"start":4419},{"length":32,"start":5050},{"length":32,"start":5925},{"length":32,"start":7749},{"length":32,"start":8401},{"length":32,"start":8584}],"2778":[{"length":32,"start":1651},{"length":32,"start":7037},{"length":32,"start":7154},{"length":32,"start":7501}]},"linkReferences":{},"object":"6080604052600436106102675760003560e01c8063715018a611610144578063bb0b6a53116100b6578063d045a0dc1161007a578063d045a0dc146107aa578063d4243885146107bd578063dd62ed3e146107dd578063f2fde38b14610823578063fc0c546a146104b6578063ff7bd03d1461084357600080fd5b8063bb0b6a5314610709578063bc70b35414610736578063bd815db014610756578063c7c7f5b314610769578063ca5eb5e11461078a57600080fd5b806395d89b411161010857806395d89b411461064c578063963efcaa146106615780639f68b96414610695578063a9059cbb146106a9578063b731ea0a146106c9578063b98bd070146106e957600080fd5b8063715018a6146105aa5780637d25a05e146105bf57806382413eac146105fa578063857749b01461061a5780638da5cb5b1461062e57600080fd5b8063313ce567116101dd57806352ae2879116101a157806352ae2879146104b65780635535d461146104c95780635a0dfe4d146104e95780635e280f11146105205780636fc1b31e1461055457806370a082311461057457600080fd5b8063313ce5671461040857806332cb6b0c1461042a5780633400288b146104495780633b6f743b1461046957806340c10f191461049657600080fd5b8063134d4f251161022f578063134d4f2514610343578063156a0d0f1461036b57806317442b701461039257806318160ddd146103b45780631f5e1334146103d357806323b872dd146103e857600080fd5b806306fdde031461026c578063095ea7b3146102975780630d35b415146102c7578063111ecdad146102f657806313137d651461032e575b600080fd5b34801561027857600080fd5b50610281610863565b60405161028e9190612300565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004612328565b6108f5565b604051901515815260200161028e565b3480156102d357600080fd5b506102e76102e236600461236c565b61090f565b60405161028e939291906123a0565b34801561030257600080fd5b50600454610316906001600160a01b031681565b6040516001600160a01b03909116815260200161028e565b61034161033c366004612497565b610aa0565b005b34801561034f57600080fd5b50610358600281565b60405161ffff909116815260200161028e565b34801561037757600080fd5b506040805162b9270b60e21b8152600160208201520161028e565b34801561039e57600080fd5b506040805160018152600260208201520161028e565b3480156103c057600080fd5b506007545b60405190815260200161028e565b3480156103df57600080fd5b50610358600181565b3480156103f457600080fd5b506102b7610403366004612538565b610b60565b34801561041457600080fd5b5060125b60405160ff909116815260200161028e565b34801561043657600080fd5b506103c56a108b2a2c2802909400000081565b34801561045557600080fd5b50610341610464366004612592565b610b86565b34801561047557600080fd5b506104896104843660046125bc565b610b9c565b60405161028e919061260d565b3480156104a257600080fd5b506103416104b1366004612328565b610c03565b3480156104c257600080fd5b5030610316565b3480156104d557600080fd5b506102816104e4366004612636565b610c54565b3480156104f557600080fd5b506102b7610504366004612592565b63ffffffff919091166000908152600160205260409020541490565b34801561052c57600080fd5b506103167f000000000000000000000000000000000000000000000000000000000000000081565b34801561056057600080fd5b5061034161056f366004612669565b610cf9565b34801561058057600080fd5b506103c561058f366004612669565b6001600160a01b031660009081526005602052604090205490565b3480156105b657600080fd5b50610341610d56565b3480156105cb57600080fd5b506105e26105da366004612592565b600092915050565b6040516001600160401b03909116815260200161028e565b34801561060657600080fd5b506102b7610615366004612686565b610d6a565b34801561062657600080fd5b506006610418565b34801561063a57600080fd5b506000546001600160a01b0316610316565b34801561065857600080fd5b50610281610d7f565b34801561066d57600080fd5b506103c57f000000000000000000000000000000000000000000000000000000000000000081565b3480156106a157600080fd5b5060006102b7565b3480156106b557600080fd5b506102b76106c4366004612328565b610d8e565b3480156106d557600080fd5b50600254610316906001600160a01b031681565b3480156106f557600080fd5b50610341610704366004612730565b610d9c565b34801561071557600080fd5b506103c5610724366004612771565b60016020526000908152604090205481565b34801561074257600080fd5b5061028161075136600461278c565b610db6565b610341610764366004612730565b610f5e565b61077c6107773660046127ec565b6110e8565b60405161028e929190612859565b34801561079657600080fd5b506103416107a5366004612669565b61111c565b6103416107b8366004612497565b6111a2565b3480156107c957600080fd5b506103416107d8366004612669565b6111d1565b3480156107e957600080fd5b506103c56107f83660046128ab565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561082f57600080fd5b5061034161083e366004612669565b611227565b34801561084f57600080fd5b506102b761085e3660046128d9565b611265565b606060088054610872906128f5565b80601f016020809104026020016040519081016040528092919081815260200182805461089e906128f5565b80156108eb5780601f106108c0576101008083540402835291602001916108eb565b820191906000526020600020905b8154815290600101906020018083116108ce57829003601f168201915b5050505050905090565b60003361090381858561129b565b60019150505b92915050565b60408051808201909152600080825260208201526060610942604051806040016040528060008152602001600081525090565b600080306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a79190612929565b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a089190612946565b60408051808201825284815260208082018490528251600080825291810190935290975091925090610a5d565b604080518082019091526000815260606020820152815260200190600190039081610a355790505b509350600080610a82604089013560608a0135610a7d60208c018c612771565b6112ad565b60408051808201909152918252602082015296989597505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610af0576040516391ac5e4f60e01b81523360048201526024015b60405180910390fd5b60208701803590610b0a90610b05908a612771565b6112e9565b14610b4857610b1c6020880188612771565b60405163309afaf360e21b815263ffffffff909116600482015260208801356024820152604401610ae7565b610b5787878787878787611325565b50505050505050565b600033610b6e85828561148c565b610b7985858561150b565b60019150505b9392505050565b610b8e61156a565b610b988282611597565b5050565b60408051808201909152600080825260208201526000610bcc60408501356060860135610a7d6020880188612771565b915050600080610bdc86846115ec565b9092509050610bf9610bf16020880188612771565b83838861170f565b9695505050505050565b610c0b61156a565b6a108b2a2c2802909400000081610c2160075490565b610c2b919061298b565b1115610c4a57604051638a164f6360e01b815260040160405180910390fd5b610b9882826117f0565b600360209081526000928352604080842090915290825290208054610c78906128f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca4906128f5565b8015610cf15780601f10610cc657610100808354040283529160200191610cf1565b820191906000526020600020905b815481529060010190602001808311610cd457829003601f168201915b505050505081565b610d0161156a565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610d5e61156a565b610d686000611826565b565b6001600160a01b03811630145b949350505050565b606060098054610872906128f5565b60003361090381858561150b565b610da461156a565b610b98610db18284612a3f565b611876565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610dea906128f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e16906128f5565b8015610e635780601f10610e3857610100808354040283529160200191610e63565b820191906000526020600020905b815481529060010190602001808311610e4657829003601f168201915b505050505090508051600003610eb35783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610d779350505050565b6000839003610ec3579050610d77565b60028310610f4157610f0a84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061197d92505050565b80610f188460028188612b68565b604051602001610f2a93929190612b92565b604051602081830303815290604052915050610d77565b8383604051639a6d49cd60e01b8152600401610ae7929190612be3565b60005b818110156110675736838383818110610f7c57610f7c612bf7565b9050602002810190610f8e9190612c0d565b9050610fc1610fa06020830183612771565b602083013563ffffffff919091166000908152600160205260409020541490565b610fcb575061105f565b3063d045a0dc60c08301358360a0810135610fea610100830183612c2e565b610ffb610100890160e08a01612669565b6110096101208a018a612c2e565b6040518963ffffffff1660e01b815260040161102b9796959493929190612c89565b6000604051808303818588803b15801561104457600080fd5b505af1158015611058573d6000803e3d6000fd5b5050505050505b600101610f61565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa1580156110a6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110ce9190810190612d0f565b604051638351eea760e01b8152600401610ae79190612300565b6110f0612269565b604080518082019091526000808252602082015261110f8585856119a9565b915091505b935093915050565b61112461156a565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561118757600080fd5b505af115801561119b573d6000803e3d6000fd5b5050505050565b3330146111c25760405163029a949d60e31b815260040160405180910390fd5b610b5787878787878787610b48565b6111d961156a565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610d4b565b61122f61156a565b6001600160a01b03811661125957604051631e4fbdf760e01b815260006004820152602401610ae7565b61126281611826565b50565b600060208201803590600190839061127d9086612771565b63ffffffff1681526020810191909152604001600020541492915050565b6112a88383836001611aa4565b505050565b6000806112b985611b79565b915081905083811015611114576040516371c4efed60e01b81526004810182905260248101859052604401610ae7565b63ffffffff8116600090815260016020526040812054806109095760405163f6ff4fb760e01b815263ffffffff84166004820152602401610ae7565b60006113376113348787611bb0565b90565b905060006113638261135161134c8a8a611bc8565b611beb565b61135e60208d018d612771565b611c20565b9050602886111561142a5760006113a061138360608c0160408d01612d7c565b61139060208d018d612771565b8461139b8c8c611c6c565b611cb7565b604051633e5ac80960e11b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906113f69086908d906000908790600401612d99565b600060405180830381600087803b15801561141057600080fd5b505af1158015611424573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c61146360208d018d612771565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b6001600160a01b0383811660009081526006602090815260408083209386168352929052205460001981101561150557818110156114f657604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610ae7565b61150584848484036000611aa4565b50505050565b6001600160a01b03831661153557604051634b637e8f60e11b815260006004820152602401610ae7565b6001600160a01b03821661155f5760405163ec442f0560e01b815260006004820152602401610ae7565b6112a8838383611ce9565b6000546001600160a01b03163314610d685760405163118cdaa760e01b8152336004820152602401610ae7565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b6060806000611649856020013561160286611d46565b61160f60a0890189612c2e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d7292505050565b909350905060008161165c57600161165f565b60025b905061167f6116716020880188612771565b8261075160808a018a612c2e565b6004549093506001600160a01b031680156117055760405163043a78eb60e01b81526001600160a01b0382169063043a78eb906116c29088908890600401612dca565b602060405180830381865afa1580156116df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117039190612def565b505b5050509250929050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff168152602001611772896112e9565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b81526004016117a7929190612e0c565b6040805180830381865afa1580156117c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e79190612eb6565b95945050505050565b6001600160a01b03821661181a5760405163ec442f0560e01b815260006004820152602401610ae7565b610b9860008383611ce9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b815181101561194d576118a882828151811061189757611897612bf7565b60200260200101516040015161197d565b8181815181106118ba576118ba612bf7565b602002602001015160400151600360008484815181106118dc576118dc612bf7565b60200260200101516000015163ffffffff1663ffffffff168152602001908152602001600020600084848151811061191657611916612bf7565b60200260200101516020015161ffff1661ffff16815260200190815260200160002090816119449190612f19565b50600101611879565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610d4b9190612fd7565b600281015161ffff8116600314610b985781604051639a6d49cd60e01b8152600401610ae79190612300565b6119b1612269565b60408051808201909152600080825260208201526000806119e833604089013560608a01356119e360208c018c612771565b611dec565b915091506000806119f989846115ec565b9092509050611a25611a0e60208b018b612771565b8383611a1f368d90038d018d613067565b8b611e12565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90611a73908d018d612771565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b6001600160a01b038416611ace5760405163e602df0560e01b815260006004820152602401610ae7565b6001600160a01b038316611af857604051634a1406b160e11b815260006004820152602401610ae7565b6001600160a01b038085166000908152600660209081526040808320938716835292905220829055801561150557826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611b6b91815260200190565b60405180910390a350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000611ba6818461309a565b61090991906130bc565b6000611bbf6020828486612b68565b610b7f916130d3565b6000611bd8602860208486612b68565b611be1916130f1565b60c01c9392505050565b60006109097f00000000000000000000000000000000000000000000000000000000000000006001600160401b0384166130bc565b60006a108b2a2c2802909400000083611c3860075490565b611c42919061298b565b1115611c6157604051638a164f6360e01b815260040160405180910390fd5b610d77848484611f1d565b6060611c7b8260288186612b68565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611cd09493929190613129565b6040516020818303038152906040529050949350505050565b6001600160a01b038316158015611d1d57506a108b2a2c2802909400000081611d1160075490565b611d1b919061298b565b115b15611d3b57604051638a164f6360e01b815260040160405180910390fd5b6112a8838383611f45565b60006109097f00000000000000000000000000000000000000000000000000000000000000008361309a565b8051606090151580611dbb578484604051602001611da792919091825260c01b6001600160c01b031916602082015260280190565b604051602081830303815290604052611de2565b84843385604051602001611dd29493929190613178565b6040516020818303038152906040525b9150935093915050565b600080611dfa8585856112ad565b9092509050611e09868361206f565b94509492505050565b611e1a612269565b6000611e2984600001516120a5565b602085015190915015611e4357611e4384602001516120cd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff168152602001611e938c6112e9565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611ecf929190612e0c565b60806040518083038185885af1158015611eed573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f1291906131bb565b979650505050505050565b60006001600160a01b038416611f335761dead93505b611f3d84846117f0565b509092915050565b6001600160a01b038316611f70578060076000828254611f65919061298b565b90915550611fe29050565b6001600160a01b03831660009081526005602052604090205481811015611fc35760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610ae7565b6001600160a01b03841660009081526005602052604090209082900390555b6001600160a01b038216611ffe5760078054829003905561201d565b6001600160a01b03821660009081526005602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161206291815260200190565b60405180910390a3505050565b6001600160a01b03821661209957604051634b637e8f60e11b815260006004820152602401610ae7565b610b9882600083611ce9565b60008134146120c9576040516304fb820960e51b8152346004820152602401610ae7565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121519190612929565b90506001600160a01b03811661217a576040516329b99a9560e11b815260040160405180910390fd5b6040805133602482018190527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381811660448501526064808501889052855180860390910181526084909401909452602080840180516001600160e01b03166323b872dd60e01b1781528451610b9896881695899361150593889360009283929091839182885af18061221b576040513d6000823e3d81fd5b50506000513d91508115612233578060011415612240565b6001600160a01b0384163b155b1561150557604051635274afe760e01b81526001600160a01b0385166004820152602401610ae7565b60405180606001604052806000801916815260200160006001600160401b031681526020016122ab604051806040016040528060008152602001600081525090565b905290565b60005b838110156122cb5781810151838201526020016122b3565b50506000910152565b600081518084526122ec8160208601602086016122b0565b601f01601f19169290920160200192915050565b602081526000610b7f60208301846122d4565b6001600160a01b038116811461126257600080fd5b6000806040838503121561233b57600080fd5b823561234681612313565b946020939093013593505050565b600060e0828403121561236657600080fd5b50919050565b60006020828403121561237e57600080fd5b81356001600160401b0381111561239457600080fd5b610d7784828501612354565b8351815260208085015190820152600060a0820160a0604084015280855180835260c08501915060c08160051b86010192506020870160005b828110156124215760bf19878603018452815180518652602081015190506040602087015261240b60408701826122d4565b95505060209384019391909101906001016123d9565b5050855160608601525050602084015160808401529050610d77565b60006060828403121561236657600080fd5b60008083601f84011261246157600080fd5b5081356001600160401b0381111561247857600080fd5b60208301915083602082850101111561249057600080fd5b9250929050565b600080600080600080600060e0888a0312156124b257600080fd5b6124bc898961243d565b96506060880135955060808801356001600160401b038111156124de57600080fd5b6124ea8a828b0161244f565b90965094505060a08801356124fe81612313565b925060c08801356001600160401b0381111561251957600080fd5b6125258a828b0161244f565b989b979a50959850939692959293505050565b60008060006060848603121561254d57600080fd5b833561255881612313565b9250602084013561256881612313565b929592945050506040919091013590565b803563ffffffff8116811461258d57600080fd5b919050565b600080604083850312156125a557600080fd5b61234683612579565b801515811461126257600080fd5b600080604083850312156125cf57600080fd5b82356001600160401b038111156125e557600080fd5b6125f185828601612354565b9250506020830135612602816125ae565b809150509250929050565b815181526020808301519082015260408101610909565b803561ffff8116811461258d57600080fd5b6000806040838503121561264957600080fd5b61265283612579565b915061266060208401612624565b90509250929050565b60006020828403121561267b57600080fd5b8135610b7f81612313565b60008060008060a0858703121561269c57600080fd5b6126a6868661243d565b935060608501356001600160401b038111156126c157600080fd5b6126cd8782880161244f565b90945092505060808501356126e181612313565b939692955090935050565b60008083601f8401126126fe57600080fd5b5081356001600160401b0381111561271557600080fd5b6020830191508360208260051b850101111561249057600080fd5b6000806020838503121561274357600080fd5b82356001600160401b0381111561275957600080fd5b612765858286016126ec565b90969095509350505050565b60006020828403121561278357600080fd5b610b7f82612579565b600080600080606085870312156127a257600080fd5b6127ab85612579565b93506127b960208601612624565b925060408501356001600160401b038111156127d457600080fd5b6127e08782880161244f565b95989497509550505050565b6000806000838503608081121561280257600080fd5b84356001600160401b0381111561281857600080fd5b61282487828801612354565b9450506040601f198201121561283957600080fd5b50602084019150606084013561284e81612313565b809150509250925092565b600060c082019050835182526001600160401b0360208501511660208301526040840151612894604084018280518252602090810151910152565b5082516080830152602083015160a0830152610b7f565b600080604083850312156128be57600080fd5b82356128c981612313565b9150602083013561260281612313565b6000606082840312156128eb57600080fd5b610b7f838361243d565b600181811c9082168061290957607f821691505b60208210810361236657634e487b7160e01b600052602260045260246000fd5b60006020828403121561293b57600080fd5b8151610b7f81612313565b60006020828403121561295857600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561090957610909612975565b604051606081016001600160401b03811182821017156129c0576129c061295f565b60405290565b604080519081016001600160401b03811182821017156129c0576129c061295f565b604051601f8201601f191681016001600160401b0381118282101715612a1057612a1061295f565b604052919050565b60006001600160401b03821115612a3157612a3161295f565b50601f01601f191660200190565b60006001600160401b03831115612a5857612a5861295f565b8260051b612a68602082016129e8565b84815290830190602081019036831115612a8157600080fd5b845b83811015612b5e5780356001600160401b03811115612aa157600080fd5b86016060368290031215612ab457600080fd5b612abc61299e565b612ac582612579565b8152612ad360208301612624565b602082015260408201356001600160401b03811115612af157600080fd5b919091019036601f830112612b0557600080fd5b8135612b18612b1382612a18565b6129e8565b818152366020838601011115612b2d57600080fd5b8160208501602083013760006020838301015280604084015250508085525050602083019250602081019050612a83565b5095945050505050565b60008085851115612b7857600080fd5b83861115612b8557600080fd5b5050820193919092039150565b60008451612ba48184602089016122b0565b8201838582376000930192835250909392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610d77602083018486612bba565b634e487b7160e01b600052603260045260246000fd5b6000823561013e19833603018112612c2457600080fd5b9190910192915050565b6000808335601e19843603018112612c4557600080fd5b8301803591506001600160401b03821115612c5f57600080fd5b60200191503681900382131561249057600080fd5b6001600160401b038116811461126257600080fd5b63ffffffff612c9789612579565b1681526020888101359082015260006040890135612cb481612c74565b6001600160401b03811660408401525087606083015260e06080830152612cdf60e083018789612bba565b6001600160a01b03861660a084015282810360c0840152612d01818587612bba565b9a9950505050505050505050565b600060208284031215612d2157600080fd5b81516001600160401b03811115612d3757600080fd5b8201601f81018413612d4857600080fd5b8051612d56612b1382612a18565b818152856020838501011115612d6b57600080fd5b6117e78260208301602086016122b0565b600060208284031215612d8e57600080fd5b8135610b7f81612c74565b60018060a01b038516815283602082015261ffff83166040820152608060608201526000610bf960808301846122d4565b604081526000612ddd60408301856122d4565b82810360208401526117e781856122d4565b600060208284031215612e0157600080fd5b8151610b7f816125ae565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152612e4260e08401826122d4565b90506060850151603f198483030160a0850152612e5f82826122d4565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b600060408284031215612e9757600080fd5b612e9f6129c6565b825181526020928301519281019290925250919050565b600060408284031215612ec857600080fd5b610b7f8383612e85565b601f8211156112a857806000526020600020601f840160051c81016020851015612ef95750805b601f840160051c820191505b8181101561119b5760008155600101612f05565b81516001600160401b03811115612f3257612f3261295f565b612f4681612f4084546128f5565b84612ed2565b6020601f821160018114612f7a5760008315612f625750848201515b600019600385901b1c1916600184901b17845561119b565b600084815260208120601f198516915b82811015612faa5787850151825560209485019460019092019101612f8a565b5084821015612fc85786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561305b57603f19878603018452815163ffffffff815116865261ffff6020820151166020870152604081015190506060604087015261304560608701826122d4565b9550506020938401939190910190600101612fff565b50929695505050505050565b6000604082840312801561307a57600080fd5b506130836129c6565b823581526020928301359281019290925250919050565b6000826130b757634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761090957610909612975565b8035602083101561090957600019602084900360031b1b1692915050565b80356001600160c01b03198116906008841015613122576001600160c01b0319600885900360031b81901b82161691505b5092915050565b6001600160401b0360c01b8560c01b16815263ffffffff60e01b8460e01b16600882015282600c8201526000825161316881602c8501602087016122b0565b91909101602c0195945050505050565b8481526001600160401b0360c01b8460c01b166020820152826028820152600082516131ab8160488501602087016122b0565b9190910160480195945050505050565b600060808284031280156131ce57600080fd5b506131d761299e565b8251815260208301516131e981612c74565b60208201526131fb8460408501612e85565b6040820152939250505056fea2646970667358221220c68cc336aa6c3f40258b0c3ad54353a64779235c6fca359dddc5bbeab4a6242e64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x267 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x144 JUMPI DUP1 PUSH4 0xBB0B6A53 GT PUSH2 0xB6 JUMPI DUP1 PUSH4 0xD045A0DC GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xD045A0DC EQ PUSH2 0x7AA JUMPI DUP1 PUSH4 0xD4243885 EQ PUSH2 0x7BD JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x7DD JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x823 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0xFF7BD03D EQ PUSH2 0x843 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBB0B6A53 EQ PUSH2 0x709 JUMPI DUP1 PUSH4 0xBC70B354 EQ PUSH2 0x736 JUMPI DUP1 PUSH4 0xBD815DB0 EQ PUSH2 0x756 JUMPI DUP1 PUSH4 0xC7C7F5B3 EQ PUSH2 0x769 JUMPI DUP1 PUSH4 0xCA5EB5E1 EQ PUSH2 0x78A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95D89B41 GT PUSH2 0x108 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x64C JUMPI DUP1 PUSH4 0x963EFCAA EQ PUSH2 0x661 JUMPI DUP1 PUSH4 0x9F68B964 EQ PUSH2 0x695 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x6A9 JUMPI DUP1 PUSH4 0xB731EA0A EQ PUSH2 0x6C9 JUMPI DUP1 PUSH4 0xB98BD070 EQ PUSH2 0x6E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x5AA JUMPI DUP1 PUSH4 0x7D25A05E EQ PUSH2 0x5BF JUMPI DUP1 PUSH4 0x82413EAC EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0x857749B0 EQ PUSH2 0x61A JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x62E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x52AE2879 GT PUSH2 0x1A1 JUMPI DUP1 PUSH4 0x52AE2879 EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0x5535D461 EQ PUSH2 0x4C9 JUMPI DUP1 PUSH4 0x5A0DFE4D EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0x5E280F11 EQ PUSH2 0x520 JUMPI DUP1 PUSH4 0x6FC1B31E EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x408 JUMPI DUP1 PUSH4 0x32CB6B0C EQ PUSH2 0x42A JUMPI DUP1 PUSH4 0x3400288B EQ PUSH2 0x449 JUMPI DUP1 PUSH4 0x3B6F743B EQ PUSH2 0x469 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x134D4F25 GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x134D4F25 EQ PUSH2 0x343 JUMPI DUP1 PUSH4 0x156A0D0F EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0x17442B70 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3B4 JUMPI DUP1 PUSH4 0x1F5E1334 EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0xD35B415 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x111ECDAD EQ PUSH2 0x2F6 JUMPI DUP1 PUSH4 0x13137D65 EQ PUSH2 0x32E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x863 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x2300 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x2B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2328 JUMP JUMPDEST PUSH2 0x8F5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2E7 PUSH2 0x2E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x236C JUMP JUMPDEST PUSH2 0x90F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x23A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD PUSH2 0x316 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST PUSH2 0x341 PUSH2 0x33C CALLDATASIZE PUSH1 0x4 PUSH2 0x2497 JUMP JUMPDEST PUSH2 0xAA0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x358 PUSH1 0x2 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH3 0xB9270B PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x7 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x358 PUSH1 0x1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x403 CALLDATASIZE PUSH1 0x4 PUSH2 0x2538 JUMP JUMPDEST PUSH2 0xB60 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x414 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x12 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH11 0x108B2A2C28029094000000 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x464 CALLDATASIZE PUSH1 0x4 PUSH2 0x2592 JUMP JUMPDEST PUSH2 0xB86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x489 PUSH2 0x484 CALLDATASIZE PUSH1 0x4 PUSH2 0x25BC JUMP JUMPDEST PUSH2 0xB9C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP2 SWAP1 PUSH2 0x260D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x4B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2328 JUMP JUMPDEST PUSH2 0xC03 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADDRESS PUSH2 0x316 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x4E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2636 JUMP JUMPDEST PUSH2 0xC54 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x504 CALLDATASIZE PUSH1 0x4 PUSH2 0x2592 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x316 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x56F CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0xCF9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x580 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH2 0x58F CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0xD56 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E2 PUSH2 0x5DA CALLDATASIZE PUSH1 0x4 PUSH2 0x2592 JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x28E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x615 CALLDATASIZE PUSH1 0x4 PUSH2 0x2686 JUMP JUMPDEST PUSH2 0xD6A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 PUSH2 0x418 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x316 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0xD7F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x2B7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x6C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2328 JUMP JUMPDEST PUSH2 0xD8E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x316 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x704 CALLDATASIZE PUSH1 0x4 PUSH2 0x2730 JUMP JUMPDEST PUSH2 0xD9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH2 0x724 CALLDATASIZE PUSH1 0x4 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x751 CALLDATASIZE PUSH1 0x4 PUSH2 0x278C JUMP JUMPDEST PUSH2 0xDB6 JUMP JUMPDEST PUSH2 0x341 PUSH2 0x764 CALLDATASIZE PUSH1 0x4 PUSH2 0x2730 JUMP JUMPDEST PUSH2 0xF5E JUMP JUMPDEST PUSH2 0x77C PUSH2 0x777 CALLDATASIZE PUSH1 0x4 PUSH2 0x27EC JUMP JUMPDEST PUSH2 0x10E8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x28E SWAP3 SWAP2 SWAP1 PUSH2 0x2859 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x7A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x111C JUMP JUMPDEST PUSH2 0x341 PUSH2 0x7B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2497 JUMP JUMPDEST PUSH2 0x11A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x7D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x11D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C5 PUSH2 0x7F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x28AB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x82F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x83E CALLDATASIZE PUSH1 0x4 PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x1227 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x84F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B7 PUSH2 0x85E CALLDATASIZE PUSH1 0x4 PUSH2 0x28D9 JUMP JUMPDEST PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x8 DUP1 SLOAD PUSH2 0x872 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x89E SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8EB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8C0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8EB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8CE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x903 DUP2 DUP6 DUP6 PUSH2 0x129B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH2 0x942 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x983 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9A7 SWAP2 SWAP1 PUSH2 0x2929 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA08 SWAP2 SWAP1 PUSH2 0x2946 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE SWAP2 DUP2 ADD SWAP1 SWAP4 MSTORE SWAP1 SWAP8 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0xA5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH1 0x60 PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA35 JUMPI SWAP1 POP JUMPDEST POP SWAP4 POP PUSH1 0x0 DUP1 PUSH2 0xA82 PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP11 ADD CALLDATALOAD PUSH2 0xA7D PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x12AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP7 SWAP9 SWAP6 SWAP8 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAF0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x91AC5E4F PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP8 ADD DUP1 CALLDATALOAD SWAP1 PUSH2 0xB0A SWAP1 PUSH2 0xB05 SWAP1 DUP11 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x12E9 JUMP JUMPDEST EQ PUSH2 0xB48 JUMPI PUSH2 0xB1C PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x309AFAF3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0xB57 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x1325 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0xB6E DUP6 DUP3 DUP6 PUSH2 0x148C JUMP JUMPDEST PUSH2 0xB79 DUP6 DUP6 DUP6 PUSH2 0x150B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB8E PUSH2 0x156A JUMP JUMPDEST PUSH2 0xB98 DUP3 DUP3 PUSH2 0x1597 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xBCC PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0xA7D PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x0 DUP1 PUSH2 0xBDC DUP7 DUP5 PUSH2 0x15EC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xBF9 PUSH2 0xBF1 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST DUP4 DUP4 DUP9 PUSH2 0x170F JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xC0B PUSH2 0x156A JUMP JUMPDEST PUSH11 0x108B2A2C28029094000000 DUP2 PUSH2 0xC21 PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xC2B SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST GT ISZERO PUSH2 0xC4A JUMPI PUSH1 0x40 MLOAD PUSH4 0x8A164F63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB98 DUP3 DUP3 PUSH2 0x17F0 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xC78 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xCA4 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xCF1 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xCC6 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xCF1 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xCD4 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0xD01 PUSH2 0x156A JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xF0BE4F1E87349231D80C36B33F9E8639658EEAF474014DEE15A3E6A4D4414197 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xD5E PUSH2 0x156A JUMP JUMPDEST PUSH2 0xD68 PUSH1 0x0 PUSH2 0x1826 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ADDRESS EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x9 DUP1 SLOAD PUSH2 0x872 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x903 DUP2 DUP6 DUP6 PUSH2 0x150B JUMP JUMPDEST PUSH2 0xDA4 PUSH2 0x156A JUMP JUMPDEST PUSH2 0xB98 PUSH2 0xDB1 DUP3 DUP5 PUSH2 0x2A3F JUMP JUMPDEST PUSH2 0x1876 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH2 0xFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x60 SWAP3 SWAP2 SWAP1 PUSH2 0xDEA SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xE16 SWAP1 PUSH2 0x28F5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xE63 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xE38 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xE63 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xE46 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xEB3 JUMPI DUP4 DUP4 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP5 POP PUSH2 0xD77 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 SWAP1 SUB PUSH2 0xEC3 JUMPI SWAP1 POP PUSH2 0xD77 JUMP JUMPDEST PUSH1 0x2 DUP4 LT PUSH2 0xF41 JUMPI PUSH2 0xF0A DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x197D SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH2 0xF18 DUP5 PUSH1 0x2 DUP2 DUP9 PUSH2 0x2B68 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xF2A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0xD77 JUMP JUMPDEST DUP4 DUP4 PUSH1 0x40 MLOAD PUSH4 0x9A6D49CD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP3 SWAP2 SWAP1 PUSH2 0x2BE3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1067 JUMPI CALLDATASIZE DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0xF7C JUMPI PUSH2 0xF7C PUSH2 0x2BF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xF8E SWAP2 SWAP1 PUSH2 0x2C0D JUMP JUMPDEST SWAP1 POP PUSH2 0xFC1 PUSH2 0xFA0 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ SWAP1 JUMP JUMPDEST PUSH2 0xFCB JUMPI POP PUSH2 0x105F JUMP JUMPDEST ADDRESS PUSH4 0xD045A0DC PUSH1 0xC0 DUP4 ADD CALLDATALOAD DUP4 PUSH1 0xA0 DUP2 ADD CALLDATALOAD PUSH2 0xFEA PUSH2 0x100 DUP4 ADD DUP4 PUSH2 0x2C2E JUMP JUMPDEST PUSH2 0xFFB PUSH2 0x100 DUP10 ADD PUSH1 0xE0 DUP11 ADD PUSH2 0x2669 JUMP JUMPDEST PUSH2 0x1009 PUSH2 0x120 DUP11 ADD DUP11 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x102B SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C89 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1058 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0xF61 JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8E9E7099 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x10CE SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x2D0F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x8351EEA7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP2 SWAP1 PUSH2 0x2300 JUMP JUMPDEST PUSH2 0x10F0 PUSH2 0x2269 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x110F DUP6 DUP6 DUP6 PUSH2 0x19A9 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1124 PUSH2 0x156A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xCA5EB5E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xCA5EB5E1 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1187 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x119B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLER ADDRESS EQ PUSH2 0x11C2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x29A949D PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xB57 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xB48 JUMP JUMPDEST PUSH2 0x11D9 PUSH2 0x156A JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xD48D879CEF83A1C0BDDA516F27B13DDB1B3F8BBAC1C9E1511BB2A659C2427760 SWAP1 PUSH1 0x20 ADD PUSH2 0xD4B JUMP JUMPDEST PUSH2 0x122F PUSH2 0x156A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1259 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x1262 DUP2 PUSH2 0x1826 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x1 SWAP1 DUP4 SWAP1 PUSH2 0x127D SWAP1 DUP7 PUSH2 0x2771 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SLOAD EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x12A8 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1AA4 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x12B9 DUP6 PUSH2 0x1B79 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x1114 JUMPI PUSH1 0x40 MLOAD PUSH4 0x71C4EFED PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x909 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF6FF4FB7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1337 PUSH2 0x1334 DUP8 DUP8 PUSH2 0x1BB0 JUMP JUMPDEST SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1363 DUP3 PUSH2 0x1351 PUSH2 0x134C DUP11 DUP11 PUSH2 0x1BC8 JUMP JUMPDEST PUSH2 0x1BEB JUMP JUMPDEST PUSH2 0x135E PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x1C20 JUMP JUMPDEST SWAP1 POP PUSH1 0x28 DUP7 GT ISZERO PUSH2 0x142A JUMPI PUSH1 0x0 PUSH2 0x13A0 PUSH2 0x1383 PUSH1 0x60 DUP13 ADD PUSH1 0x40 DUP14 ADD PUSH2 0x2D7C JUMP JUMPDEST PUSH2 0x1390 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST DUP5 PUSH2 0x139B DUP13 DUP13 PUSH2 0x1C6C JUMP JUMPDEST PUSH2 0x1CB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3E5AC809 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x7CB59012 SWAP1 PUSH2 0x13F6 SWAP1 DUP7 SWAP1 DUP14 SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2D99 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1424 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP9 PUSH32 0xEFED6D3500546B29533B128A29E3A94D70788727F0507505AC12EAF2E578FD9C PUSH2 0x1463 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP7 SWAP1 MSTORE ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x0 NOT DUP2 LT ISZERO PUSH2 0x1505 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x14F6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x1505 DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x1AA4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1535 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x155F JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0x12A8 DUP4 DUP4 DUP4 PUSH2 0x1CE9 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xD68 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE DUP2 MLOAD SWAP3 DUP4 MSTORE DUP3 ADD DUP4 SWAP1 MSTORE PUSH32 0x238399D427B947898EDB290F5FF0F9109849B1C3BA196A42E35F00C50A54B98B SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x1649 DUP6 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1602 DUP7 PUSH2 0x1D46 JUMP JUMPDEST PUSH2 0x160F PUSH1 0xA0 DUP10 ADD DUP10 PUSH2 0x2C2E JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D72 SWAP3 POP POP POP JUMP JUMPDEST SWAP1 SWAP4 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x165C JUMPI PUSH1 0x1 PUSH2 0x165F JUMP JUMPDEST PUSH1 0x2 JUMPDEST SWAP1 POP PUSH2 0x167F PUSH2 0x1671 PUSH1 0x20 DUP9 ADD DUP9 PUSH2 0x2771 JUMP JUMPDEST DUP3 PUSH2 0x751 PUSH1 0x80 DUP11 ADD DUP11 PUSH2 0x2C2E JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 ISZERO PUSH2 0x1705 JUMPI PUSH1 0x40 MLOAD PUSH4 0x43A78EB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0x43A78EB SWAP1 PUSH2 0x16C2 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x2DCA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1703 SWAP2 SWAP1 PUSH2 0x2DEF JUMP JUMPDEST POP JUMPDEST POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDDC28C58 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1772 DUP10 PUSH2 0x12E9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE POP ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17A7 SWAP3 SWAP2 SWAP1 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x17E7 SWAP2 SWAP1 PUSH2 0x2EB6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x181A JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0xB98 PUSH1 0x0 DUP4 DUP4 PUSH2 0x1CE9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x194D JUMPI PUSH2 0x18A8 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1897 JUMPI PUSH2 0x1897 PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x197D JUMP JUMPDEST DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x18BA JUMPI PUSH2 0x18BA PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x3 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x18DC JUMPI PUSH2 0x18DC PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1916 JUMPI PUSH2 0x1916 PUSH2 0x2BF7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 DUP2 PUSH2 0x1944 SWAP2 SWAP1 PUSH2 0x2F19 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1879 JUMP JUMPDEST POP PUSH32 0xBE4864A8E820971C0247F5992E2DA559595F7BF076A21CB5928D443D2A13B674 DUP2 PUSH1 0x40 MLOAD PUSH2 0xD4B SWAP2 SWAP1 PUSH2 0x2FD7 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD MLOAD PUSH2 0xFFFF DUP2 AND PUSH1 0x3 EQ PUSH2 0xB98 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x9A6D49CD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP2 SWAP1 PUSH2 0x2300 JUMP JUMPDEST PUSH2 0x19B1 PUSH2 0x2269 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 DUP1 PUSH2 0x19E8 CALLER PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x60 DUP11 ADD CALLDATALOAD PUSH2 0x19E3 PUSH1 0x20 DUP13 ADD DUP13 PUSH2 0x2771 JUMP JUMPDEST PUSH2 0x1DEC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x19F9 DUP10 DUP5 PUSH2 0x15EC JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1A25 PUSH2 0x1A0E PUSH1 0x20 DUP12 ADD DUP12 PUSH2 0x2771 JUMP JUMPDEST DUP4 DUP4 PUSH2 0x1A1F CALLDATASIZE DUP14 SWAP1 SUB DUP14 ADD DUP14 PUSH2 0x3067 JUMP JUMPDEST DUP12 PUSH2 0x1E12 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP7 SWAP1 MSTORE DUP3 MLOAD SWAP3 SWAP9 POP SWAP1 SWAP7 POP CALLER SWAP2 SWAP1 PUSH32 0x85496B760A4B7F8D66384B9DF21B381F5D1B1E79F229A47AAF4C232EDC2FE59A SWAP1 PUSH2 0x1A73 SWAP1 DUP14 ADD DUP14 PUSH2 0x2771 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP10 SWAP1 MSTORE DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1ACE JUMPI PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1AF8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1505 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x1B6B SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0x1BA6 DUP2 DUP5 PUSH2 0x309A JUMP JUMPDEST PUSH2 0x909 SWAP2 SWAP1 PUSH2 0x30BC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BBF PUSH1 0x20 DUP3 DUP5 DUP7 PUSH2 0x2B68 JUMP JUMPDEST PUSH2 0xB7F SWAP2 PUSH2 0x30D3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BD8 PUSH1 0x28 PUSH1 0x20 DUP5 DUP7 PUSH2 0x2B68 JUMP JUMPDEST PUSH2 0x1BE1 SWAP2 PUSH2 0x30F1 JUMP JUMPDEST PUSH1 0xC0 SHR SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x909 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 AND PUSH2 0x30BC JUMP JUMPDEST PUSH1 0x0 PUSH11 0x108B2A2C28029094000000 DUP4 PUSH2 0x1C38 PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1C42 SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST GT ISZERO PUSH2 0x1C61 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8A164F63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD77 DUP5 DUP5 DUP5 PUSH2 0x1F1D JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1C7B DUP3 PUSH1 0x28 DUP2 DUP7 PUSH2 0x2B68 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP5 DUP5 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1CD0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3129 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO PUSH2 0x1D1D JUMPI POP PUSH11 0x108B2A2C28029094000000 DUP2 PUSH2 0x1D11 PUSH1 0x7 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1D1B SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST GT JUMPDEST ISZERO PUSH2 0x1D3B JUMPI PUSH1 0x40 MLOAD PUSH4 0x8A164F63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12A8 DUP4 DUP4 DUP4 PUSH2 0x1F45 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x909 PUSH32 0x0 DUP4 PUSH2 0x309A JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 ISZERO ISZERO DUP1 PUSH2 0x1DBB JUMPI DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DA7 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0xC0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x28 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x1DE2 JUMP JUMPDEST DUP5 DUP5 CALLER DUP6 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DD2 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3178 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DFA DUP6 DUP6 DUP6 PUSH2 0x12AD JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1E09 DUP7 DUP4 PUSH2 0x206F JUMP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1E1A PUSH2 0x2269 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E29 DUP5 PUSH1 0x0 ADD MLOAD PUSH2 0x20A5 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x1E43 JUMPI PUSH2 0x1E43 DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x20CD JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2637A450 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E93 DUP13 PUSH2 0x12E9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP11 DUP2 MSTORE PUSH1 0x20 ADD DUP10 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP10 PUSH1 0x20 ADD MLOAD GT ISZERO ISZERO DUP2 MSTORE POP DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1ECF SWAP3 SWAP2 SWAP1 PUSH2 0x2E0C JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F12 SWAP2 SWAP1 PUSH2 0x31BB JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x1F33 JUMPI PUSH2 0xDEAD SWAP4 POP JUMPDEST PUSH2 0x1F3D DUP5 DUP5 PUSH2 0x17F0 JUMP JUMPDEST POP SWAP1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1F70 JUMPI DUP1 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1F65 SWAP2 SWAP1 PUSH2 0x298B JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1FE2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x1FC3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1FFE JUMPI PUSH1 0x7 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x201D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x2062 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2099 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH2 0xB98 DUP3 PUSH1 0x0 DUP4 PUSH2 0x1CE9 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLVALUE EQ PUSH2 0x20C9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4FB8209 PUSH1 0xE5 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE4FE1D94 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x212D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2151 SWAP2 SWAP1 PUSH2 0x2929 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x217A JUMPI PUSH1 0x40 MLOAD PUSH4 0x29B99A95 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLER PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x44 DUP6 ADD MSTORE PUSH1 0x64 DUP1 DUP6 ADD DUP9 SWAP1 MSTORE DUP6 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP5 ADD SWAP1 SWAP5 MSTORE PUSH1 0x20 DUP1 DUP5 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE DUP5 MLOAD PUSH2 0xB98 SWAP7 DUP9 AND SWAP6 DUP10 SWAP4 PUSH2 0x1505 SWAP4 DUP9 SWAP4 PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 SWAP2 DUP4 SWAP2 DUP3 DUP9 GAS CALL DUP1 PUSH2 0x221B JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH1 0x0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x2233 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x2240 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1505 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xAE7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22AB PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22CB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x22B3 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x22EC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x22B0 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xB7F PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x233B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2346 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x237E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD77 DUP5 DUP3 DUP6 ADD PUSH2 0x2354 JUMP JUMPDEST DUP4 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xA0 DUP3 ADD PUSH1 0xA0 PUSH1 0x40 DUP5 ADD MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0xC0 DUP6 ADD SWAP2 POP PUSH1 0xC0 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2421 JUMPI PUSH1 0xBF NOT DUP8 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE PUSH1 0x20 DUP2 ADD MLOAD SWAP1 POP PUSH1 0x40 PUSH1 0x20 DUP8 ADD MSTORE PUSH2 0x240B PUSH1 0x40 DUP8 ADD DUP3 PUSH2 0x22D4 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x23D9 JUMP JUMPDEST POP POP DUP6 MLOAD PUSH1 0x60 DUP7 ADD MSTORE POP POP PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE SWAP1 POP PUSH2 0xD77 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x24B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24BC DUP10 DUP10 PUSH2 0x243D JUMP JUMPDEST SWAP7 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x24DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24EA DUP11 DUP3 DUP12 ADD PUSH2 0x244F JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0x24FE DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2525 DUP11 DUP3 DUP12 ADD PUSH2 0x244F JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x254D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2558 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2568 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x258D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2346 DUP4 PUSH2 0x2579 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x25CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x25E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x25F1 DUP6 DUP3 DUP7 ADD PUSH2 0x2354 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2602 DUP2 PUSH2 0x25AE JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD PUSH2 0x909 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x258D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2652 DUP4 PUSH2 0x2579 JUMP JUMPDEST SWAP2 POP PUSH2 0x2660 PUSH1 0x20 DUP5 ADD PUSH2 0x2624 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x267B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB7F DUP2 PUSH2 0x2313 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x269C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26A6 DUP7 DUP7 PUSH2 0x243D JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x26C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x26CD DUP8 DUP3 DUP9 ADD PUSH2 0x244F JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x80 DUP6 ADD CALLDATALOAD PUSH2 0x26E1 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x26FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2743 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2759 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2765 DUP6 DUP3 DUP7 ADD PUSH2 0x26EC JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB7F DUP3 PUSH2 0x2579 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x27A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27AB DUP6 PUSH2 0x2579 JUMP JUMPDEST SWAP4 POP PUSH2 0x27B9 PUSH1 0x20 DUP7 ADD PUSH2 0x2624 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x27D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x27E0 DUP8 DUP3 DUP9 ADD PUSH2 0x244F JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 DUP6 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x2802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2818 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2824 DUP8 DUP3 DUP9 ADD PUSH2 0x2354 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH1 0x1F NOT DUP3 ADD SLT ISZERO PUSH2 0x2839 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP5 ADD SWAP2 POP PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x284E DUP2 PUSH2 0x2313 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP DUP4 MLOAD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0x20 DUP6 ADD MLOAD AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH2 0x2894 PUSH1 0x40 DUP5 ADD DUP3 DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST POP DUP3 MLOAD PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x28BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x28C9 DUP2 PUSH2 0x2313 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2602 DUP2 PUSH2 0x2313 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB7F DUP4 DUP4 PUSH2 0x243D JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2909 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2366 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x293B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB7F DUP2 PUSH2 0x2313 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2958 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x909 JUMPI PUSH2 0x909 PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x29C0 JUMPI PUSH2 0x29C0 PUSH2 0x295F JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x29C0 JUMPI PUSH2 0x29C0 PUSH2 0x295F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2A10 JUMPI PUSH2 0x2A10 PUSH2 0x295F JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2A31 JUMPI PUSH2 0x2A31 PUSH2 0x295F JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT ISZERO PUSH2 0x2A58 JUMPI PUSH2 0x2A58 PUSH2 0x295F JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x2A68 PUSH1 0x20 DUP3 ADD PUSH2 0x29E8 JUMP JUMPDEST DUP5 DUP2 MSTORE SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATASIZE DUP4 GT ISZERO PUSH2 0x2A81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B5E JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2AA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 ADD PUSH1 0x60 CALLDATASIZE DUP3 SWAP1 SUB SLT ISZERO PUSH2 0x2AB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2ABC PUSH2 0x299E JUMP JUMPDEST PUSH2 0x2AC5 DUP3 PUSH2 0x2579 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x2AD3 PUSH1 0x20 DUP4 ADD PUSH2 0x2624 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2AF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP1 CALLDATASIZE PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B18 PUSH2 0x2B13 DUP3 PUSH2 0x2A18 JUMP JUMPDEST PUSH2 0x29E8 JUMP JUMPDEST DUP2 DUP2 MSTORE CALLDATASIZE PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x2B2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE POP POP DUP1 DUP6 MSTORE POP POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2A83 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x2B78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x2B85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x2BA4 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x22B0 JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY PUSH1 0x0 SWAP4 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xD77 PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x2BBA JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x13E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2C24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2C45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2C5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x2490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0xFFFFFFFF PUSH2 0x2C97 DUP10 PUSH2 0x2579 JUMP JUMPDEST AND DUP2 MSTORE PUSH1 0x20 DUP9 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x2CB4 DUP2 PUSH2 0x2C74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND PUSH1 0x40 DUP5 ADD MSTORE POP DUP8 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xE0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0x2CDF PUSH1 0xE0 DUP4 ADD DUP8 DUP10 PUSH2 0x2BBA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x2D01 DUP2 DUP6 DUP8 PUSH2 0x2BBA JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2D37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x2D48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x2D56 PUSH2 0x2B13 DUP3 PUSH2 0x2A18 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x2D6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17E7 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x22B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB7F DUP2 PUSH2 0x2C74 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE DUP4 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xFFFF DUP4 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xBF9 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2DDD PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x22D4 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x17E7 DUP2 DUP6 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB7F DUP2 PUSH2 0x25AE JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH4 0xFFFFFFFF DUP4 MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0xA0 PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x2E42 PUSH1 0xE0 DUP5 ADD DUP3 PUSH2 0x22D4 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x3F NOT DUP5 DUP4 SUB ADD PUSH1 0xA0 DUP6 ADD MSTORE PUSH2 0x2E5F DUP3 DUP3 PUSH2 0x22D4 JUMP JUMPDEST PUSH1 0x80 SWAP7 SWAP1 SWAP7 ADD MLOAD ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E9F PUSH2 0x29C6 JUMP JUMPDEST DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB7F DUP4 DUP4 PUSH2 0x2E85 JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x12A8 JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2EF9 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x119B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2F05 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2F32 JUMPI PUSH2 0x2F32 PUSH2 0x295F JUMP JUMPDEST PUSH2 0x2F46 DUP2 PUSH2 0x2F40 DUP5 SLOAD PUSH2 0x28F5 JUMP JUMPDEST DUP5 PUSH2 0x2ED2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2F7A JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x2F62 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x119B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2FAA JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2F8A JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x2FC8 JUMPI DUP7 DUP5 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD PUSH1 0x20 DUP4 MSTORE DUP1 DUP5 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP6 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP PUSH1 0x20 DUP7 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x305B JUMPI PUSH1 0x3F NOT DUP8 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD PUSH4 0xFFFFFFFF DUP2 MLOAD AND DUP7 MSTORE PUSH2 0xFFFF PUSH1 0x20 DUP3 ADD MLOAD AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP2 ADD MLOAD SWAP1 POP PUSH1 0x60 PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x3045 PUSH1 0x60 DUP8 ADD DUP3 PUSH2 0x22D4 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2FFF JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x307A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3083 PUSH2 0x29C6 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x30B7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x909 JUMPI PUSH2 0x909 PUSH2 0x2975 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x20 DUP4 LT ISZERO PUSH2 0x909 JUMPI PUSH1 0x0 NOT PUSH1 0x20 DUP5 SWAP1 SUB PUSH1 0x3 SHL SHL AND SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT DUP2 AND SWAP1 PUSH1 0x8 DUP5 LT ISZERO PUSH2 0x3122 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xC0 SHL SUB NOT PUSH1 0x8 DUP6 SWAP1 SUB PUSH1 0x3 SHL DUP2 SWAP1 SHL DUP3 AND AND SWAP2 POP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL DUP6 PUSH1 0xC0 SHL AND DUP2 MSTORE PUSH4 0xFFFFFFFF PUSH1 0xE0 SHL DUP5 PUSH1 0xE0 SHL AND PUSH1 0x8 DUP3 ADD MSTORE DUP3 PUSH1 0xC DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x3168 DUP2 PUSH1 0x2C DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x22B0 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD PUSH1 0x2C ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB PUSH1 0xC0 SHL DUP5 PUSH1 0xC0 SHL AND PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x28 DUP3 ADD MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x31AB DUP2 PUSH1 0x48 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x22B0 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD PUSH1 0x48 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT DUP1 ISZERO PUSH2 0x31CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x31D7 PUSH2 0x299E JUMP JUMPDEST DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x31E9 DUP2 PUSH2 0x2C74 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x31FB DUP5 PUSH1 0x40 DUP6 ADD PUSH2 0x2E85 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 DUP13 0xC3 CALLDATASIZE 0xAA PUSH13 0x3F40258B0C3AD54353A6477923 TLOAD PUSH16 0xCA359DDDC5BBEAB4A6242E64736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ","sourceMap":"189:1641:61:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3979:186;;;;;;;;;;-1:-1:-1;3979:186:36;;;;;:::i;:::-;;:::i;:::-;;;1443:14:66;;1436:22;1418:41;;1406:2;1391:18;3979:186:36;1278:187:66;5176:1276:24;;;;;;;;;;-1:-1:-1;5176:1276:24;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;2330:27::-;;;;;;;;;;-1:-1:-1;2330:27:24;;;;-1:-1:-1;;;;;2330:27:24;;;;;;-1:-1:-1;;;;;3621:32:66;;;3603:51;;3591:2;3576:18;2330:27:24;3457:203:66;4368:708:12;;;;;;:::i;:::-;;:::i;:::-;;2204:40:24;;;;;;;;;;;;2243:1;2204:40;;;;;5448:6:66;5436:19;;;5418:38;;5406:2;5391:18;2204:40:24;5274:188:66;3475:140:24;;;;;;;;;;-1:-1:-1;3475:140:24;;;-1:-1:-1;;;5637:52:66;;3606:1:24;5720:2:66;5705:18;;5698:59;5610:18;3475:140:24;5467:296:66;1287:235:10;;;;;;;;;;-1:-1:-1;1287:235:10;;;843:1:13;5938:50:66;;678:1:12;6019:2:66;6004:18;;5997:59;5911:18;1287:235:10;5768:294:66;2830:97:36;;;;;;;;;;-1:-1:-1;2908:12:36;;2830:97;;;6213:25:66;;;6201:2;6186:18;2830:97:36;6067:177:66;2167:31:24;;;;;;;;;;;;2197:1;2167:31;;4757:244:36;;;;;;;;;;-1:-1:-1;4757:244:36;;;;;:::i;:::-;;:::i;2688:82::-;;;;;;;;;;-1:-1:-1;2761:2:36;2688:82;;;6934:4:66;6922:17;;;6904:36;;6892:2;6877:18;2688:82:36;6762:184:66;215:58:61;;;;;;;;;;;;252:21;215:58;;1724:108:11;;;;;;;;;;-1:-1:-1;1724:108:11;;;;;:::i;:::-;;:::i;6903:774:24:-;;;;;;;;;;-1:-1:-1;6903:774:24;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;686:201:61:-;;;;;;;;;;-1:-1:-1;686:201:61;;;;;:::i;:::-;;:::i;875:93:19:-;;;;;;;;;;-1:-1:-1;956:4:19;875:93;;538::18;;;;;;;;;;-1:-1:-1;538:93:18;;;;;:::i;:::-;;:::i;16151:132:24:-;;;;;;;;;;-1:-1:-1;16151:132:24;;;;;:::i;:::-;16256:11;;;;;16233:4;16256:11;;;:5;:11;;;;;;:20;;16151:132;446:46:11;;;;;;;;;;;;;;;4657:163:24;;;;;;;;;;-1:-1:-1;4657:163:24;;;;;:::i;:::-;;:::i;2985:116:36:-;;;;;;;;;;-1:-1:-1;2985:116:36;;;;;:::i;:::-;-1:-1:-1;;;;;3076:18:36;3050:7;3076:18;;;:9;:18;;;;;;;2985:116;2293:101:28;;;;;;;;;;;;;:::i;3507:128:12:-;;;;;;;;;;-1:-1:-1;3507:128:12;;;;;:::i;:::-;3596:12;3507:128;;;;;;;;-1:-1:-1;;;;;9595:31:66;;;9577:50;;9565:2;9550:18;3507:128:12;9433:200:66;2013:216:12;;;;;;;;;;-1:-1:-1;2013:216:12;;;;;:::i;:::-;;:::i;4222:87:24:-;;;;;;;;;;-1:-1:-1;4301:1:24;4222:87;;1638:85:28;;;;;;;;;;-1:-1:-1;1684:7:28;1710:6;-1:-1:-1;;;;;1710:6:28;1638:85;;1962:93:36;;;;;;;;;;;;;:::i;1861:46:24:-;;;;;;;;;;;;;;;1460:94:23;;;;;;;;;;-1:-1:-1;1519:4:23;1460:94;;3296:178:36;;;;;;;;;;-1:-1:-1;3296:178:36;;;;;:::i;:::-;;:::i;559:23:19:-;;;;;;;;;;-1:-1:-1;559:23:19;;;;-1:-1:-1;;;;;559:23:19;;;1391:156:18;;;;;;;;;;-1:-1:-1;1391:156:18;;;;;:::i;:::-;;:::i;569:48:11:-;;;;;;;;;;-1:-1:-1;569:48:11;;;;;:::i;:::-;;;;;;;;;;;;;;3510:981:18;;;;;;;;;;-1:-1:-1;3510:981:18;;;;;:::i;:::-;;:::i;1698:1333:19:-;;;;;;:::i;:::-;;:::i;8365:290:24:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;3252:105:11:-;;;;;;;;;;-1:-1:-1;3252:105:11;;;;;:::i;:::-;;:::i;3679:409:19:-;;;;;;:::i;:::-;;:::i;1100:139::-;;;;;;;;;;-1:-1:-1;1100:139:19;;;;;:::i;:::-;;:::i;3532:140:36:-;;;;;;;;;;-1:-1:-1;3532:140:36;;;;;:::i;:::-;-1:-1:-1;;;;;3638:18:36;;;3612:7;3638:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3532:140;2543:215:28;;;;;;;;;;-1:-1:-1;2543:215:28;;;;;:::i;:::-;;:::i;2771:149:12:-;;;;;;;;;;-1:-1:-1;2771:149:12;;;;;:::i;:::-;;:::i;1760:89:36:-;1805:13;1837:5;1830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1760:89;:::o;3979:186::-;4052:4;735:10:46;4106:31:36;735:10:46;4122:7:36;4131:5;4106:8;:31::i;:::-;4154:4;4147:11;;;3979:186;;;;;:::o;5176:1276:24:-;-1:-1:-1;;;;;;;;;;;;;;;;;5328:35:24;5365:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;5365:28:24;5409:19;5483;5512:4;-1:-1:-1;;;;;5512:10:24;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5505:32:24;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5601;;;;;;;;;;;;;;;;;;5752:21;;-1:-1:-1;5752:21:24;;;;;;;;;5601:34;;-1:-1:-1;5601:34:24;;-1:-1:-1;5752:21:24;;;;-1:-1:-1;;;;;;;;;;;;;;;;;5752:21:24;;;;;;;;;;;;;;;-1:-1:-1;5736:37:24;-1:-1:-1;6210:20:24;;6260:120;6284:19;;;;6317:22;;;;6353:17;;;;6284:10;6353:17;:::i;:::-;6260:10;:120::i;:::-;6403:42;;;;;;;;;;;;;;;;5176:1276;;;;-1:-1:-1;;;;;;5176:1276:24:o;4368:708:12:-;4681:8;-1:-1:-1;;;;;4673:31:12;4694:10;4673:31;4669:68;;4713:24;;-1:-1:-1;;;4713:24:12;;4726:10;4713:24;;;3603:51:66;3576:18;;4713:24:12;;;;;;;;4669:68;4873:14;;;;;;4837:32;;4854:14;;4873:7;4854:14;:::i;:::-;4837:16;:32::i;:::-;:50;4833:103;;4905:14;;;;:7;:14;:::i;:::-;4896:40;;-1:-1:-1;;;4896:40:12;;15768:10:66;15756:23;;;4896:40:12;;;15738:42:66;4921:14:12;;;;15796:18:66;;;15789:34;15711:18;;4896:40:12;15566:263:66;4833:103:12;5010:59;5021:7;5030:5;5037:8;;5047:9;5058:10;;5010;:59::i;:::-;4368:708;;;;;;;:::o;4757:244:36:-;4844:4;735:10:46;4900:37:36;4916:4;735:10:46;4931:5:36;4900:15;:37::i;:::-;4947:26;4957:4;4963:2;4967:5;4947:9;:26::i;:::-;4990:4;4983:11;;;4757:244;;;;;;:::o;1724:108:11:-;1531:13:28;:11;:13::i;:::-;1804:21:11::1;1813:4;1819:5;1804:8;:21::i;:::-;1724:108:::0;;:::o;6903:774:24:-;-1:-1:-1;;;;;;;;;;;;;;;;;7237:24:24;7265:74;7276:19;;;;7297:22;;;;7321:17;;;;7276:10;7321:17;:::i;7265:74::-;7234:105;;;7428:20;7450;7474:49;7494:10;7506:16;7474:19;:49::i;:::-;7427:96;;-1:-1:-1;7427:96:24;-1:-1:-1;7612:58:24;7619:17;;;;:10;:17;:::i;:::-;7638:7;7647;7656:13;7612:6;:58::i;:::-;7605:65;6903:774;-1:-1:-1;;;;;;6903:774:24:o;686:201:61:-;1531:13:28;:11;:13::i;:::-;252:21:61::1;779:7;763:13;2908:12:36::0;;;2830:97;763:13:61::1;:23;;;;:::i;:::-;:36;759:93;;;822:19;;-1:-1:-1::0;;;822:19:61::1;;;;;;;;;;;759:93;861:19;867:3;872:7;861:5;:19::i;538:93:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4657:163:24:-;1531:13:28;:11;:13::i;:::-;4740:12:24::1;:28:::0;;-1:-1:-1;;;;;;4740:28:24::1;-1:-1:-1::0;;;;;4740:28:24;::::1;::::0;;::::1;::::0;;;4783:30:::1;::::0;3603:51:66;;;4783:30:24::1;::::0;3591:2:66;3576:18;4783:30:24::1;;;;;;;;4657:163:::0;:::o;2293:101:28:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2013:216:12:-;-1:-1:-1;;;;;2198:24:12;;2217:4;2198:24;2013:216;;;;;;;:::o;1962:93:36:-;2009:13;2041:7;2034:14;;;;;:::i;3296:178::-;3365:4;735:10:46;3419:27:36;735:10:46;3436:2:36;3440:5;3419:9;:27::i;1391:156:18:-;1531:13:28;:11;:13::i;:::-;1503:37:18::1;;1523:16:::0;;1503:37:::1;:::i;:::-;:19;:37::i;3510:981::-:0;3701:21;;;3677;3701;;;:15;:21;;;;;;;;:31;;;;;;;;;;3677:55;;3653:12;;3677:21;3701:31;3677:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3861:8;:15;3880:1;3861:20;3857:46;;3890:13;;3883:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3883:20:18;;-1:-1:-1;3883:20:18;;-1:-1:-1;;;;3883:20:18;3857:46;3988:1;3964:25;;;3960:46;;3998:8;-1:-1:-1;3991:15:18;;3960:46;4153:1;4129:25;;4125:267;;4170:34;4190:13;;4170:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4170:19:18;;-1:-1:-1;;;4170:34:18:i;:::-;4353:8;4363:17;:13;4377:1;4363:13;;:17;:::i;:::-;4340:41;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4333:48;;;;;4125:267;4470:13;;4455:29;;-1:-1:-1;;;4455:29:18;;;;;;;;;:::i;1698:1333:19:-;1799:9;1794:1037;1814:19;;;1794:1037;;;1854:29;1886:8;;1895:1;1886:11;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;1854:43;-1:-1:-1;1980:50:19;1987:20;;;;1854:43;1987:20;:::i;:::-;2009;;;;16256:11:24;;;;;16233:4;16256:11;;;:5;:11;;;;;;:20;;16151:132;1980:50:19;1975:65;;2032:8;;;1975:65;2602:4;:22;2633:12;;;;:6;2696:11;;;;2725:14;;;;2633:6;2725:14;:::i;:::-;2757:15;;;;;;;;:::i;:::-;2790:16;;;;:6;:16;:::i;:::-;2602:218;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1840:991;1794:1037;1835:3;;1794:1037;;;;2988:10;-1:-1:-1;;;;;2978:43:19;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2978:45:19;;;;;;;;;;;;:::i;:::-;2961:63;;-1:-1:-1;;;2961:63:19;;;;;;;;:::i;8365:290:24:-;8526:34;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;8609:39:24;8615:10;8627:4;8633:14;8609:5;:39::i;:::-;8602:46;;;;8365:290;;;;;;;:::o;3252:105:11:-;1531:13:28;:11;:13::i;:::-;3319:31:11::1;::::0;-1:-1:-1;;;3319:31:11;;-1:-1:-1;;;;;3621:32:66;;;3319:31:11::1;::::0;::::1;3603:51:66::0;3319:8:11::1;:20;::::0;::::1;::::0;3576:18:66;;3319:31:11::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3252:105:::0;:::o;3679:409:19:-;3958:10;3980:4;3958:27;3954:50;;3994:10;;-1:-1:-1;;;3994:10:19;;;;;;;;;;;3954:50;4014:67;4033:7;4042:5;4049:8;;4059:9;4070:10;;4014:18;:67::i;1100:139::-;1531:13:28;:11;:13::i;:::-;1175:8:19::1;:20:::0;;-1:-1:-1;;;;;;1175:20:19::1;-1:-1:-1::0;;;;;1175:20:19;::::1;::::0;;::::1;::::0;;;1210:22:::1;::::0;3603:51:66;;;1210:22:19::1;::::0;3591:2:66;3576:18;1210:22:19::1;3457:203:66::0;2543:215:28;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:28;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:28;;2700:1:::1;2672:31;::::0;::::1;3603:51:66::0;3576:18;;2672:31:28::1;3457:203:66::0;2623:91:28::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;2771:149:12:-;2853:4;2900:13;;;;;;2876:5;;2853:4;;2882:13;;2900:6;2882:13;:::i;:::-;2876:20;;;;;;;;;;;;;-1:-1:-1;2876:20:12;;:37;;2771:149;-1:-1:-1;;2771:149:12:o;8707:128:36:-;8791:37;8800:5;8807:7;8816:5;8823:4;8791:8;:37::i;:::-;8707:128;;;:::o;18168:668:24:-;18310:20;18332:24;18506:22;18518:9;18506:11;:22::i;:::-;18491:37;;18654:12;18635:31;;18736:12;18717:16;:31;18713:117;;;18771:48;;-1:-1:-1;;;18771:48:24;;;;;23232:25:66;;;23273:18;;;23266:34;;;23205:18;;18771:48:24;23058:248:66;2718:196:11;2822:11;;;2788:7;2822:11;;;:5;:11;;;;;;;2843:43;;2874:12;;-1:-1:-1;;;2874:12:11;;23485:10:66;23473:23;;2874:12:11;;;23455:42:66;23428:18;;2874:12:11;23311:192:66;12944:1806:24;13421:17;13441:36;:17;:8;;:15;:17::i;:::-;2891:2:27;2780:123;13441:36:24;13421:56;;13610:24;13637:62;13645:9;13656:26;13662:19;:8;;:17;:19::i;:::-;13656:5;:26::i;:::-;13684:14;;;;:7;:14;:::i;:::-;13637:7;:62::i;:::-;13610:89;-1:-1:-1;243:2:27;-1:-1:-1;;13710:955:24;;;13814:23;13840:175;13883:13;;;;;;;;:::i;:::-;13914:14;;;;:7;:14;:::i;:::-;13946:16;13980:21;:8;;:19;:21::i;:::-;13840:25;:175::i;:::-;14562:92;;-1:-1:-1;;;14562:92:24;;13814:201;;-1:-1:-1;;;;;;14562:8:24;:20;;;;:92;;14583:9;;14594:5;;14601:1;;13814:201;;14562:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13737:928;13710:955;-1:-1:-1;;;;;14680:63:24;;14692:5;14680:63;14699:14;;;;:7;:14;:::i;:::-;14680:63;;;15768:10:66;15756:23;;;15738:42;;15811:2;15796:18;;15789:34;;;15711:18;14680:63:24;;;;;;;13247:1503;;12944:1806;;;;;;;:::o;10396:476:36:-;-1:-1:-1;;;;;3638:18:36;;;10495:24;3638:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10561:36:36;;10557:309;;;10636:5;10617:16;:24;10613:130;;;10668:60;;-1:-1:-1;;;10668:60:36;;-1:-1:-1;;;;;24730:32:66;;10668:60:36;;;24712:51:66;24779:18;;;24772:34;;;24822:18;;;24815:34;;;24685:18;;10668:60:36;24510:345:66;10613:130:36;10784:57;10793:5;10800:7;10828:5;10809:16;:24;10835:5;10784:8;:57::i;:::-;10485:387;10396:476;;;:::o;5374:300::-;-1:-1:-1;;;;;5457:18:36;;5453:86;;5498:30;;-1:-1:-1;;;5498:30:36;;5525:1;5498:30;;;3603:51:66;3576:18;;5498:30:36;3457:203:66;5453:86:36;-1:-1:-1;;;;;5552:16:36;;5548:86;;5591:32;;-1:-1:-1;;;5591:32:36;;5620:1;5591:32;;;3603:51:66;3576:18;;5591:32:36;3457:203:66;5548:86:36;5643:24;5651:4;5657:2;5661:5;5643:7;:24::i;1796:162:28:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:28;735:10:46;1855:23:28;1851:101;;1901:40;;-1:-1:-1;;;1901:40:28;;735:10:46;1901:40:28;;;3603:51:66;3576:18;;1901:40:28;3457:203:66;2286:134:11;2359:11;;;;;;;:5;:11;;;;;;;;;:19;;;2393:20;;15738:42:66;;;15796:18;;15789:34;;;2393:20:11;;15711:18:66;2393:20:11;;;;;;;2286:134;;:::o;10990:1436:24:-;11122:20;11144;11176:15;11347:324;11379:10;:13;;;11406:16;11412:9;11406:5;:16::i;:::-;11640:21;;;;:10;:21;:::i;:::-;11347:324;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11347:18:24;;-1:-1:-1;;;11347:324:24:i;:::-;11323:348;;-1:-1:-1;11323:348:24;-1:-1:-1;11751:14:24;11323:348;11768:33;;2197:1;11768:33;;;2243:1;11768:33;11751:50;-1:-1:-1;11923:67:24;11938:17;;;;:10;:17;:::i;:::-;11957:7;11966:23;;;;:10;:23;:::i;11923:67::-;12248:12;;11913:77;;-1:-1:-1;;;;;;12248:12:24;12340:23;;12336:83;;12365:54;;-1:-1:-1;;;12365:54:24;;-1:-1:-1;;;;;12365:36:24;;;;;:54;;12402:7;;12411;;12365:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12336:83;11166:1260;;;10990:1436;;;;;:::o;2038:391:13:-;-1:-1:-1;;;;;;;;;;;;;;;;;2259:8:13;-1:-1:-1;;;;;2259:14:13;;2291:86;;;;;;;;2307:7;2291:86;;;;;;2316:25;2333:7;2316:16;:25::i;:::-;2291:86;;;;2343:8;2291:86;;;;2353:8;2291:86;;;;2363:13;2291:86;;;;;2403:4;2259:163;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2240:182;2038:391;-1:-1:-1;;;;;2038:391:13:o;7439:208:36:-;-1:-1:-1;;;;;7509:21:36;;7505:91;;7553:32;;-1:-1:-1;;;7553:32:36;;7582:1;7553:32;;;3603:51:66;3576:18;;7553:32:36;3457:203:66;7505:91:36;7605:35;7621:1;7625:7;7634:5;7605:7;:35::i;2912:187:28:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:28;;;-1:-1:-1;;;;;;3020:17:28;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;2237:514:18:-;2345:9;2340:354;2364:16;:23;2360:1;:27;2340:354;;;2522:48;2542:16;2559:1;2542:19;;;;;;;;:::i;:::-;;;;;;;:27;;;2522:19;:48::i;:::-;2656:16;2673:1;2656:19;;;;;;;;:::i;:::-;;;;;;;:27;;;2584:15;:40;2600:16;2617:1;2600:19;;;;;;;;:::i;:::-;;;;;;;:23;;;2584:40;;;;;;;;;;;;;;;:69;2625:16;2642:1;2625:19;;;;;;;;:::i;:::-;;;;;;;:27;;;2584:69;;;;;;;;;;;;;;;:99;;;;;;:::i;:::-;-1:-1:-1;2389:3:18;;2340:354;;;;2709:35;2727:16;2709:35;;;;;;:::i;4631:264::-;4801:1;4787:16;;4781:23;4827:28;;;463:1;4827:28;4823:65;;4879:8;4864:24;;-1:-1:-1;;;4864:24:18;;;;;;;;:::i;9363:1333:24:-;9517:34;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;9915:20:24;;9965:140;9985:10;10009:19;;;;10042:22;;;;10078:17;;;;10009:10;10078:17;:::i;:::-;9965:6;:140::i;:::-;9914:191;;;;10194:20;10216;10240:49;10260:10;10272:16;10240:19;:49::i;:::-;10193:96;;-1:-1:-1;10193:96:24;-1:-1:-1;10412:66:24;10420:17;;;;:10;:17;:::i;:::-;10439:7;10448;10412:66;;;;;;;10457:4;10412:66;:::i;:::-;10463:14;10412:7;:66::i;:::-;10544:42;;;;;;;;;;;;;;;;;;;10610:15;;10399:79;;-1:-1:-1;10544:42:24;;-1:-1:-1;10646:10:24;;10610:15;10602:87;;10627:17;;;;:10;:17;:::i;:::-;10602:87;;;30985:10:66;30973:23;;;30955:42;;31028:2;31013:18;;31006:34;;;31056:18;;31049:34;;;30943:2;30928:18;10602:87:24;;;;;;;9583:1113;;;;9363:1333;;;;;;:::o;9682:432:36:-;-1:-1:-1;;;;;9794:19:36;;9790:89;;9836:32;;-1:-1:-1;;;9836:32:36;;9865:1;9836:32;;;3603:51:66;3576:18;;9836:32:36;3457:203:66;9790:89:36;-1:-1:-1;;;;;9892:21:36;;9888:90;;9936:31;;-1:-1:-1;;;9936:31:36;;9964:1;9936:31;;;3603:51:66;3576:18;;9936:31:36;3457:203:66;9888:90:36;-1:-1:-1;;;;;9987:18:36;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10032:76;;;;10082:7;-1:-1:-1;;;;;10066:31:36;10075:5;-1:-1:-1;;;;;10066:31:36;;10091:5;10066:31;;;;6213:25:66;;6201:2;6186:18;;6067:177;10066:31:36;;;;;;;;9682:432;;;;:::o;16677:172:24:-;16748:16;16821:21;16784:33;16821:21;16784:9;:33;:::i;:::-;16783:59;;;;:::i;1573:123:27:-;1633:7;1667:21;188:2;1633:7;1667:4;;:21;:::i;:::-;1659:30;;;:::i;1874:152::-;1936:6;1975:42;243:2;188;1975:4;;:42;:::i;:::-;1968:50;;;:::i;:::-;1961:58;;;1874:152;-1:-1:-1;;;1874:152:27:o;17073:139:24:-;17137:16;17172:33;17184:21;-1:-1:-1;;;;;17172:33:24;;;:::i;1002:374:61:-;1132:24;252:21;1240:9;1224:13;2908:12:36;;;2830:97;1224:13:61;:25;;;;:::i;:::-;:38;1220:95;;;1285:19;;-1:-1:-1;;;1285:19:61;;;;;;;;;;;1220:95;1331:38;1345:3;1350:9;1361:7;1331:13;:38::i;2186:130:27:-;2250:12;2281:28;:4;243:2;2281:4;;:28;:::i;:::-;2274:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2274:35:27;;2186:130;-1:-1:-1;;;;;;2186:130:27:o;640:284:26:-;824:17;877:6;885:7;894:9;905:11;860:57;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;853:64;;640:284;;;;;;:::o;1542:286:61:-;-1:-1:-1;;;;;1671:18:61;;;:57;;;;;252:21;1709:6;1693:13;2908:12:36;;;2830:97;1693:13:61;:22;;;;:::i;:::-;:35;1671:57;1667:114;;;1751:19;;-1:-1:-1;;;1751:19:61;;;;;;;;;;;1667:114;1790:31;1804:4;1810:2;1814:6;1790:13;:31::i;17436:147:24:-;17501:15;17542:33;17554:21;17542:9;:33;:::i;598:506:27:-;791:18;;732:17;;791:22;;;934:163;;1074:7;1083:13;1057:40;;;;;;;;32844:19:66;;;32919:3;32897:16;-1:-1:-1;;;;;;32893:51:66;32888:2;32879:12;;32872:73;32970:2;32961:12;;32689:290;1057:40:27;;;;;;;;;;;;;934:163;;;976:7;985:13;1017:10;1030:11;959:83;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;934:163;927:170;;598:506;;;;;;:::o;2037:567:23:-;2198:20;2220:24;2291:44;2302:9;2313:12;2327:7;2291:10;:44::i;:::-;2256:79;;-1:-1:-1;2256:79:23;-1:-1:-1;2571:26:23;2577:5;2256:79;2571:5;:26::i;:::-;2037:567;;;;;;;:::o;3188:766:13:-;3389:31;;:::i;:::-;3554:20;3577:26;3588:4;:14;;;3577:10;:26::i;:::-;3617:15;;;;3554:49;;-1:-1:-1;3617:19:13;3613:53;;3638:28;3650:4;:15;;;3638:11;:28::i;:::-;3755:8;-1:-1:-1;;;;;3755:13:13;;3777:12;3809:92;;;;;;;;3825:7;3809:92;;;;;;3834:25;3851:7;3834:16;:25::i;:::-;3809:92;;;;3861:8;3809:92;;;;3871:8;3809:92;;;;3899:1;3881:4;:15;;;:19;3809:92;;;;;3919:14;3755:192;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3677:270;3188:766;-1:-1:-1;;;;;;;3188:766:13:o;2939:462:23:-;3073:24;-1:-1:-1;;;;;3113:19:23;;3109:46;;3148:6;3134:21;;3109:46;3251:21;3257:3;3262:9;3251:5;:21::i;:::-;-1:-1:-1;3385:9:23;;2939:462;-1:-1:-1;;2939:462:23:o;5989:1107:36:-;-1:-1:-1;;;;;6078:18:36;;6074:540;;6230:5;6214:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6074:540:36;;-1:-1:-1;6074:540:36;;-1:-1:-1;;;;;6288:15:36;;6266:19;6288:15;;;:9;:15;;;;;;6321:19;;;6317:115;;;6367:50;;-1:-1:-1;;;6367:50:36;;-1:-1:-1;;;;;24730:32:66;;6367:50:36;;;24712:51:66;24779:18;;;24772:34;;;24822:18;;;24815:34;;;24685:18;;6367:50:36;24510:345:66;6317:115:36;-1:-1:-1;;;;;6552:15:36;;;;;;:9;:15;;;;;6570:19;;;;6552:37;;6074:540;-1:-1:-1;;;;;6628:16:36;;6624:425;;6791:12;:21;;;;;;;6624:425;;;-1:-1:-1;;;;;7002:13:36;;;;;;:9;:13;;;;;:22;;;;;;6624:425;7079:2;-1:-1:-1;;;;;7064:25:36;7073:4;-1:-1:-1;;;;;7064:25:36;;7083:5;7064:25;;;;6213::66;;6201:2;6186:18;;6067:177;7064:25:36;;;;;;;;5989:1107;;;:::o;7965:206::-;-1:-1:-1;;;;;8035:21:36;;8031:89;;8079:30;;-1:-1:-1;;;8079:30:36;;8106:1;8079:30;;;3603:51:66;3576:18;;8079:30:36;3457:203:66;8031:89:36;8129:35;8137:7;8154:1;8158:5;8129:7;:35::i;4650:191:13:-;4716:17;4762:10;4749:9;:23;4745:62;;4781:26;;-1:-1:-1;;;4781:26:13;;4797:9;4781:26;;;6213:25:66;6186:18;;4781:26:13;6067:177:66;4745:62:13;-1:-1:-1;4824:10:13;4650:191::o;5218:410::-;5371:15;5389:8;-1:-1:-1;;;;;5389:16:13;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5371:36;-1:-1:-1;;;;;;5421:21:13;;5417:54;;5451:20;;-1:-1:-1;;;5451:20:13;;;;;;;;;;;5417:54;1745:53:39;;;5578:10:13;1745:53:39;;;34288:51:66;;;5598:8:13;-1:-1:-1;;;;;34375:32:66;;;34355:18;;;34348:60;34424:18;;;;34417:34;;;1745:53:39;;;;;;;;;;34261:18:66;;;;1745:53:39;;;;;;;;;-1:-1:-1;;;;;1745:53:39;-1:-1:-1;;;1745:53:39;;;8600:11;;5545:76:13;;:32;;;5609:11;;1718:81:39;;5545:32:13;;-1:-1:-1;;;;1745:53:39;;-1:-1:-1;;;5545:32:13;8566:5:39;8561:60;8673:7;8663:176;;8717:4;8711:11;8762:16;8759:1;8754:3;8739:40;8808:16;8803:3;8796:29;8663:176;-1:-1:-1;;8916:1:39;8910:8;8866:16;;-1:-1:-1;8942:15:39;;:68;;8994:11;9009:1;8994:16;;8942:68;;;-1:-1:-1;;;;;8960:26:39;;;:31;8942:68;8938:146;;;9033:40;;-1:-1:-1;;;9033:40:39;;-1:-1:-1;;;;;3621:32:66;;9033:40:39;;;3603:51:66;3576:18;;9033:40:39;3457:203:66;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:250:66:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:66;238:16;;231:27;14:250::o;269:271::-;311:3;349:5;343:12;376:6;371:3;364:19;392:76;461:6;454:4;449:3;445:14;438:4;431:5;427:16;392:76;:::i;:::-;522:2;501:15;-1:-1:-1;;497:29:66;488:39;;;;529:4;484:50;;269:271;-1:-1:-1;;269:271:66:o;545:220::-;694:2;683:9;676:21;657:4;714:45;755:2;744:9;740:18;732:6;714:45;:::i;770:131::-;-1:-1:-1;;;;;845:31:66;;835:42;;825:70;;891:1;888;881:12;906:367;974:6;982;1035:2;1023:9;1014:7;1010:23;1006:32;1003:52;;;1051:1;1048;1041:12;1003:52;1090:9;1077:23;1109:31;1134:5;1109:31;:::i;:::-;1159:5;1237:2;1222:18;;;;1209:32;;-1:-1:-1;;;906:367:66:o;1470:158::-;1532:5;1577:3;1568:6;1563:3;1559:16;1555:26;1552:46;;;1594:1;1591;1584:12;1552:46;-1:-1:-1;1616:6:66;1470:158;-1:-1:-1;1470:158:66:o;1633:360::-;1721:6;1774:2;1762:9;1753:7;1749:23;1745:32;1742:52;;;1790:1;1787;1780:12;1742:52;1830:9;1817:23;-1:-1:-1;;;;;1855:6:66;1852:30;1849:50;;;1895:1;1892;1885:12;1849:50;1918:69;1979:7;1970:6;1959:9;1955:22;1918:69;:::i;2152:1300::-;2072:12;;2060:25;;2134:4;2123:16;;;2117:23;2101:14;;;2094:47;2518:4;2566:3;2551:19;;2660:3;2655:2;2644:9;2640:18;2633:31;2684:6;2719;2713:13;2750:6;2742;2735:22;2788:3;2777:9;2773:19;2766:26;;2851:3;2841:6;2838:1;2834:14;2823:9;2819:30;2815:40;2801:54;;2890:4;2882:6;2878:17;2913:1;2923:437;2937:6;2934:1;2931:13;2923:437;;;3030:3;3026:8;3014:9;3006:6;3002:22;2998:37;2993:3;2986:50;3065:6;3059:13;3106:2;3100:9;3092:6;3085:25;3157:4;3153:2;3149:13;3143:20;3123:40;;3202:2;3195:4;3187:6;3183:17;3176:29;3228:48;3272:2;3264:6;3260:15;3246:12;3228:48;:::i;:::-;3218:58;-1:-1:-1;;3311:4:66;3336:14;;;;3299:17;;;;;2959:1;2952:9;2923:437;;;-1:-1:-1;;2072:12:66;;3442:2;3427:18;;2060:25;-1:-1:-1;;2134:4:66;2123:16;;2117:23;2101:14;;;2094:47;3377:6;-1:-1:-1;3392:54:66;1998:149;3665:154;3724:5;3769:2;3760:6;3755:3;3751:16;3747:25;3744:45;;;3785:1;3782;3775:12;3824:347;3875:8;3885:6;3939:3;3932:4;3924:6;3920:17;3916:27;3906:55;;3957:1;3954;3947:12;3906:55;-1:-1:-1;3980:20:66;;-1:-1:-1;;;;;4012:30:66;;4009:50;;;4055:1;4052;4045:12;4009:50;4092:4;4084:6;4080:17;4068:29;;4144:3;4137:4;4128:6;4120;4116:19;4112:30;4109:39;4106:59;;;4161:1;4158;4151:12;4106:59;3824:347;;;;;:::o;4176:1093::-;4317:6;4325;4333;4341;4349;4357;4365;4418:3;4406:9;4397:7;4393:23;4389:33;4386:53;;;4435:1;4432;4425:12;4386:53;4458;4503:7;4492:9;4458:53;:::i;:::-;4448:63;-1:-1:-1;4580:2:66;4565:18;;4552:32;;-1:-1:-1;4659:3:66;4644:19;;4631:33;-1:-1:-1;;;;;4676:30:66;;4673:50;;;4719:1;4716;4709:12;4673:50;4758:58;4808:7;4799:6;4788:9;4784:22;4758:58;:::i;:::-;4835:8;;-1:-1:-1;4732:84:66;-1:-1:-1;;4922:3:66;4907:19;;4894:33;4936;4894;4936;:::i;:::-;4988:7;-1:-1:-1;5048:3:66;5033:19;;5020:33;-1:-1:-1;;;;;5065:32:66;;5062:52;;;5110:1;5107;5100:12;5062:52;5149:60;5201:7;5190:8;5179:9;5175:24;5149:60;:::i;:::-;4176:1093;;;;-1:-1:-1;4176:1093:66;;-1:-1:-1;4176:1093:66;;;;5123:86;;-1:-1:-1;;;4176:1093:66:o;6249:508::-;6326:6;6334;6342;6395:2;6383:9;6374:7;6370:23;6366:32;6363:52;;;6411:1;6408;6401:12;6363:52;6450:9;6437:23;6469:31;6494:5;6469:31;:::i;:::-;6519:5;-1:-1:-1;6576:2:66;6561:18;;6548:32;6589:33;6548:32;6589:33;:::i;:::-;6249:508;;6641:7;;-1:-1:-1;;;6721:2:66;6706:18;;;;6693:32;;6249:508::o;6951:163::-;7018:20;;7078:10;7067:22;;7057:33;;7047:61;;7104:1;7101;7094:12;7047:61;6951:163;;;:::o;7119:298::-;7186:6;7194;7247:2;7235:9;7226:7;7222:23;7218:32;7215:52;;;7263:1;7260;7253:12;7215:52;7286:28;7304:9;7286:28;:::i;7422:118::-;7508:5;7501:13;7494:21;7487:5;7484:32;7474:60;;7530:1;7527;7520:12;7545:489;7639:6;7647;7700:2;7688:9;7679:7;7675:23;7671:32;7668:52;;;7716:1;7713;7706:12;7668:52;7756:9;7743:23;-1:-1:-1;;;;;7781:6:66;7778:30;7775:50;;;7821:1;7818;7811:12;7775:50;7844:69;7905:7;7896:6;7885:9;7881:22;7844:69;:::i;:::-;7834:79;;;7963:2;7952:9;7948:18;7935:32;7976:28;7998:5;7976:28;:::i;:::-;8023:5;8013:15;;;7545:489;;;;;:::o;8039:253::-;2072:12;;2060:25;;2134:4;2123:16;;;2117:23;2101:14;;;2094:47;8229:2;8214:18;;8241:45;1998:149;8297:159;8364:20;;8424:6;8413:18;;8403:29;;8393:57;;8446:1;8443;8436:12;8461:256;8527:6;8535;8588:2;8576:9;8567:7;8563:23;8559:32;8556:52;;;8604:1;8601;8594:12;8556:52;8627:28;8645:9;8627:28;:::i;:::-;8617:38;;8674:37;8707:2;8696:9;8692:18;8674:37;:::i;:::-;8664:47;;8461:256;;;;;:::o;9181:247::-;9240:6;9293:2;9281:9;9272:7;9268:23;9264:32;9261:52;;;9309:1;9306;9299:12;9261:52;9348:9;9335:23;9367:31;9392:5;9367:31;:::i;9638:668::-;9750:6;9758;9766;9774;9827:3;9815:9;9806:7;9802:23;9798:33;9795:53;;;9844:1;9841;9834:12;9795:53;9867;9912:7;9901:9;9867:53;:::i;:::-;9857:63;;9971:2;9960:9;9956:18;9943:32;-1:-1:-1;;;;;9990:6:66;9987:30;9984:50;;;10030:1;10027;10020:12;9984:50;10069:58;10119:7;10110:6;10099:9;10095:22;10069:58;:::i;:::-;10146:8;;-1:-1:-1;10043:84:66;-1:-1:-1;;10231:3:66;10216:19;;10203:33;10245:31;10203:33;10245:31;:::i;:::-;9638:668;;;;-1:-1:-1;9638:668:66;;-1:-1:-1;;9638:668:66:o;10311:395::-;10402:8;10412:6;10466:3;10459:4;10451:6;10447:17;10443:27;10433:55;;10484:1;10481;10474:12;10433:55;-1:-1:-1;10507:20:66;;-1:-1:-1;;;;;10539:30:66;;10536:50;;;10582:1;10579;10572:12;10536:50;10619:4;10611:6;10607:17;10595:29;;10679:3;10672:4;10662:6;10659:1;10655:14;10647:6;10643:27;10639:38;10636:47;10633:67;;;10696:1;10693;10686:12;10711:504;10836:6;10844;10897:2;10885:9;10876:7;10872:23;10868:32;10865:52;;;10913:1;10910;10903:12;10865:52;10953:9;10940:23;-1:-1:-1;;;;;10978:6:66;10975:30;10972:50;;;11018:1;11015;11008:12;10972:50;11057:98;11147:7;11138:6;11127:9;11123:22;11057:98;:::i;:::-;11174:8;;11031:124;;-1:-1:-1;10711:504:66;-1:-1:-1;;;;10711:504:66:o;11220:184::-;11278:6;11331:2;11319:9;11310:7;11306:23;11302:32;11299:52;;;11347:1;11344;11337:12;11299:52;11370:28;11388:9;11370:28;:::i;11591:553::-;11677:6;11685;11693;11701;11754:2;11742:9;11733:7;11729:23;11725:32;11722:52;;;11770:1;11767;11760:12;11722:52;11793:28;11811:9;11793:28;:::i;:::-;11783:38;;11840:37;11873:2;11862:9;11858:18;11840:37;:::i;:::-;11830:47;;11928:2;11917:9;11913:18;11900:32;-1:-1:-1;;;;;11947:6:66;11944:30;11941:50;;;11987:1;11984;11977:12;11941:50;12026:58;12076:7;12067:6;12056:9;12052:22;12026:58;:::i;:::-;11591:553;;;;-1:-1:-1;12103:8:66;-1:-1:-1;;;;11591:553:66:o;12652:655::-;12788:6;12796;12804;12848:9;12839:7;12835:23;12878:3;12874:2;12870:12;12867:32;;;12895:1;12892;12885:12;12867:32;12935:9;12922:23;-1:-1:-1;;;;;12960:6:66;12957:30;12954:50;;;13000:1;12997;12990:12;12954:50;13023:69;13084:7;13075:6;13064:9;13060:22;13023:69;:::i;:::-;13013:79;-1:-1:-1;;13126:2:66;-1:-1:-1;;13108:16:66;;13104:25;13101:45;;;13142:1;13139;13132:12;13101:45;;13180:2;13169:9;13165:18;13155:28;;13233:2;13222:9;13218:18;13205:32;13246:31;13271:5;13246:31;:::i;:::-;13296:5;13286:15;;;12652:655;;;;;:::o;13312:609::-;13552:4;13594:3;13583:9;13579:19;13571:27;;13631:6;13625:13;13614:9;13607:32;-1:-1:-1;;;;;13699:4:66;13691:6;13687:17;13681:24;13677:49;13670:4;13659:9;13655:20;13648:79;13774:4;13766:6;13762:17;13756:24;13789:62;13845:4;13834:9;13830:20;13816:12;2072;;2060:25;;2134:4;2123:16;;;2117:23;2101:14;;2094:47;1998:149;13789:62;-1:-1:-1;2072:12:66;;13910:3;13895:19;;2060:25;2134:4;2123:16;;2117:23;2101:14;;;2094:47;13860:55;1998:149;13926:388;13994:6;14002;14055:2;14043:9;14034:7;14030:23;14026:32;14023:52;;;14071:1;14068;14061:12;14023:52;14110:9;14097:23;14129:31;14154:5;14129:31;:::i;:::-;14179:5;-1:-1:-1;14236:2:66;14221:18;;14208:32;14249:33;14208:32;14249:33;:::i;14319:234::-;14402:6;14455:2;14443:9;14434:7;14430:23;14426:32;14423:52;;;14471:1;14468;14461:12;14423:52;14494:53;14539:7;14528:9;14494:53;:::i;14558:380::-;14637:1;14633:12;;;;14680;;;14701:61;;14755:4;14747:6;14743:17;14733:27;;14701:61;14808:2;14800:6;14797:14;14777:18;14774:38;14771:161;;14854:10;14849:3;14845:20;14842:1;14835:31;14889:4;14886:1;14879:15;14917:4;14914:1;14907:15;14943:251;15013:6;15066:2;15054:9;15045:7;15041:23;15037:32;15034:52;;;15082:1;15079;15072:12;15034:52;15114:9;15108:16;15133:31;15158:5;15133:31;:::i;15199:230::-;15269:6;15322:2;15310:9;15301:7;15297:23;15293:32;15290:52;;;15338:1;15335;15328:12;15290:52;-1:-1:-1;15383:16:66;;15199:230;-1:-1:-1;15199:230:66:o;15434:127::-;15495:10;15490:3;15486:20;15483:1;15476:31;15526:4;15523:1;15516:15;15550:4;15547:1;15540:15;15834:127;15895:10;15890:3;15886:20;15883:1;15876:31;15926:4;15923:1;15916:15;15950:4;15947:1;15940:15;15966:125;16031:9;;;16052:10;;;16049:36;;;16065:18;;:::i;16096:253::-;16168:2;16162:9;16210:4;16198:17;;-1:-1:-1;;;;;16230:34:66;;16266:22;;;16227:62;16224:88;;;16292:18;;:::i;:::-;16328:2;16321:22;16096:253;:::o;16354:257::-;16426:4;16420:11;;;16458:17;;-1:-1:-1;;;;;16490:34:66;;16526:22;;;16487:62;16484:88;;;16552:18;;:::i;16616:275::-;16687:2;16681:9;16752:2;16733:13;;-1:-1:-1;;16729:27:66;16717:40;;-1:-1:-1;;;;;16772:34:66;;16808:22;;;16769:62;16766:88;;;16834:18;;:::i;:::-;16870:2;16863:22;16616:275;;-1:-1:-1;16616:275:66:o;16896:186::-;16944:4;-1:-1:-1;;;;;16969:6:66;16966:30;16963:56;;;16999:18;;:::i;:::-;-1:-1:-1;17065:2:66;17044:15;-1:-1:-1;;17040:29:66;17071:4;17036:40;;16896:186::o;17087:1784::-;17279:9;-1:-1:-1;;;;;17309:6:66;17306:30;17303:56;;;17339:18;;:::i;:::-;17385:6;17382:1;17378:14;17412:30;17436:4;17432:2;17428:13;17412:30;:::i;:::-;17476:19;;;17548:14;;;;17520:4;17511:14;;;17585;17574:26;;17571:46;;;17613:1;17610;17603:12;17571:46;17637:5;17651:1187;17667:6;17662:3;17659:15;17651:1187;;;17755:3;17742:17;-1:-1:-1;;;;;17778:11:66;17775:35;17772:55;;;17823:1;17820;17813:12;17772:55;17850:23;;17918:4;17897:14;17893:23;;;17889:34;17886:54;;;17936:1;17933;17926:12;17886:54;17968:22;;:::i;:::-;18019:21;18037:2;18019:21;:::i;:::-;18010:7;18003:38;18081:32;18107:4;18103:2;18099:13;18081:32;:::i;:::-;18074:4;18065:7;18061:18;18054:60;18162:2;18158;18154:11;18141:25;-1:-1:-1;;;;;18185:6:66;18182:30;18179:50;;;18225:1;18222;18215:12;18179:50;18252:15;;;;;18309:14;18302:4;18294:13;;18290:34;18280:62;;18338:1;18335;18328:12;18280:62;18384:2;18371:16;18415:54;18431:37;18459:8;18431:37;:::i;:::-;18415:54;:::i;:::-;18498:8;18489:7;18482:25;18556:14;18549:4;18538:8;18534:2;18530:17;18526:28;18523:48;18520:68;;;18584:1;18581;18574:12;18520:68;18649:8;18642:4;18638:2;18634:13;18627:4;18618:7;18614:18;18601:57;18713:1;18706:4;18695:8;18686:7;18682:22;18678:33;18671:44;18753:7;18748:2;18739:7;18735:16;18728:33;;;18786:7;18781:3;18774:20;;;18823:4;18818:3;18814:14;18807:21;;17693:4;17688:3;17684:14;17677:21;;17651:1187;;;-1:-1:-1;18860:5:66;17087:1784;-1:-1:-1;;;;;17087:1784:66:o;18876:331::-;18981:9;18992;19034:8;19022:10;19019:24;19016:44;;;19056:1;19053;19046:12;19016:44;19085:6;19075:8;19072:20;19069:40;;;19105:1;19102;19095:12;19069:40;-1:-1:-1;;19131:23:66;;;19176:25;;;;;-1:-1:-1;18876:331:66:o;19212:476::-;19403:3;19441:6;19435:13;19457:66;19516:6;19511:3;19504:4;19496:6;19492:17;19457:66;:::i;:::-;19545:16;;19598:6;19590;19545:16;19570:35;19662:1;19624:18;;19651:13;;;-1:-1:-1;19624:18:66;;19212:476;-1:-1:-1;;;19212:476:66:o;19693:266::-;19781:6;19776:3;19769:19;19833:6;19826:5;19819:4;19814:3;19810:14;19797:43;-1:-1:-1;19885:1:66;19860:16;;;19878:4;19856:27;;;19849:38;;;;19941:2;19920:15;;;-1:-1:-1;;19916:29:66;19907:39;;;19903:50;;19693:266::o;19964:244::-;20121:2;20110:9;20103:21;20084:4;20141:61;20198:2;20187:9;20183:18;20175:6;20167;20141:61;:::i;20213:127::-;20274:10;20269:3;20265:20;20262:1;20255:31;20305:4;20302:1;20295:15;20329:4;20326:1;20319:15;20345:331;20444:4;20502:11;20489:25;20596:3;20592:8;20581;20565:14;20561:29;20557:44;20537:18;20533:69;20523:97;;20616:1;20613;20606:12;20523:97;20637:33;;;;;20345:331;-1:-1:-1;;20345:331:66:o;20681:521::-;20758:4;20764:6;20824:11;20811:25;20918:2;20914:7;20903:8;20887:14;20883:29;20879:43;20859:18;20855:68;20845:96;;20937:1;20934;20927:12;20845:96;20964:33;;21016:20;;;-1:-1:-1;;;;;;21048:30:66;;21045:50;;;21091:1;21088;21081:12;21045:50;21124:4;21112:17;;-1:-1:-1;21155:14:66;21151:27;;;21141:38;;21138:58;;;21192:1;21189;21182:12;21207:129;-1:-1:-1;;;;;21285:5:66;21281:30;21274:5;21271:41;21261:69;;21326:1;21323;21316:12;21341:1040;21715:10;21688:25;21706:6;21688:25;:::i;:::-;21684:42;21666:61;;21793:4;21781:17;;;21768:31;21815:20;;;21808:35;21647:4;21892;21880:17;;21867:31;21907:32;21867:31;21907:32;:::i;:::-;-1:-1:-1;;;;;21981:7:66;21977:32;21970:4;21959:9;21955:20;21948:62;;22046:6;22041:2;22030:9;22026:18;22019:34;22090:3;22084;22073:9;22069:19;22062:32;22117:62;22174:3;22163:9;22159:19;22151:6;22143;22117:62;:::i;:::-;-1:-1:-1;;;;;22216:32:66;;22236:3;22195:19;;22188:61;22286:22;;;22280:3;22265:19;;22258:51;22326:49;22290:6;22360;22352;22326:49;:::i;:::-;22318:57;21341:1040;-1:-1:-1;;;;;;;;;;21341:1040:66:o;22386:667::-;22465:6;22518:2;22506:9;22497:7;22493:23;22489:32;22486:52;;;22534:1;22531;22524:12;22486:52;22567:9;22561:16;-1:-1:-1;;;;;22592:6:66;22589:30;22586:50;;;22632:1;22629;22622:12;22586:50;22655:22;;22708:4;22700:13;;22696:27;-1:-1:-1;22686:55:66;;22737:1;22734;22727:12;22686:55;22770:2;22764:9;22795:52;22811:35;22839:6;22811:35;:::i;22795:52::-;22870:6;22863:5;22856:21;22918:7;22913:2;22904:6;22900:2;22896:15;22892:24;22889:37;22886:57;;;22939:1;22936;22929:12;22886:57;22952:71;23016:6;23011:2;23004:5;23000:14;22995:2;22991;22987:11;22952:71;:::i;23508:245::-;23566:6;23619:2;23607:9;23598:7;23594:23;23590:32;23587:52;;;23635:1;23632;23625:12;23587:52;23674:9;23661:23;23693:30;23717:5;23693:30;:::i;23758:479::-;24025:1;24021;24016:3;24012:11;24008:19;24000:6;23996:32;23985:9;23978:51;24065:6;24060:2;24049:9;24045:18;24038:34;24120:6;24112;24108:19;24103:2;24092:9;24088:18;24081:47;24164:3;24159:2;24148:9;24144:18;24137:31;23959:4;24185:46;24226:3;24215:9;24211:19;24203:6;24185:46;:::i;24860:379::-;25053:2;25042:9;25035:21;25016:4;25079:45;25120:2;25109:9;25105:18;25097:6;25079:45;:::i;:::-;25172:9;25164:6;25160:22;25155:2;25144:9;25140:18;25133:50;25200:33;25226:6;25218;25200:33;:::i;25244:245::-;25311:6;25364:2;25352:9;25343:7;25339:23;25335:32;25332:52;;;25380:1;25377;25370:12;25332:52;25412:9;25406:16;25431:28;25453:5;25431:28;:::i;25494:887::-;25713:2;25702:9;25695:21;25771:10;25762:6;25756:13;25752:30;25747:2;25736:9;25732:18;25725:58;25837:4;25829:6;25825:17;25819:24;25814:2;25803:9;25799:18;25792:52;25676:4;25891:2;25883:6;25879:15;25873:22;25932:4;25926:3;25915:9;25911:19;25904:33;25960:52;26007:3;25996:9;25992:19;25978:12;25960:52;:::i;:::-;25946:66;;26061:2;26053:6;26049:15;26043:22;26135:2;26131:7;26119:9;26111:6;26107:22;26103:36;26096:4;26085:9;26081:20;26074:66;26163:41;26197:6;26181:14;26163:41;:::i;:::-;26273:3;26261:16;;;;26255:23;26248:31;26241:39;26235:3;26220:19;;26213:68;-1:-1:-1;;;;;;;;26342:32:66;;;;26335:4;26320:20;;;26313:62;26149:55;25494:887::o;26386:388::-;26456:5;26504:4;26492:9;26487:3;26483:19;26479:30;26476:50;;;26522:1;26519;26512:12;26476:50;26544:22;;:::i;:::-;26611:16;;26636:22;;26724:2;26709:18;;;26703:25;26744:14;;;26737:31;;;;-1:-1:-1;26535:31:66;26386:388;-1:-1:-1;26386:388:66:o;26779:257::-;26877:6;26930:2;26918:9;26909:7;26905:23;26901:32;26898:52;;;26946:1;26943;26936:12;26898:52;26969:61;27022:7;27011:9;26969:61;:::i;27166:517::-;27267:2;27262:3;27259:11;27256:421;;;27303:5;27300:1;27293:16;27347:4;27344:1;27334:18;27417:2;27405:10;27401:19;27398:1;27394:27;27388:4;27384:38;27453:4;27441:10;27438:20;27435:47;;;-1:-1:-1;27476:4:66;27435:47;27531:2;27526:3;27522:12;27519:1;27515:20;27509:4;27505:31;27495:41;;27586:81;27604:2;27597:5;27594:13;27586:81;;;27663:1;27649:16;;27630:1;27619:13;27586:81;;27859:1295;27983:3;27977:10;-1:-1:-1;;;;;28002:6:66;27999:30;27996:56;;;28032:18;;:::i;:::-;28061:96;28150:6;28110:38;28142:4;28136:11;28110:38;:::i;:::-;28104:4;28061:96;:::i;:::-;28206:4;28237:2;28226:14;;28254:1;28249:648;;;;28941:1;28958:6;28955:89;;;-1:-1:-1;29010:19:66;;;29004:26;28955:89;-1:-1:-1;;27816:1:66;27812:11;;;27808:24;27804:29;27794:40;27840:1;27836:11;;;27791:57;29057:81;;28219:929;;28249:648;27113:1;27106:14;;;27150:4;27137:18;;-1:-1:-1;;28285:20:66;;;28402:222;28416:7;28413:1;28410:14;28402:222;;;28498:19;;;28492:26;28477:42;;28605:4;28590:20;;;;28558:1;28546:14;;;;28432:12;28402:222;;;28406:3;28652:6;28643:7;28640:19;28637:201;;;28713:19;;;28707:26;-1:-1:-1;;28796:1:66;28792:14;;;28808:3;28788:24;28784:37;28780:42;28765:58;28750:74;;28637:201;-1:-1:-1;;;;28884:1:66;28868:14;;;28864:22;28851:36;;-1:-1:-1;27859:1295:66:o;29159:1099::-;29375:4;29423:2;29412:9;29408:18;29453:2;29442:9;29435:21;29476:6;29511;29505:13;29542:6;29534;29527:22;29580:2;29569:9;29565:18;29558:25;;29642:2;29632:6;29629:1;29625:14;29614:9;29610:30;29606:39;29592:53;;29680:2;29672:6;29668:15;29701:1;29711:518;29725:6;29722:1;29719:13;29711:518;;;29818:2;29814:7;29802:9;29794:6;29790:22;29786:36;29781:3;29774:49;29852:6;29846:13;29902:10;29897:2;29891:9;29887:26;29879:6;29872:42;29975:6;29969:2;29965;29961:11;29955:18;29951:31;29946:2;29938:6;29934:15;29927:56;30030:2;30026;30022:11;30016:18;29996:38;;30071:4;30066:2;30058:6;30054:15;30047:29;30099:50;30143:4;30135:6;30131:17;30117:12;30099:50;:::i;:::-;30089:60;-1:-1:-1;;30184:2:66;30207:12;;;;30172:15;;;;;29747:1;29740:9;29711:518;;;-1:-1:-1;30246:6:66;;29159:1099;-1:-1:-1;;;;;;29159:1099:66:o;30263:487::-;30350:6;30410:2;30398:9;30389:7;30385:23;30381:32;30425:2;30422:22;;;30440:1;30437;30430:12;30422:22;-1:-1:-1;30482:22:66;;:::i;:::-;30549:23;;30581:22;;30676:2;30661:18;;;30648:32;30696:14;;;30689:31;;;;-1:-1:-1;30588:5:66;30263:487;-1:-1:-1;30263:487:66:o;31094:217::-;31134:1;31160;31150:132;;31204:10;31199:3;31195:20;31192:1;31185:31;31239:4;31236:1;31229:15;31267:4;31264:1;31257:15;31150:132;-1:-1:-1;31296:9:66;;31094:217::o;31316:168::-;31389:9;;;31420;;31437:15;;;31431:22;;31417:37;31407:71;;31458:18;;:::i;31489:255::-;31609:19;;31648:2;31640:11;;31637:101;;;-1:-1:-1;;31709:2:66;31705:12;;;31702:1;31698:20;31694:33;31683:45;31489:255;;;;:::o;31749:362::-;31869:19;;-1:-1:-1;;;;;;31906:37:66;;;31963:1;31955:10;;31952:153;;;-1:-1:-1;;;;;;32024:1:66;32020:11;;;32017:1;32013:19;32009:54;;;32001:63;;31997:98;;-1:-1:-1;31952:153:66;;31749:362;;;;:::o;32116:568::-;-1:-1:-1;;;;;32381:3:66;32377:28;32368:6;32363:3;32359:16;32355:51;32350:3;32343:64;32467:10;32462:3;32458:20;32449:6;32444:3;32440:16;32436:43;32432:1;32427:3;32423:11;32416:64;32510:6;32505:2;32500:3;32496:12;32489:28;32325:3;32546:6;32540:13;32562:75;32630:6;32625:2;32620:3;32616:12;32609:4;32601:6;32597:17;32562:75;:::i;:::-;32657:16;;;;32675:2;32653:25;;32116:568;-1:-1:-1;;;;;32116:568:66:o;32984:532::-;33225:6;33220:3;33213:19;-1:-1:-1;;;;;33288:3:66;33284:28;33275:6;33270:3;33266:16;33262:51;33257:2;33252:3;33248:12;33241:73;33344:6;33339:2;33334:3;33330:12;33323:28;33195:3;33380:6;33374:13;33396:73;33462:6;33457:2;33452:3;33448:12;33443:2;33435:6;33431:15;33396:73;:::i;:::-;33489:16;;;;33507:2;33485:25;;32984:532;-1:-1:-1;;;;;32984:532:66:o;33521:560::-;33623:6;33683:3;33671:9;33662:7;33658:23;33654:33;33699:2;33696:22;;;33714:1;33711;33704:12;33696:22;-1:-1:-1;33756:22:66;;:::i;:::-;33807:9;33801:16;33794:5;33787:31;33863:2;33852:9;33848:18;33842:25;33876:32;33900:7;33876:32;:::i;:::-;33935:2;33924:14;;33917:31;33980:70;34042:7;34037:2;34022:18;;33980:70;:::i;:::-;33975:2;33964:14;;33957:94;33968:5;33521:560;-1:-1:-1;;;33521:560:66:o"},"gasEstimates":{"creation":{"codeDepositCost":"2572200","executionCost":"infinite","totalCost":"infinite"},"external":{"MAX_SUPPLY()":"263","SEND()":"338","SEND_AND_CALL()":"250","allowInitializePath((uint32,bytes32,uint64))":"infinite","allowance(address,address)":"infinite","approvalRequired()":"287","approve(address,uint256)":"24779","balanceOf(address)":"2686","combineOptions(uint32,uint16,bytes)":"infinite","decimalConversionRate()":"infinite","decimals()":"236","endpoint()":"infinite","enforcedOptions(uint32,uint16)":"infinite","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"844","isPeer(uint32,bytes32)":"2641","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"infinite","lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":"infinite","lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"infinite","mint(address,uint256)":"infinite","msgInspector()":"2450","name()":"infinite","nextNonce(uint32,bytes32)":"458","oApp()":"257","oAppVersion()":"285","oftVersion()":"269","owner()":"2465","peers(uint32)":"2552","preCrime()":"2470","quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":"infinite","quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":"infinite","renounceOwnership()":"infinite","send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":"infinite","setDelegate(address)":"infinite","setEnforcedOptions((uint32,uint16,bytes)[])":"infinite","setMsgInspector(address)":"27916","setPeer(uint32,bytes32)":"26127","setPreCrime(address)":"27860","sharedDecimals()":"313","symbol()":"infinite","token()":"344","totalSupply()":"2393","transfer(address,uint256)":"infinite","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"infinite"},"internal":{"_credit(address,uint256,uint32)":"infinite","_update(address,address,uint256)":"infinite"}},"methodIdentifiers":{"MAX_SUPPLY()":"32cb6b0c","SEND()":"1f5e1334","SEND_AND_CALL()":"134d4f25","allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","allowance(address,address)":"dd62ed3e","approvalRequired()":"9f68b964","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","combineOptions(uint32,uint16,bytes)":"bc70b354","decimalConversionRate()":"963efcaa","decimals()":"313ce567","endpoint()":"5e280f11","enforcedOptions(uint32,uint16)":"5535d461","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","isPeer(uint32,bytes32)":"5a0dfe4d","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])":"bd815db0","lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"d045a0dc","mint(address,uint256)":"40c10f19","msgInspector()":"111ecdad","name()":"06fdde03","nextNonce(uint32,bytes32)":"7d25a05e","oApp()":"52ae2879","oAppVersion()":"17442b70","oftVersion()":"156a0d0f","owner()":"8da5cb5b","peers(uint32)":"bb0b6a53","preCrime()":"b731ea0a","quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":"0d35b415","quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":"3b6f743b","renounceOwnership()":"715018a6","send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":"c7c7f5b3","setDelegate(address)":"ca5eb5e1","setEnforcedOptions((uint32,uint16,bytes)[])":"b98bd070","setMsgInspector(address)":"6fc1b31e","setPeer(uint32,bytes32)":"3400288b","setPreCrime(address)":"d4243885","sharedDecimals()":"857749b0","symbol()":"95d89b41","token()":"fc0c546a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_lzEndpoint\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LzTokenUnavailable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxSupplyExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgValue\",\"type\":\"uint256\"}],\"name\":\"NotEnoughNative\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"OnlyEndpoint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlySelf\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"SimulationResult\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inspector\",\"type\":\"address\"}],\"name\":\"MsgInspectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTSent\",\"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\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"preCrimeAddress\",\"type\":\"address\"}],\"name\":\"PreCrimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_SUPPLY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEND\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEND_AND_CALL\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimalConversionRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"enforcedOption\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"isPeer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct InboundPacket[]\",\"name\":\"_packets\",\"type\":\"tuple[]\"}],\"name\":\"lzReceiveAndRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceiveSimulate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"msgInspector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oApp\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"preCrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"oftLimit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct OFTFeeDetail[]\",\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"msgFee\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"_fee\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"msgReceipt\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_msgInspector\",\"type\":\"address\"}],\"name\":\"setMsgInspector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_preCrime\",\"type\":\"address\"}],\"name\":\"setPreCrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"PreCrimeSet(address)\":{\"details\":\"Emitted when the preCrime contract address is set.\",\"params\":{\"preCrimeAddress\":\"The address of the preCrime contract.\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"details\":\"This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.This defaults to assuming if a peer has been set, its initialized. Can be overridden by the OApp if there is other logic to determine this.\",\"params\":{\"origin\":\"The origin information containing the source endpoint and sender address.\"},\"returns\":{\"_0\":\"Whether the path has been initialized.\"}},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approvalRequired()\":{\"details\":\"In the case of OFT where the contract IS the token, approval is NOT required.\",\"returns\":{\"_0\":\"requiresApproval Needs approval of the underlying token implementation.\"}},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"combineOptions(uint32,uint16,bytes)\":{\"details\":\"If there is an enforced lzReceive option: - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether} - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.This presence of duplicated options is handled off-chain in the verifier/executor.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_extraOptions\":\"Additional options passed by the caller.\",\"_msgType\":\"The OAPP message type.\"},\"returns\":{\"_0\":\"options The combination of caller specified options AND enforced options.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"_origin The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message._message The lzReceive payload.Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_sender\":\"The sender address.\"},\"returns\":{\"_0\":\"isSender Is a valid sender.\"}},\"isPeer(uint32,bytes32)\":{\"details\":\"Check if the peer is considered 'trusted' by the OApp.Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\",\"params\":{\"_eid\":\"The endpoint ID to check.\",\"_peer\":\"The peer to check.\"},\"returns\":{\"_0\":\"Whether the peer passed is considered 'trusted' by the OApp.\"}},\"lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Entry point for receiving messages or packets from the endpoint.Entry point for receiving msg/packet from the LayerZero endpoint.\",\"params\":{\"_executor\":\"The address of the executor for the received message.\",\"_extraData\":\"Additional arbitrary data provided by the corresponding executor.\",\"_guid\":\"The unique identifier for the received LayerZero message.\",\"_message\":\"The payload of the received message.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\":{\"details\":\"Interface for pre-crime simulations. Always reverts at the end with the simulation results.WARNING: MUST revert at the end with the simulation results.Gives the preCrime implementation the ability to mock sending packets to the lzReceive function, WITHOUT actually executing them.\",\"params\":{\"_packets\":\"An array of InboundPacket objects representing received packets to be delivered.\"}},\"lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\":{\"details\":\"Is effectively an internal function because msg.sender must be address(this). Allows resetting the call stack for 'internal' calls.\",\"params\":{\"_executor\":\"The executor address for the packet.\",\"_extraData\":\"Additional data for the packet.\",\"_guid\":\"The unique identifier of the packet.\",\"_message\":\"The message payload of the packet.\",\"_origin\":\"The origin information containing the source endpoint and sender address.  - srcEid: The source chain endpoint ID.  - sender: The sender address on the src chain.  - nonce: The nonce of the message.\"}},\"mint(address,uint256)\":{\"details\":\"Mints new tokens to the specified address\",\"params\":{\"_amount\":\"The amount of tokens to mint\",\"_to\":\"The address to mint tokens to\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nextNonce(uint32,bytes32)\":{\"details\":\"_srcEid The source endpoint ID._sender The sender address.The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.Is required by the off-chain executor to determine the OApp expects msg execution is ordered.This is also enforced by the OApp.By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\",\"returns\":{\"nonce\":\"The next nonce.\"}},\"oApp()\":{\"details\":\"Retrieves the address of the OApp contract.The simulator contract is the base contract for the OApp by default.If the simulator is a separate contract, override this function.\",\"returns\":{\"_0\":\"The address of the OApp contract.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol implementation.\",\"senderVersion\":\"The version of the OAppSender.sol implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"oftFeeDetails\":\"The details of OFT fees.\",\"oftLimit\":\"The OFT limit information.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee  - nativeFee: The native fee.  - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"msgFee\":\"The calculated LayerZero messaging fee from the send() operation.\"}},\"renounceOwnership()\":{\"details\":\"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.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"Executes the send operation.MessagingReceipt: LayerZero msg receipt  - guid: The unique identifier for the sent message.  - nonce: The nonce of the sent message.  - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The calculated fee for the send() operation.      - nativeFee: The native fee.      - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"msgReceipt\":\"The receipt for the send operation.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"setDelegate(address)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\",\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Sets the enforced options for specific endpoint and message type combinations.Only the owner/admin of the OApp can call this function.Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.These enforced options can vary as the potential options/execution on the remote may differ as per the msgType. eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\",\"params\":{\"_enforcedOptions\":\"An array of EnforcedOptionParam structures specifying enforced options.\"}},\"setMsgInspector(address)\":{\"details\":\"Sets the message inspector address for the OFT.This is an optional contract that can be used to inspect both 'message' and 'options'.Set it to address(0) to disable it, or set it to a contract address to enable it.\",\"params\":{\"_msgInspector\":\"The address of the message inspector.\"}},\"setPeer(uint32,bytes32)\":{\"details\":\"Only the owner/admin of the OApp can call this function.Indicates that the peer is trusted to send LayerZero messages to this OApp.Set this to bytes32(0) to remove the peer address.Peer is a bytes32 to accommodate non-evm chains.\",\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"setPreCrime(address)\":{\"details\":\"Sets the preCrime contract address.\",\"params\":{\"_preCrime\":\"The address of the preCrime contract.\"}},\"sharedDecimals()\":{\"details\":\"Retrieves the shared decimals of the OFT.Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap Lowest common decimal denominator between chains. Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64). For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller. ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\",\"returns\":{\"_0\":\"The shared decimals of the OFT.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"token()\":{\"details\":\"Retrieves the address of the underlying ERC20 implementation.In the case of OFT, address(this) and erc20 are the same contract.\",\"returns\":{\"_0\":\"The address of the OFT token.\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowInitializePath((uint32,bytes32,uint64))\":{\"notice\":\"Checks if the path initialization is allowed based on the provided origin.\"},\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"nextNonce(uint32,bytes32)\":{\"notice\":\"Retrieves the next nonce for a given source endpoint and sender address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SSG.sol\":\"SSG\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes message;\\n    bytes options;\\n    bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n    bytes32 guid;\\n    uint64 nonce;\\n    MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n    uint256 nativeFee;\\n    uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n    uint32 srcEid;\\n    bytes32 sender;\\n    uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n    event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n    event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n    event PacketDelivered(Origin origin, address receiver);\\n\\n    event LzReceiveAlert(\\n        address indexed receiver,\\n        address indexed executor,\\n        Origin origin,\\n        bytes32 guid,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    event LzTokenSet(address token);\\n\\n    event DelegateSet(address sender, address delegate);\\n\\n    function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n    function send(\\n        MessagingParams calldata _params,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory);\\n\\n    function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n    function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        address _receiver,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n\\n    // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n    function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n    function setLzToken(address _lzToken) external;\\n\\n    function lzToken() external view returns (address);\\n\\n    function nativeToken() external view returns (address);\\n\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n    function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n    function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IERC165 } from \\\"@openzeppelin/contracts/utils/introspection/IERC165.sol\\\";\\n\\nimport { SetConfigParam } from \\\"./IMessageLibManager.sol\\\";\\n\\nenum MessageLibType {\\n    Send,\\n    Receive,\\n    SendAndReceive\\n}\\n\\ninterface IMessageLib is IERC165 {\\n    function setConfig(address _oapp, SetConfigParam[] calldata _config) external;\\n\\n    function getConfig(uint32 _eid, address _oapp, uint32 _configType) external view returns (bytes memory config);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    // message libs of same major version are compatible\\n    function version() external view returns (uint64 major, uint8 minor, uint8 endpointVersion);\\n\\n    function messageLibType() external view returns (MessageLibType);\\n}\\n\",\"keccak256\":\"0x5cf5f24751b4e3ea1c9c5ded07cedfdfd62566b6daaffcc0144733859c9dba0c\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n    uint32 eid;\\n    uint32 configType;\\n    bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n    struct Timeout {\\n        address lib;\\n        uint256 expiry;\\n    }\\n\\n    event LibraryRegistered(address newLib);\\n    event DefaultSendLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n    event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n    event SendLibrarySet(address sender, uint32 eid, address newLib);\\n    event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n    event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n    function registerLibrary(address _lib) external;\\n\\n    function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n    function getRegisteredLibraries() external view returns (address[] memory);\\n\\n    function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n    function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n    function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n    function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n    /// ------------------- OApp interfaces -------------------\\n    function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n    function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n    function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n    function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n    function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n    function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n    function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n    function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n    function getConfig(\\n        address _oapp,\\n        address _lib,\\n        uint32 _eid,\\n        uint32 _configType\\n    ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n    event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n    event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n    event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n    function eid() external view returns (uint32);\\n\\n    // this is an emergency function if a message cannot be verified for some reasons\\n    // required to provide _nextNonce to avoid race condition\\n    function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n    function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n    function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n    function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n    function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n    function inboundPayloadHash(\\n        address _receiver,\\n        uint32 _srcEid,\\n        bytes32 _sender,\\n        uint64 _nonce\\n    ) external view returns (bytes32);\\n\\n    function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n    event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n    event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n    event LzComposeAlert(\\n        address indexed from,\\n        address indexed to,\\n        address indexed executor,\\n        bytes32 guid,\\n        uint16 index,\\n        uint256 gas,\\n        uint256 value,\\n        bytes message,\\n        bytes extraData,\\n        bytes reason\\n    );\\n\\n    function composeQueue(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index\\n    ) external view returns (bytes32 messageHash);\\n\\n    function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n    function lzCompose(\\n        address _from,\\n        address _to,\\n        bytes32 _guid,\\n        uint16 _index,\\n        bytes calldata _message,\\n        bytes calldata _extraData\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n    function isSendingMessage() external view returns (bool);\\n\\n    function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { MessagingFee } from \\\"./ILayerZeroEndpointV2.sol\\\";\\nimport { IMessageLib } from \\\"./IMessageLib.sol\\\";\\n\\nstruct Packet {\\n    uint64 nonce;\\n    uint32 srcEid;\\n    address sender;\\n    uint32 dstEid;\\n    bytes32 receiver;\\n    bytes32 guid;\\n    bytes message;\\n}\\n\\ninterface ISendLib is IMessageLib {\\n    function send(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external returns (MessagingFee memory, bytes memory encodedPacket);\\n\\n    function quote(\\n        Packet calldata _packet,\\n        bytes calldata _options,\\n        bool _payInLzToken\\n    ) external view returns (MessagingFee memory);\\n\\n    function setTreasury(address _treasury) external;\\n\\n    function withdrawFee(address _to, uint256 _amount) external;\\n\\n    function withdrawLzTokenFee(address _lzToken, address _to, uint256 _amount) external;\\n}\\n\",\"keccak256\":\"0xf1c07bc61e7b1dce195ed12d50f87980fbf2d63cac1326fd28287f55fe0ba625\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nlibrary AddressCast {\\n    error AddressCast_InvalidSizeForAddress();\\n    error AddressCast_InvalidAddress();\\n\\n    function toBytes32(bytes calldata _addressBytes) internal pure returns (bytes32 result) {\\n        if (_addressBytes.length > 32) revert AddressCast_InvalidAddress();\\n        result = bytes32(_addressBytes);\\n        unchecked {\\n            uint256 offset = 32 - _addressBytes.length;\\n            result = result >> (offset * 8);\\n        }\\n    }\\n\\n    function toBytes32(address _address) internal pure returns (bytes32 result) {\\n        result = bytes32(uint256(uint160(_address)));\\n    }\\n\\n    function toBytes(bytes32 _addressBytes32, uint256 _size) internal pure returns (bytes memory result) {\\n        if (_size == 0 || _size > 32) revert AddressCast_InvalidSizeForAddress();\\n        result = new bytes(_size);\\n        unchecked {\\n            uint256 offset = 256 - _size * 8;\\n            assembly {\\n                mstore(add(result, 32), shl(offset, _addressBytes32))\\n            }\\n        }\\n    }\\n\\n    function toAddress(bytes32 _addressBytes32) internal pure returns (address result) {\\n        result = address(uint160(uint256(_addressBytes32)));\\n    }\\n\\n    function toAddress(bytes calldata _addressBytes) internal pure returns (address result) {\\n        if (_addressBytes.length != 20) revert AddressCast_InvalidAddress();\\n        result = address(bytes20(_addressBytes));\\n    }\\n}\\n\",\"keccak256\":\"0x2ebbcaaab3554edcd41b581f1a72ac1806afbfb8047d0d47ff098f9af30d6deb\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":{\"content\":\"// SPDX-License-Identifier: LZBL-1.2\\n\\npragma solidity ^0.8.20;\\n\\nimport { Packet } from \\\"../../interfaces/ISendLib.sol\\\";\\nimport { AddressCast } from \\\"../../libs/AddressCast.sol\\\";\\n\\nlibrary PacketV1Codec {\\n    using AddressCast for address;\\n    using AddressCast for bytes32;\\n\\n    uint8 internal constant PACKET_VERSION = 1;\\n\\n    // header (version + nonce + path)\\n    // version\\n    uint256 private constant PACKET_VERSION_OFFSET = 0;\\n    //    nonce\\n    uint256 private constant NONCE_OFFSET = 1;\\n    //    path\\n    uint256 private constant SRC_EID_OFFSET = 9;\\n    uint256 private constant SENDER_OFFSET = 13;\\n    uint256 private constant DST_EID_OFFSET = 45;\\n    uint256 private constant RECEIVER_OFFSET = 49;\\n    // payload (guid + message)\\n    uint256 private constant GUID_OFFSET = 81; // keccak256(nonce + path)\\n    uint256 private constant MESSAGE_OFFSET = 113;\\n\\n    function encode(Packet memory _packet) internal pure returns (bytes memory encodedPacket) {\\n        encodedPacket = abi.encodePacked(\\n            PACKET_VERSION,\\n            _packet.nonce,\\n            _packet.srcEid,\\n            _packet.sender.toBytes32(),\\n            _packet.dstEid,\\n            _packet.receiver,\\n            _packet.guid,\\n            _packet.message\\n        );\\n    }\\n\\n    function encodePacketHeader(Packet memory _packet) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(\\n                PACKET_VERSION,\\n                _packet.nonce,\\n                _packet.srcEid,\\n                _packet.sender.toBytes32(),\\n                _packet.dstEid,\\n                _packet.receiver\\n            );\\n    }\\n\\n    function encodePayload(Packet memory _packet) internal pure returns (bytes memory) {\\n        return abi.encodePacked(_packet.guid, _packet.message);\\n    }\\n\\n    function header(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return _packet[0:GUID_OFFSET];\\n    }\\n\\n    function version(bytes calldata _packet) internal pure returns (uint8) {\\n        return uint8(bytes1(_packet[PACKET_VERSION_OFFSET:NONCE_OFFSET]));\\n    }\\n\\n    function nonce(bytes calldata _packet) internal pure returns (uint64) {\\n        return uint64(bytes8(_packet[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    function srcEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[SRC_EID_OFFSET:SENDER_OFFSET]));\\n    }\\n\\n    function sender(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[SENDER_OFFSET:DST_EID_OFFSET]);\\n    }\\n\\n    function senderAddressB20(bytes calldata _packet) internal pure returns (address) {\\n        return sender(_packet).toAddress();\\n    }\\n\\n    function dstEid(bytes calldata _packet) internal pure returns (uint32) {\\n        return uint32(bytes4(_packet[DST_EID_OFFSET:RECEIVER_OFFSET]));\\n    }\\n\\n    function receiver(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[RECEIVER_OFFSET:GUID_OFFSET]);\\n    }\\n\\n    function receiverB20(bytes calldata _packet) internal pure returns (address) {\\n        return receiver(_packet).toAddress();\\n    }\\n\\n    function guid(bytes calldata _packet) internal pure returns (bytes32) {\\n        return bytes32(_packet[GUID_OFFSET:MESSAGE_OFFSET]);\\n    }\\n\\n    function message(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[MESSAGE_OFFSET:]);\\n    }\\n\\n    function payload(bytes calldata _packet) internal pure returns (bytes calldata) {\\n        return bytes(_packet[GUID_OFFSET:]);\\n    }\\n\\n    function payloadHash(bytes calldata _packet) internal pure returns (bytes32) {\\n        return keccak256(payload(_packet));\\n    }\\n}\\n\",\"keccak256\":\"0xc84cf1bf785977fe1fbe7566eef902c2db68d0e163813ebe6c34921754802680\",\"license\":\"LZBL-1.2\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the 'MessagingFee' and 'MessagingReceipt' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppSender, MessagingFee, MessagingReceipt } from \\\"./OAppSender.sol\\\";\\n// @dev Import the 'Origin' so it's exposed to OApp implementers\\n// solhint-disable-next-line no-unused-import\\nimport { OAppReceiver, Origin } from \\\"./OAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OApp\\n * @dev Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver functionality.\\n */\\nabstract contract OApp is OAppSender, OAppReceiver {\\n    /**\\n     * @dev Constructor to initialize the OApp with the provided endpoint and owner.\\n     * @param _endpoint The address of the LOCAL LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(address _endpoint, address _delegate) OAppCore(_endpoint, _delegate) {}\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol implementation.\\n     * @return receiverVersion The version of the OAppReceiver.sol implementation.\\n     */\\n    function oAppVersion()\\n        public\\n        pure\\n        virtual\\n        override(OAppSender, OAppReceiver)\\n        returns (uint64 senderVersion, uint64 receiverVersion)\\n    {\\n        return (SENDER_VERSION, RECEIVER_VERSION);\\n    }\\n}\\n\",\"keccak256\":\"0xac362c4c291fad2f1511a968424b2e78a5ad502d1c867bd31da04be742aca8c5\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppCore, ILayerZeroEndpointV2 } from \\\"./interfaces/IOAppCore.sol\\\";\\n\\n/**\\n * @title OAppCore\\n * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations.\\n */\\nabstract contract OAppCore is IOAppCore, Ownable {\\n    // The LayerZero endpoint associated with the given OApp\\n    ILayerZeroEndpointV2 public immutable endpoint;\\n\\n    // Mapping to store peers associated with corresponding endpoints\\n    mapping(uint32 eid => bytes32 peer) public peers;\\n\\n    /**\\n     * @dev Constructor to initialize the OAppCore with the provided endpoint and delegate.\\n     * @param _endpoint The address of the LOCAL Layer Zero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     *\\n     * @dev The delegate typically should be set as the owner of the contract.\\n     */\\n    constructor(address _endpoint, address _delegate) {\\n        endpoint = ILayerZeroEndpointV2(_endpoint);\\n\\n        if (_delegate == address(0)) revert InvalidDelegate();\\n        endpoint.setDelegate(_delegate);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) public virtual onlyOwner {\\n        _setPeer(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     *\\n     * @dev Indicates that the peer is trusted to send LayerZero messages to this OApp.\\n     * @dev Set this to bytes32(0) to remove the peer address.\\n     * @dev Peer is a bytes32 to accommodate non-evm chains.\\n     */\\n    function _setPeer(uint32 _eid, bytes32 _peer) internal virtual {\\n        peers[_eid] = _peer;\\n        emit PeerSet(_eid, _peer);\\n    }\\n\\n    /**\\n     * @notice Internal function to get the peer address associated with a specific endpoint; reverts if NOT set.\\n     * ie. the peer is set to bytes32(0).\\n     * @param _eid The endpoint ID.\\n     * @return peer The address of the peer associated with the specified endpoint.\\n     */\\n    function _getPeerOrRevert(uint32 _eid) internal view virtual returns (bytes32) {\\n        bytes32 peer = peers[_eid];\\n        if (peer == bytes32(0)) revert NoPeer(_eid);\\n        return peer;\\n    }\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp.\\n     * @param _delegate The address of the delegate to be set.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides the ability for a delegate to set configs, on behalf of the OApp, directly on the Endpoint contract.\\n     */\\n    function setDelegate(address _delegate) public onlyOwner {\\n        endpoint.setDelegate(_delegate);\\n    }\\n}\\n\",\"keccak256\":\"0x13a9c2d1d2c1f086b8624f2e84c4a4702212daae36f701d92bb915b535cbe4cc\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IOAppReceiver, Origin } from \\\"./interfaces/IOAppReceiver.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppReceiver\\n * @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers.\\n */\\nabstract contract OAppReceiver is IOAppReceiver, OAppCore {\\n    // Custom error message for when the caller is not the registered endpoint/\\n    error OnlyEndpoint(address addr);\\n\\n    // @dev The version of the OAppReceiver implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant RECEIVER_VERSION = 2;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppSender version. Indicates that the OAppSender is not implemented.\\n     * ie. this is a RECEIVE only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions.\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (0, RECEIVER_VERSION);\\n    }\\n\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @dev _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @dev _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata /*_origin*/,\\n        bytes calldata /*_message*/,\\n        address _sender\\n    ) public view virtual returns (bool) {\\n        return _sender == address(this);\\n    }\\n\\n    /**\\n     * @notice Checks if the path initialization is allowed based on the provided origin.\\n     * @param origin The origin information containing the source endpoint and sender address.\\n     * @return Whether the path has been initialized.\\n     *\\n     * @dev This indicates to the endpoint that the OApp has enabled msgs for this particular path to be received.\\n     * @dev This defaults to assuming if a peer has been set, its initialized.\\n     * Can be overridden by the OApp if there is other logic to determine this.\\n     */\\n    function allowInitializePath(Origin calldata origin) public view virtual returns (bool) {\\n        return peers[origin.srcEid] == origin.sender;\\n    }\\n\\n    /**\\n     * @notice Retrieves the next nonce for a given source endpoint and sender address.\\n     * @dev _srcEid The source endpoint ID.\\n     * @dev _sender The sender address.\\n     * @return nonce The next nonce.\\n     *\\n     * @dev The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.\\n     * @dev Is required by the off-chain executor to determine the OApp expects msg execution is ordered.\\n     * @dev This is also enforced by the OApp.\\n     * @dev By default this is NOT enabled. ie. nextNonce is hardcoded to return 0.\\n     */\\n    function nextNonce(uint32 /*_srcEid*/, bytes32 /*_sender*/) public view virtual returns (uint64 nonce) {\\n        return 0;\\n    }\\n\\n    /**\\n     * @dev Entry point for receiving messages or packets from the endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The payload of the received message.\\n     * @param _executor The address of the executor for the received message.\\n     * @param _extraData Additional arbitrary data provided by the corresponding executor.\\n     *\\n     * @dev Entry point for receiving msg/packet from the LayerZero endpoint.\\n     */\\n    function lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) public payable virtual {\\n        // Ensures that only the endpoint can attempt to lzReceive() messages to this OApp.\\n        if (address(endpoint) != msg.sender) revert OnlyEndpoint(msg.sender);\\n\\n        // Ensure that the sender matches the expected peer for the source endpoint.\\n        if (_getPeerOrRevert(_origin.srcEid) != _origin.sender) revert OnlyPeer(_origin.srcEid, _origin.sender);\\n\\n        // Call the internal OApp implementation of lzReceive.\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to implement lzReceive logic without needing to copy the basic parameter validation.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n}\\n\",\"keccak256\":\"0x0174e9f1ec4cefe4b5adc26c392269c699b9ff75965364e5b7264426a462c70b\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { SafeERC20, IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport { MessagingParams, MessagingFee, MessagingReceipt } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { OAppCore } from \\\"./OAppCore.sol\\\";\\n\\n/**\\n * @title OAppSender\\n * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint.\\n */\\nabstract contract OAppSender is OAppCore {\\n    using SafeERC20 for IERC20;\\n\\n    // Custom error messages\\n    error NotEnoughNative(uint256 msgValue);\\n    error LzTokenUnavailable();\\n\\n    // @dev The version of the OAppSender implementation.\\n    // @dev Version is bumped when changes are made to this contract.\\n    uint64 internal constant SENDER_VERSION = 1;\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     *\\n     * @dev Providing 0 as the default for OAppReceiver version. Indicates that the OAppReceiver is not implemented.\\n     * ie. this is a SEND only OApp.\\n     * @dev If the OApp uses both OAppSender and OAppReceiver, then this needs to be override returning the correct versions\\n     */\\n    function oAppVersion() public view virtual returns (uint64 senderVersion, uint64 receiverVersion) {\\n        return (SENDER_VERSION, 0);\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.quote() for fee calculation.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _payInLzToken Flag indicating whether to pay the fee in LZ tokens.\\n     * @return fee The calculated MessagingFee for the message.\\n     *      - nativeFee: The native fee for the message.\\n     *      - lzTokenFee: The LZ token fee for the message.\\n     */\\n    function _quote(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        bool _payInLzToken\\n    ) internal view virtual returns (MessagingFee memory fee) {\\n        return\\n            endpoint.quote(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _payInLzToken),\\n                address(this)\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to interact with the LayerZero EndpointV2.send() for sending a message.\\n     * @param _dstEid The destination endpoint ID.\\n     * @param _message The message payload.\\n     * @param _options Additional options for the message.\\n     * @param _fee The calculated LayerZero fee for the message.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess fee values sent to the endpoint.\\n     * @return receipt The receipt for the sent message.\\n     *      - guid: The unique identifier for the sent message.\\n     *      - nonce: The nonce of the sent message.\\n     *      - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _lzSend(\\n        uint32 _dstEid,\\n        bytes memory _message,\\n        bytes memory _options,\\n        MessagingFee memory _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory receipt) {\\n        // @dev Push corresponding fees to the endpoint, any excess is sent back to the _refundAddress from the endpoint.\\n        uint256 messageValue = _payNative(_fee.nativeFee);\\n        if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee);\\n\\n        return\\n            // solhint-disable-next-line check-send-result\\n            endpoint.send{ value: messageValue }(\\n                MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0),\\n                _refundAddress\\n            );\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the native fee associated with the message.\\n     * @param _nativeFee The native fee to be paid.\\n     * @return nativeFee The amount of native currency paid.\\n     *\\n     * @dev If the OApp needs to initiate MULTIPLE LayerZero messages in a single transaction,\\n     * this will need to be overridden because msg.value would contain multiple lzFees.\\n     * @dev Should be overridden in the event the LayerZero endpoint requires a different native currency.\\n     * @dev Some EVMs use an ERC20 as a method for paying transactions/gasFees.\\n     * @dev The endpoint is EITHER/OR, ie. it will NOT support both types of native payment at a time.\\n     */\\n    function _payNative(uint256 _nativeFee) internal virtual returns (uint256 nativeFee) {\\n        if (msg.value != _nativeFee) revert NotEnoughNative(msg.value);\\n        return _nativeFee;\\n    }\\n\\n    /**\\n     * @dev Internal function to pay the LZ token fee associated with the message.\\n     * @param _lzTokenFee The LZ token fee to be paid.\\n     *\\n     * @dev If the caller is trying to pay in the specified lzToken, then the lzTokenFee is passed to the endpoint.\\n     * @dev Any excess sent, is passed back to the specified _refundAddress in the _lzSend().\\n     */\\n    function _payLzToken(uint256 _lzTokenFee) internal virtual {\\n        // @dev Cannot cache the token because it is not immutable in the endpoint.\\n        address lzToken = endpoint.lzToken();\\n        if (lzToken == address(0)) revert LzTokenUnavailable();\\n\\n        // Pay LZ token fee by sending tokens to the endpoint.\\n        IERC20(lzToken).safeTransferFrom(msg.sender, address(endpoint), _lzTokenFee);\\n    }\\n}\\n\",\"keccak256\":\"0x518cf4adca601923ed4baa6619846a253ea32b8d8775f8bc1faa3dfac7f67c20\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n    // Custom error messages\\n    error OnlyPeer(uint32 eid, bytes32 sender);\\n    error NoPeer(uint32 eid);\\n    error InvalidEndpointCall();\\n    error InvalidDelegate();\\n\\n    // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n    event PeerSet(uint32 eid, bytes32 peer);\\n\\n    /**\\n     * @notice Retrieves the OApp version information.\\n     * @return senderVersion The version of the OAppSender.sol contract.\\n     * @return receiverVersion The version of the OAppReceiver.sol contract.\\n     */\\n    function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n    /**\\n     * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n     * @return iEndpoint The LayerZero endpoint as an interface.\\n     */\\n    function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n    /**\\n     * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n     */\\n    function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n    /**\\n     * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n     * @param _eid The endpoint ID.\\n     * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n     */\\n    function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n    /**\\n     * @notice Sets the delegate address for the OApp Core.\\n     * @param _delegate The address of the delegate to be set.\\n     */\\n    function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x40e49f2de74506e1da5dcaed53a39853f691647f4ceb0fccc8f49a68d3f47c58\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title IOAppMsgInspector\\n * @dev Interface for the OApp Message Inspector, allowing examination of message and options contents.\\n */\\ninterface IOAppMsgInspector {\\n    // Custom error message for inspection failure\\n    error InspectionFailed(bytes message, bytes options);\\n\\n    /**\\n     * @notice Allows the inspector to examine LayerZero message contents and optionally throw a revert if invalid.\\n     * @param _message The message payload to be inspected.\\n     * @param _options Additional options or parameters for inspection.\\n     * @return valid A boolean indicating whether the inspection passed (true) or failed (false).\\n     *\\n     * @dev Optionally done as a revert, OR use the boolean provided to handle the failure.\\n     */\\n    function inspect(bytes calldata _message, bytes calldata _options) external view returns (bool valid);\\n}\\n\",\"keccak256\":\"0x339654e699043c400cad92de209aa23855ce10211c31cf4114042cc5224d3b7c\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Struct representing enforced option parameters.\\n */\\nstruct EnforcedOptionParam {\\n    uint32 eid; // Endpoint ID\\n    uint16 msgType; // Message Type\\n    bytes options; // Additional options\\n}\\n\\n/**\\n * @title IOAppOptionsType3\\n * @dev Interface for the OApp with Type 3 Options, allowing the setting and combining of enforced options.\\n */\\ninterface IOAppOptionsType3 {\\n    // Custom error message for invalid options\\n    error InvalidOptions(bytes options);\\n\\n    // Event emitted when enforced options are set\\n    event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\\n\\n    /**\\n     * @notice Sets enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OApp message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) external view returns (bytes memory options);\\n}\\n\",\"keccak256\":\"0x9fc08a51e9d7c9c710c4eb26f84fe77228305ad7da63fa486ff24ebf2f3bc461\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.20;\\n\\nimport { ILayerZeroReceiver, Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n    /**\\n     * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _message The lzReceive payload.\\n     * @param _sender The sender address.\\n     * @return isSender Is a valid sender.\\n     *\\n     * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n     * @dev The default sender IS the OAppReceiver implementer.\\n     */\\n    function isComposeMsgSender(\\n        Origin calldata _origin,\\n        bytes calldata _message,\\n        address _sender\\n    ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0xd26135185e19b3732746d4a9e2923e896f28dec8664bab161faea2ee26fcdc3d\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IOAppOptionsType3, EnforcedOptionParam } from \\\"../interfaces/IOAppOptionsType3.sol\\\";\\n\\n/**\\n * @title OAppOptionsType3\\n * @dev Abstract contract implementing the IOAppOptionsType3 interface with type 3 options.\\n */\\nabstract contract OAppOptionsType3 is IOAppOptionsType3, Ownable {\\n    uint16 internal constant OPTION_TYPE_3 = 3;\\n\\n    // @dev The \\\"msgType\\\" should be defined in the child contract.\\n    mapping(uint32 eid => mapping(uint16 msgType => bytes enforcedOption)) public enforcedOptions;\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Only the owner/admin of the OApp can call this function.\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) public virtual onlyOwner {\\n        _setEnforcedOptions(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @dev Sets the enforced options for specific endpoint and message type combinations.\\n     * @param _enforcedOptions An array of EnforcedOptionParam structures specifying enforced options.\\n     *\\n     * @dev Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.\\n     * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the msgType.\\n     * eg. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you dont want to pay\\n     * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().\\n     */\\n    function _setEnforcedOptions(EnforcedOptionParam[] memory _enforcedOptions) internal virtual {\\n        for (uint256 i = 0; i < _enforcedOptions.length; i++) {\\n            // @dev Enforced options are only available for optionType 3, as type 1 and 2 dont support combining.\\n            _assertOptionsType3(_enforcedOptions[i].options);\\n            enforcedOptions[_enforcedOptions[i].eid][_enforcedOptions[i].msgType] = _enforcedOptions[i].options;\\n        }\\n\\n        emit EnforcedOptionSet(_enforcedOptions);\\n    }\\n\\n    /**\\n     * @notice Combines options for a given endpoint and message type.\\n     * @param _eid The endpoint ID.\\n     * @param _msgType The OAPP message type.\\n     * @param _extraOptions Additional options passed by the caller.\\n     * @return options The combination of caller specified options AND enforced options.\\n     *\\n     * @dev If there is an enforced lzReceive option:\\n     * - {gasLimit: 200k, msg.value: 1 ether} AND a caller supplies a lzReceive option: {gasLimit: 100k, msg.value: 0.5 ether}\\n     * - The resulting options will be {gasLimit: 300k, msg.value: 1.5 ether} when the message is executed on the remote lzReceive() function.\\n     * @dev This presence of duplicated options is handled off-chain in the verifier/executor.\\n     */\\n    function combineOptions(\\n        uint32 _eid,\\n        uint16 _msgType,\\n        bytes calldata _extraOptions\\n    ) public view virtual returns (bytes memory) {\\n        bytes memory enforced = enforcedOptions[_eid][_msgType];\\n\\n        // No enforced options, pass whatever the caller supplied, even if it's empty or legacy type 1/2 options.\\n        if (enforced.length == 0) return _extraOptions;\\n\\n        // No caller options, return enforced\\n        if (_extraOptions.length == 0) return enforced;\\n\\n        // @dev If caller provided _extraOptions, must be type 3 as its the ONLY type that can be combined.\\n        if (_extraOptions.length >= 2) {\\n            _assertOptionsType3(_extraOptions);\\n            // @dev Remove the first 2 bytes containing the type from the _extraOptions and combine with enforced.\\n            return bytes.concat(enforced, _extraOptions[2:]);\\n        }\\n\\n        // No valid set of options was found.\\n        revert InvalidOptions(_extraOptions);\\n    }\\n\\n    /**\\n     * @dev Internal function to assert that options are of type 3.\\n     * @param _options The options to be checked.\\n     */\\n    function _assertOptionsType3(bytes memory _options) internal pure virtual {\\n        uint16 optionsType;\\n        assembly {\\n            optionsType := mload(add(_options, 2))\\n        }\\n        if (optionsType != OPTION_TYPE_3) revert InvalidOptions(_options);\\n    }\\n}\\n\",\"keccak256\":\"0x5275636cd47e660a2fdf6c7fe9d41ff3cc866b785cc8a9d88c1b8ca983509f01\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Ownable } from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport { IPreCrime } from \\\"./interfaces/IPreCrime.sol\\\";\\nimport { IOAppPreCrimeSimulator, InboundPacket, Origin } from \\\"./interfaces/IOAppPreCrimeSimulator.sol\\\";\\n\\n/**\\n * @title OAppPreCrimeSimulator\\n * @dev Abstract contract serving as the base for preCrime simulation functionality in an OApp.\\n */\\nabstract contract OAppPreCrimeSimulator is IOAppPreCrimeSimulator, Ownable {\\n    // The address of the preCrime implementation.\\n    address public preCrime;\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     *\\n     * @dev The simulator contract is the base contract for the OApp by default.\\n     * @dev If the simulator is a separate contract, override this function.\\n     */\\n    function oApp() external view virtual returns (address) {\\n        return address(this);\\n    }\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) public virtual onlyOwner {\\n        preCrime = _preCrime;\\n        emit PreCrimeSet(_preCrime);\\n    }\\n\\n    /**\\n     * @dev Interface for pre-crime simulations. Always reverts at the end with the simulation results.\\n     * @param _packets An array of InboundPacket objects representing received packets to be delivered.\\n     *\\n     * @dev WARNING: MUST revert at the end with the simulation results.\\n     * @dev Gives the preCrime implementation the ability to mock sending packets to the lzReceive function,\\n     * WITHOUT actually executing them.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) public payable virtual {\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            InboundPacket calldata packet = _packets[i];\\n\\n            // Ignore packets that are not from trusted peers.\\n            if (!isPeer(packet.origin.srcEid, packet.origin.sender)) continue;\\n\\n            // @dev Because a verifier is calling this function, it doesnt have access to executor params:\\n            //  - address _executor\\n            //  - bytes calldata _extraData\\n            // preCrime will NOT work for OApps that rely on these two parameters inside of their _lzReceive().\\n            // They are instead stubbed to default values, address(0) and bytes(\\\"\\\")\\n            // @dev Calling this.lzReceiveSimulate removes ability for assembly return 0 callstack exit,\\n            // which would cause the revert to be ignored.\\n            this.lzReceiveSimulate{ value: packet.value }(\\n                packet.origin,\\n                packet.guid,\\n                packet.message,\\n                packet.executor,\\n                packet.extraData\\n            );\\n        }\\n\\n        // @dev Revert with the simulation results. msg.sender must implement IPreCrime.buildSimulationResult().\\n        revert SimulationResult(IPreCrime(msg.sender).buildSimulationResult());\\n    }\\n\\n    /**\\n     * @dev Is effectively an internal function because msg.sender must be address(this).\\n     * Allows resetting the call stack for 'internal' calls.\\n     * @param _origin The origin information containing the source endpoint and sender address.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address on the src chain.\\n     *  - nonce: The nonce of the message.\\n     * @param _guid The unique identifier of the packet.\\n     * @param _message The message payload of the packet.\\n     * @param _executor The executor address for the packet.\\n     * @param _extraData Additional data for the packet.\\n     */\\n    function lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) external payable virtual {\\n        // @dev Ensure ONLY can be called 'internally'.\\n        if (msg.sender != address(this)) revert OnlySelf();\\n        _lzReceiveSimulate(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The GUID of the LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual returns (bool);\\n}\\n\",\"keccak256\":\"0x205a0abfd8b3c9af2740769f251381b84999b8e9347f3cd50de3ef8290a17750\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\n// @dev Import the Origin so it's exposed to OAppPreCrimeSimulator implementers.\\n// solhint-disable-next-line no-unused-import\\nimport { InboundPacket, Origin } from \\\"../libs/Packet.sol\\\";\\n\\n/**\\n * @title IOAppPreCrimeSimulator Interface\\n * @dev Interface for the preCrime simulation functionality in an OApp.\\n */\\ninterface IOAppPreCrimeSimulator {\\n    // @dev simulation result used in PreCrime implementation\\n    error SimulationResult(bytes result);\\n    error OnlySelf();\\n\\n    /**\\n     * @dev Emitted when the preCrime contract address is set.\\n     * @param preCrimeAddress The address of the preCrime contract.\\n     */\\n    event PreCrimeSet(address preCrimeAddress);\\n\\n    /**\\n     * @dev Retrieves the address of the preCrime contract implementation.\\n     * @return The address of the preCrime contract.\\n     */\\n    function preCrime() external view returns (address);\\n\\n    /**\\n     * @dev Retrieves the address of the OApp contract.\\n     * @return The address of the OApp contract.\\n     */\\n    function oApp() external view returns (address);\\n\\n    /**\\n     * @dev Sets the preCrime contract address.\\n     * @param _preCrime The address of the preCrime contract.\\n     */\\n    function setPreCrime(address _preCrime) external;\\n\\n    /**\\n     * @dev Mocks receiving a packet, then reverts with a series of data to infer the state/result.\\n     * @param _packets An array of LayerZero InboundPacket objects representing received packets.\\n     */\\n    function lzReceiveAndRevert(InboundPacket[] calldata _packets) external payable;\\n\\n    /**\\n     * @dev checks if the specified peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint Id to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5d24db150949ea8e6437178e65a942e8c8b7f332e5daf32750f56b23b35b5bb2\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\nstruct PreCrimePeer {\\n    uint32 eid;\\n    bytes32 preCrime;\\n    bytes32 oApp;\\n}\\n\\n// TODO not done yet\\ninterface IPreCrime {\\n    error OnlyOffChain();\\n\\n    // for simulate()\\n    error PacketOversize(uint256 max, uint256 actual);\\n    error PacketUnsorted();\\n    error SimulationFailed(bytes reason);\\n\\n    // for preCrime()\\n    error SimulationResultNotFound(uint32 eid);\\n    error InvalidSimulationResult(uint32 eid, bytes reason);\\n    error CrimeFound(bytes crime);\\n\\n    function getConfig(bytes[] calldata _packets, uint256[] calldata _packetMsgValues) external returns (bytes memory);\\n\\n    function simulate(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues\\n    ) external payable returns (bytes memory);\\n\\n    function buildSimulationResult() external view returns (bytes memory);\\n\\n    function preCrime(\\n        bytes[] calldata _packets,\\n        uint256[] calldata _packetMsgValues,\\n        bytes[] calldata _simulations\\n    ) external;\\n\\n    function version() external view returns (uint64 major, uint8 minor);\\n}\\n\",\"keccak256\":\"0xc8d869f27ef8ceb2e13fdf6a70682fd4dee3f90c4924eb8e125bc1e66cb6af84\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { Origin } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\nimport { PacketV1Codec } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\\\";\\n\\n/**\\n * @title InboundPacket\\n * @dev Structure representing an inbound packet received by the contract.\\n */\\nstruct InboundPacket {\\n    Origin origin; // Origin information of the packet.\\n    uint32 dstEid; // Destination endpointId of the packet.\\n    address receiver; // Receiver address for the packet.\\n    bytes32 guid; // Unique identifier of the packet.\\n    uint256 value; // msg.value of the packet.\\n    address executor; // Executor address for the packet.\\n    bytes message; // Message payload of the packet.\\n    bytes extraData; // Additional arbitrary data for the packet.\\n}\\n\\n/**\\n * @title PacketDecoder\\n * @dev Library for decoding LayerZero packets.\\n */\\nlibrary PacketDecoder {\\n    using PacketV1Codec for bytes;\\n\\n    /**\\n     * @dev Decode an inbound packet from the given packet data.\\n     * @param _packet The packet data to decode.\\n     * @return packet An InboundPacket struct representing the decoded packet.\\n     */\\n    function decode(bytes calldata _packet) internal pure returns (InboundPacket memory packet) {\\n        packet.origin = Origin(_packet.srcEid(), _packet.sender(), _packet.nonce());\\n        packet.dstEid = _packet.dstEid();\\n        packet.receiver = _packet.receiverB20();\\n        packet.guid = _packet.guid();\\n        packet.message = _packet.message();\\n    }\\n\\n    /**\\n     * @dev Decode multiple inbound packets from the given packet data and associated message values.\\n     * @param _packets An array of packet data to decode.\\n     * @param _packetMsgValues An array of associated message values for each packet.\\n     * @return packets An array of InboundPacket structs representing the decoded packets.\\n     */\\n    function decode(\\n        bytes[] calldata _packets,\\n        uint256[] memory _packetMsgValues\\n    ) internal pure returns (InboundPacket[] memory packets) {\\n        packets = new InboundPacket[](_packets.length);\\n        for (uint256 i = 0; i < _packets.length; i++) {\\n            bytes calldata packet = _packets[i];\\n            packets[i] = PacketDecoder.decode(packet);\\n            // @dev Allows the verifier to specify the msg.value that gets passed in lzReceive.\\n            packets[i].value = _packetMsgValues[i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcb2fb1c5b2eb3731de78b479b9c2ab3bba326fe0b0b3a008590f18e881e457a6\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/OFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { ERC20 } from \\\"@openzeppelin/contracts/token/ERC20/ERC20.sol\\\";\\nimport { IOFT, OFTCore } from \\\"./OFTCore.sol\\\";\\n\\n/**\\n * @title OFT Contract\\n * @dev OFT is an ERC-20 token that extends the functionality of the OFTCore contract.\\n */\\nabstract contract OFT is OFTCore, ERC20 {\\n    /**\\n     * @dev Constructor for the OFT contract.\\n     * @param _name The name of the OFT.\\n     * @param _symbol The symbol of the OFT.\\n     * @param _lzEndpoint The LayerZero endpoint address.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(\\n        string memory _name,\\n        string memory _symbol,\\n        address _lzEndpoint,\\n        address _delegate\\n    ) ERC20(_name, _symbol) OFTCore(decimals(), _lzEndpoint, _delegate) {}\\n\\n    /**\\n     * @dev Retrieves the address of the underlying ERC20 implementation.\\n     * @return The address of the OFT token.\\n     *\\n     * @dev In the case of OFT, address(this) and erc20 are the same contract.\\n     */\\n    function token() public view returns (address) {\\n        return address(this);\\n    }\\n\\n    /**\\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n     * @return requiresApproval Needs approval of the underlying token implementation.\\n     *\\n     * @dev In the case of OFT where the contract IS the token, approval is NOT required.\\n     */\\n    function approvalRequired() external pure virtual returns (bool) {\\n        return false;\\n    }\\n\\n    /**\\n     * @dev Burns tokens from the sender's specified balance.\\n     * @param _from The address to debit the tokens from.\\n     * @param _amountLD The amount of tokens to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @param _dstEid The destination chain ID.\\n     * @return amountSentLD The amount sent in local decimals.\\n     * @return amountReceivedLD The amount received in local decimals on the remote.\\n     */\\n    function _debit(\\n        address _from,\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 _dstEid\\n    ) internal virtual override returns (uint256 amountSentLD, uint256 amountReceivedLD) {\\n        (amountSentLD, amountReceivedLD) = _debitView(_amountLD, _minAmountLD, _dstEid);\\n\\n        // @dev In NON-default OFT, amountSentLD could be 100, with a 10% fee, the amountReceivedLD amount is 90,\\n        // therefore amountSentLD CAN differ from amountReceivedLD.\\n\\n        // @dev Default OFT burns on src.\\n        _burn(_from, amountSentLD);\\n    }\\n\\n    /**\\n     * @dev Credits tokens to the specified address.\\n     * @param _to The address to credit the tokens to.\\n     * @param _amountLD The amount of tokens to credit in local decimals.\\n     * @dev _srcEid The source chain ID.\\n     * @return amountReceivedLD The amount of tokens ACTUALLY received in local decimals.\\n     */\\n    function _credit(\\n        address _to,\\n        uint256 _amountLD,\\n        uint32 /*_srcEid*/\\n    ) internal virtual override returns (uint256 amountReceivedLD) {\\n        if (_to == address(0x0)) _to = address(0xdead); // _mint(...) does not support address(0x0)\\n        // @dev Default OFT mints on dst.\\n        _mint(_to, _amountLD);\\n        // @dev In the case of NON-default OFT, the _amountLD MIGHT not be == amountReceivedLD.\\n        return _amountLD;\\n    }\\n}\\n\",\"keccak256\":\"0xdc3582e4a20e02a79050c17058a1f1f42a4335d1a70be06c0a52a3fb05d4c89a\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/OFTCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { IERC20 } from \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\nimport { OApp, Origin } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\\\";\\nimport { OAppOptionsType3 } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\\\";\\nimport { IOAppMsgInspector } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\\\";\\n\\nimport { OAppPreCrimeSimulator } from \\\"@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\\\";\\n\\nimport { IOFT, SendParam, OFTLimit, OFTReceipt, OFTFeeDetail, MessagingReceipt, MessagingFee } from \\\"./interfaces/IOFT.sol\\\";\\nimport { OFTMsgCodec } from \\\"./libs/OFTMsgCodec.sol\\\";\\nimport { OFTComposeMsgCodec } from \\\"./libs/OFTComposeMsgCodec.sol\\\";\\n\\n/**\\n * @title OFTCore\\n * @dev Abstract contract for the OftChain (OFT) token.\\n */\\nabstract contract OFTCore is IOFT, OApp, OAppPreCrimeSimulator, OAppOptionsType3 {\\n    using OFTMsgCodec for bytes;\\n    using OFTMsgCodec for bytes32;\\n\\n    // @notice Provides a conversion rate when swapping between denominations of SD and LD\\n    //      - shareDecimals == SD == shared Decimals\\n    //      - localDecimals == LD == local decimals\\n    // @dev Considers that tokens have different decimal amounts on various chains.\\n    // @dev eg.\\n    //  For a token\\n    //      - locally with 4 decimals --> 1.2345 => uint(12345)\\n    //      - remotely with 2 decimals --> 1.23 => uint(123)\\n    //      - The conversion rate would be 10 ** (4 - 2) = 100\\n    //  @dev If you want to send 1.2345 -> (uint 12345), you CANNOT represent that value on the remote,\\n    //  you can only display 1.23 -> uint(123).\\n    //  @dev To preserve the dust that would otherwise be lost on that conversion,\\n    //  we need to unify a denomination that can be represented on ALL chains inside of the OFT mesh\\n    uint256 public immutable decimalConversionRate;\\n\\n    // @notice Msg types that are used to identify the various OFT operations.\\n    // @dev This can be extended in child contracts for non-default oft operations\\n    // @dev These values are used in things like combineOptions() in OAppOptionsType3.sol.\\n    uint16 public constant SEND = 1;\\n    uint16 public constant SEND_AND_CALL = 2;\\n\\n    // Address of an optional contract to inspect both 'message' and 'options'\\n    address public msgInspector;\\n    event MsgInspectorSet(address inspector);\\n\\n    /**\\n     * @dev Constructor.\\n     * @param _localDecimals The decimals of the token on the local chain (this chain).\\n     * @param _endpoint The address of the LayerZero endpoint.\\n     * @param _delegate The delegate capable of making OApp configurations inside of the endpoint.\\n     */\\n    constructor(uint8 _localDecimals, address _endpoint, address _delegate) OApp(_endpoint, _delegate) {\\n        if (_localDecimals < sharedDecimals()) revert InvalidLocalDecimals();\\n        decimalConversionRate = 10 ** (_localDecimals - sharedDecimals());\\n    }\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external pure virtual returns (bytes4 interfaceId, uint64 version) {\\n        return (type(IOFT).interfaceId, 1);\\n    }\\n\\n    /**\\n     * @dev Retrieves the shared decimals of the OFT.\\n     * @return The shared decimals of the OFT.\\n     *\\n     * @dev Sets an implicit cap on the amount of tokens, over uint64.max() will need some sort of outbound cap / totalSupply cap\\n     * Lowest common decimal denominator between chains.\\n     * Defaults to 6 decimal places to provide up to 18,446,744,073,709.551615 units (max uint64).\\n     * For tokens exceeding this totalSupply(), they will need to override the sharedDecimals function with something smaller.\\n     * ie. 4 sharedDecimals would be 1,844,674,407,370,955.1615\\n     */\\n    function sharedDecimals() public view virtual returns (uint8) {\\n        return 6;\\n    }\\n\\n    /**\\n     * @dev Sets the message inspector address for the OFT.\\n     * @param _msgInspector The address of the message inspector.\\n     *\\n     * @dev This is an optional contract that can be used to inspect both 'message' and 'options'.\\n     * @dev Set it to address(0) to disable it, or set it to a contract address to enable it.\\n     */\\n    function setMsgInspector(address _msgInspector) public virtual onlyOwner {\\n        msgInspector = _msgInspector;\\n        emit MsgInspectorSet(_msgInspector);\\n    }\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return oftLimit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return oftReceipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    )\\n        external\\n        view\\n        virtual\\n        returns (OFTLimit memory oftLimit, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory oftReceipt)\\n    {\\n        uint256 minAmountLD = 0; // Unused in the default implementation.\\n        uint256 maxAmountLD = IERC20(this.token()).totalSupply(); // Unused in the default implementation.\\n        oftLimit = OFTLimit(minAmountLD, maxAmountLD);\\n\\n        // Unused in the default implementation; reserved for future complex fee details.\\n        oftFeeDetails = new OFTFeeDetail[](0);\\n\\n        // @dev This is the same as the send() operation, but without the actual send.\\n        // - amountSentLD is the amount in local decimals that would be sent from the sender.\\n        // - amountReceivedLD is the amount in local decimals that will be credited to the recipient on the remote OFT instance.\\n        // @dev The amountSentLD MIGHT not equal the amount the user actually receives. HOWEVER, the default does.\\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debitView(\\n            _sendParam.amountLD,\\n            _sendParam.minAmountLD,\\n            _sendParam.dstEid\\n        );\\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return msgFee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(\\n        SendParam calldata _sendParam,\\n        bool _payInLzToken\\n    ) external view virtual returns (MessagingFee memory msgFee) {\\n        // @dev mock the amount to receive, this is the same operation used in the send().\\n        // The quote is as similar as possible to the actual send() operation.\\n        (, uint256 amountReceivedLD) = _debitView(_sendParam.amountLD, _sendParam.minAmountLD, _sendParam.dstEid);\\n\\n        // @dev Builds the options and OFT message to quote in the endpoint.\\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\\n\\n        // @dev Calculates the LayerZero fee for the send() operation.\\n        return _quote(_sendParam.dstEid, message, options, _payInLzToken);\\n    }\\n\\n    /**\\n     * @dev Executes the send operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The calculated fee for the send() operation.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds.\\n     * @return msgReceipt The receipt for the send operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\\n        return _send(_sendParam, _fee, _refundAddress);\\n    }\\n\\n    /**\\n     * @dev Internal function to execute the send operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The calculated fee for the send() operation.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds.\\n     * @return msgReceipt The receipt for the send operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function _send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) internal virtual returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt) {\\n        // @dev Applies the token transfers regarding this send() operation.\\n        // - amountSentLD is the amount in local decimals that was ACTUALLY sent/debited from the sender.\\n        // - amountReceivedLD is the amount in local decimals that will be received/credited to the recipient on the remote OFT instance.\\n        (uint256 amountSentLD, uint256 amountReceivedLD) = _debit(\\n            msg.sender,\\n            _sendParam.amountLD,\\n            _sendParam.minAmountLD,\\n            _sendParam.dstEid\\n        );\\n\\n        // @dev Builds the options and OFT message to quote in the endpoint.\\n        (bytes memory message, bytes memory options) = _buildMsgAndOptions(_sendParam, amountReceivedLD);\\n\\n        // @dev Sends the message to the LayerZero endpoint and returns the LayerZero msg receipt.\\n        msgReceipt = _lzSend(_sendParam.dstEid, message, options, _fee, _refundAddress);\\n        // @dev Formulate the OFT receipt.\\n        oftReceipt = OFTReceipt(amountSentLD, amountReceivedLD);\\n\\n        emit OFTSent(msgReceipt.guid, _sendParam.dstEid, msg.sender, amountSentLD, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @dev Internal function to build the message and options.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _amountLD The amount in local decimals.\\n     * @return message The encoded message.\\n     * @return options The encoded options.\\n     */\\n    function _buildMsgAndOptions(\\n        SendParam calldata _sendParam,\\n        uint256 _amountLD\\n    ) internal view virtual returns (bytes memory message, bytes memory options) {\\n        bool hasCompose;\\n        // @dev This generated message has the msg.sender encoded into the payload so the remote knows who the caller is.\\n        (message, hasCompose) = OFTMsgCodec.encode(\\n            _sendParam.to,\\n            _toSD(_amountLD),\\n            // @dev Must be include a non empty bytes if you want to compose, EVEN if you dont need it on the remote.\\n            // EVEN if you dont require an arbitrary payload to be sent... eg. '0x01'\\n            _sendParam.composeMsg\\n        );\\n        // @dev Change the msg type depending if its composed or not.\\n        uint16 msgType = hasCompose ? SEND_AND_CALL : SEND;\\n        // @dev Combine the callers _extraOptions with the enforced options via the OAppOptionsType3.\\n        options = combineOptions(_sendParam.dstEid, msgType, _sendParam.extraOptions);\\n\\n        // @dev Optionally inspect the message and options depending if the OApp owner has set a msg inspector.\\n        // @dev If it fails inspection, needs to revert in the implementation. ie. does not rely on return boolean\\n        address inspector = msgInspector; // caches the msgInspector to avoid potential double storage read\\n        if (inspector != address(0)) IOAppMsgInspector(inspector).inspect(message, options);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the receive on the LayerZero endpoint.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The encoded message.\\n     * @dev _executor The address of the executor.\\n     * @dev _extraData Additional data.\\n     */\\n    function _lzReceive(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address /*_executor*/, // @dev unused in the default implementation.\\n        bytes calldata /*_extraData*/ // @dev unused in the default implementation.\\n    ) internal virtual override {\\n        // @dev The src sending chain doesnt know the address length on this chain (potentially non-evm)\\n        // Thus everything is bytes32() encoded in flight.\\n        address toAddress = _message.sendTo().bytes32ToAddress();\\n        // @dev Credit the amountLD to the recipient and return the ACTUAL amount the recipient received in local decimals\\n        uint256 amountReceivedLD = _credit(toAddress, _toLD(_message.amountSD()), _origin.srcEid);\\n\\n        if (_message.isComposed()) {\\n            // @dev Proprietary composeMsg format for the OFT.\\n            bytes memory composeMsg = OFTComposeMsgCodec.encode(\\n                _origin.nonce,\\n                _origin.srcEid,\\n                amountReceivedLD,\\n                _message.composeMsg()\\n            );\\n\\n            // @dev Stores the lzCompose payload that will be executed in a separate tx.\\n            // Standardizes functionality for executing arbitrary contract invocation on some non-evm chains.\\n            // @dev The off-chain executor will listen and process the msg based on the src-chain-callers compose options passed.\\n            // @dev The index is used when a OApp needs to compose multiple msgs on lzReceive.\\n            // For default OFT implementation there is only 1 compose msg per lzReceive, thus its always 0.\\n            endpoint.sendCompose(toAddress, _guid, 0 /* the index of the composed message*/, composeMsg);\\n        }\\n\\n        emit OFTReceived(_guid, _origin.srcEid, toAddress, amountReceivedLD);\\n    }\\n\\n    /**\\n     * @dev Internal function to handle the OAppPreCrimeSimulator simulated receive.\\n     * @param _origin The origin information.\\n     *  - srcEid: The source chain endpoint ID.\\n     *  - sender: The sender address from the src chain.\\n     *  - nonce: The nonce of the LayerZero message.\\n     * @param _guid The unique identifier for the received LayerZero message.\\n     * @param _message The LayerZero message.\\n     * @param _executor The address of the off-chain executor.\\n     * @param _extraData Arbitrary data passed by the msg executor.\\n     *\\n     * @dev Enables the preCrime simulator to mock sending lzReceive() messages,\\n     * routes the msg down from the OAppPreCrimeSimulator, and back up to the OAppReceiver.\\n     */\\n    function _lzReceiveSimulate(\\n        Origin calldata _origin,\\n        bytes32 _guid,\\n        bytes calldata _message,\\n        address _executor,\\n        bytes calldata _extraData\\n    ) internal virtual override {\\n        _lzReceive(_origin, _guid, _message, _executor, _extraData);\\n    }\\n\\n    /**\\n     * @dev Check if the peer is considered 'trusted' by the OApp.\\n     * @param _eid The endpoint ID to check.\\n     * @param _peer The peer to check.\\n     * @return Whether the peer passed is considered 'trusted' by the OApp.\\n     *\\n     * @dev Enables OAppPreCrimeSimulator to check whether a potential Inbound Packet is from a trusted source.\\n     */\\n    function isPeer(uint32 _eid, bytes32 _peer) public view virtual override returns (bool) {\\n        return peers[_eid] == _peer;\\n    }\\n\\n    /**\\n     * @dev Internal function to remove dust from the given local decimal amount.\\n     * @param _amountLD The amount in local decimals.\\n     * @return amountLD The amount after removing dust.\\n     *\\n     * @dev Prevents the loss of dust when moving amounts between chains with different decimals.\\n     * @dev eg. uint(123) with a conversion rate of 100 becomes uint(100).\\n     */\\n    function _removeDust(uint256 _amountLD) internal view virtual returns (uint256 amountLD) {\\n        return (_amountLD / decimalConversionRate) * decimalConversionRate;\\n    }\\n\\n    /**\\n     * @dev Internal function to convert an amount from shared decimals into local decimals.\\n     * @param _amountSD The amount in shared decimals.\\n     * @return amountLD The amount in local decimals.\\n     */\\n    function _toLD(uint64 _amountSD) internal view virtual returns (uint256 amountLD) {\\n        return _amountSD * decimalConversionRate;\\n    }\\n\\n    /**\\n     * @dev Internal function to convert an amount from local decimals into shared decimals.\\n     * @param _amountLD The amount in local decimals.\\n     * @return amountSD The amount in shared decimals.\\n     */\\n    function _toSD(uint256 _amountLD) internal view virtual returns (uint64 amountSD) {\\n        return uint64(_amountLD / decimalConversionRate);\\n    }\\n\\n    /**\\n     * @dev Internal function to mock the amount mutation from a OFT debit() operation.\\n     * @param _amountLD The amount to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @dev _dstEid The destination endpoint ID.\\n     * @return amountSentLD The amount sent, in local decimals.\\n     * @return amountReceivedLD The amount to be received on the remote chain, in local decimals.\\n     *\\n     * @dev This is where things like fees would be calculated and deducted from the amount to be received on the remote.\\n     */\\n    function _debitView(\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 /*_dstEid*/\\n    ) internal view virtual returns (uint256 amountSentLD, uint256 amountReceivedLD) {\\n        // @dev Remove the dust so nothing is lost on the conversion between chains with different decimals for the token.\\n        amountSentLD = _removeDust(_amountLD);\\n        // @dev The amount to send is the same as amount received in the default implementation.\\n        amountReceivedLD = amountSentLD;\\n\\n        // @dev Check for slippage.\\n        if (amountReceivedLD < _minAmountLD) {\\n            revert SlippageExceeded(amountReceivedLD, _minAmountLD);\\n        }\\n    }\\n\\n    /**\\n     * @dev Internal function to perform a debit operation.\\n     * @param _from The address to debit.\\n     * @param _amountLD The amount to send in local decimals.\\n     * @param _minAmountLD The minimum amount to send in local decimals.\\n     * @param _dstEid The destination endpoint ID.\\n     * @return amountSentLD The amount sent in local decimals.\\n     * @return amountReceivedLD The amount received in local decimals on the remote.\\n     *\\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\\n     */\\n    function _debit(\\n        address _from,\\n        uint256 _amountLD,\\n        uint256 _minAmountLD,\\n        uint32 _dstEid\\n    ) internal virtual returns (uint256 amountSentLD, uint256 amountReceivedLD);\\n\\n    /**\\n     * @dev Internal function to perform a credit operation.\\n     * @param _to The address to credit.\\n     * @param _amountLD The amount to credit in local decimals.\\n     * @param _srcEid The source endpoint ID.\\n     * @return amountReceivedLD The amount ACTUALLY received in local decimals.\\n     *\\n     * @dev Defined here but are intended to be overriden depending on the OFT implementation.\\n     * @dev Depending on OFT implementation the _amountLD could differ from the amountReceivedLD.\\n     */\\n    function _credit(\\n        address _to,\\n        uint256 _amountLD,\\n        uint32 _srcEid\\n    ) internal virtual returns (uint256 amountReceivedLD);\\n}\\n\",\"keccak256\":\"0x4c5a5412cf671bb70d84c9e783312eddf864ef56566f7bf86401c5661015e228\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nimport { MessagingReceipt, MessagingFee } from \\\"@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\\\";\\n\\n/**\\n * @dev Struct representing token parameters for the OFT send() operation.\\n */\\nstruct SendParam {\\n    uint32 dstEid; // Destination endpoint ID.\\n    bytes32 to; // Recipient address.\\n    uint256 amountLD; // Amount to send in local decimals.\\n    uint256 minAmountLD; // Minimum amount to send in local decimals.\\n    bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.\\n    bytes composeMsg; // The composed message for the send() operation.\\n    bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.\\n}\\n\\n/**\\n * @dev Struct representing OFT limit information.\\n * @dev These amounts can change dynamically and are up the specific oft implementation.\\n */\\nstruct OFTLimit {\\n    uint256 minAmountLD; // Minimum amount in local decimals that can be sent to the recipient.\\n    uint256 maxAmountLD; // Maximum amount in local decimals that can be sent to the recipient.\\n}\\n\\n/**\\n * @dev Struct representing OFT receipt information.\\n */\\nstruct OFTReceipt {\\n    uint256 amountSentLD; // Amount of tokens ACTUALLY debited from the sender in local decimals.\\n    // @dev In non-default implementations, the amountReceivedLD COULD differ from this value.\\n    uint256 amountReceivedLD; // Amount of tokens to be received on the remote side.\\n}\\n\\n/**\\n * @dev Struct representing OFT fee details.\\n * @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI.\\n */\\nstruct OFTFeeDetail {\\n    int256 feeAmountLD; // Amount of the fee in local decimals.\\n    string description; // Description of the fee.\\n}\\n\\n/**\\n * @title IOFT\\n * @dev Interface for the OftChain (OFT) token.\\n * @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\\n * @dev This specific interface ID is '0x02e49c2c'.\\n */\\ninterface IOFT {\\n    // Custom error messages\\n    error InvalidLocalDecimals();\\n    error SlippageExceeded(uint256 amountLD, uint256 minAmountLD);\\n\\n    // Events\\n    event OFTSent(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 dstEid, // Destination Endpoint ID.\\n        address indexed fromAddress, // Address of the sender on the src chain.\\n        uint256 amountSentLD, // Amount of tokens sent in local decimals.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n    event OFTReceived(\\n        bytes32 indexed guid, // GUID of the OFT message.\\n        uint32 srcEid, // Source Endpoint ID.\\n        address indexed toAddress, // Address of the recipient on the dst chain.\\n        uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n    );\\n\\n    /**\\n     * @notice Retrieves interfaceID and the version of the OFT.\\n     * @return interfaceId The interface ID.\\n     * @return version The version.\\n     *\\n     * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n     * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n     * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n     * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n     */\\n    function oftVersion() external view returns (bytes4 interfaceId, uint64 version);\\n\\n    /**\\n     * @notice Retrieves the address of the token associated with the OFT.\\n     * @return token The address of the ERC20 token implementation.\\n     */\\n    function token() external view returns (address);\\n\\n    /**\\n     * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n     * @return requiresApproval Needs approval of the underlying token implementation.\\n     *\\n     * @dev Allows things like wallet implementers to determine integration requirements,\\n     * without understanding the underlying token implementation.\\n     */\\n    function approvalRequired() external view returns (bool);\\n\\n    /**\\n     * @notice Retrieves the shared decimals of the OFT.\\n     * @return sharedDecimals The shared decimals of the OFT.\\n     */\\n    function sharedDecimals() external view returns (uint8);\\n\\n    /**\\n     * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @return limit The OFT limit information.\\n     * @return oftFeeDetails The details of OFT fees.\\n     * @return receipt The OFT receipt information.\\n     */\\n    function quoteOFT(\\n        SendParam calldata _sendParam\\n    ) external view returns (OFTLimit memory, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory);\\n\\n    /**\\n     * @notice Provides a quote for the send() operation.\\n     * @param _sendParam The parameters for the send() operation.\\n     * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n     * @return fee The calculated LayerZero messaging fee from the send() operation.\\n     *\\n     * @dev MessagingFee: LayerZero msg fee\\n     *  - nativeFee: The native fee.\\n     *  - lzTokenFee: The lzToken fee.\\n     */\\n    function quoteSend(SendParam calldata _sendParam, bool _payInLzToken) external view returns (MessagingFee memory);\\n\\n    /**\\n     * @notice Executes the send() operation.\\n     * @param _sendParam The parameters for the send operation.\\n     * @param _fee The fee information supplied by the caller.\\n     *      - nativeFee: The native fee.\\n     *      - lzTokenFee: The lzToken fee.\\n     * @param _refundAddress The address to receive any excess funds from fees etc. on the src.\\n     * @return receipt The LayerZero messaging receipt from the send() operation.\\n     * @return oftReceipt The OFT receipt information.\\n     *\\n     * @dev MessagingReceipt: LayerZero msg receipt\\n     *  - guid: The unique identifier for the sent message.\\n     *  - nonce: The nonce of the sent message.\\n     *  - fee: The LayerZero fee incurred for the message.\\n     */\\n    function send(\\n        SendParam calldata _sendParam,\\n        MessagingFee calldata _fee,\\n        address _refundAddress\\n    ) external payable returns (MessagingReceipt memory, OFTReceipt memory);\\n}\\n\",\"keccak256\":\"0x7ba6bb62fba7ee83451cfb0e727ddeef0e96b4388bd4e9ff0fc6ce103e1101c8\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTComposeMsgCodec {\\n    // Offset constants for decoding composed messages\\n    uint8 private constant NONCE_OFFSET = 8;\\n    uint8 private constant SRC_EID_OFFSET = 12;\\n    uint8 private constant AMOUNT_LD_OFFSET = 44;\\n    uint8 private constant COMPOSE_FROM_OFFSET = 76;\\n\\n    /**\\n     * @dev Encodes a OFT composed message.\\n     * @param _nonce The nonce value.\\n     * @param _srcEid The source endpoint ID.\\n     * @param _amountLD The amount in local decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded Composed message.\\n     */\\n    function encode(\\n        uint64 _nonce,\\n        uint32 _srcEid,\\n        uint256 _amountLD,\\n        bytes memory _composeMsg // 0x[composeFrom][composeMsg]\\n    ) internal pure returns (bytes memory _msg) {\\n        _msg = abi.encodePacked(_nonce, _srcEid, _amountLD, _composeMsg);\\n    }\\n\\n    /**\\n     * @dev Retrieves the nonce for the composed message.\\n     * @param _msg The message.\\n     * @return The nonce value.\\n     */\\n    function nonce(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[:NONCE_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the source endpoint ID for the composed message.\\n     * @param _msg The message.\\n     * @return The source endpoint ID.\\n     */\\n    function srcEid(bytes calldata _msg) internal pure returns (uint32) {\\n        return uint32(bytes4(_msg[NONCE_OFFSET:SRC_EID_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in local decimals from the composed message.\\n     * @param _msg The message.\\n     * @return The amount in local decimals.\\n     */\\n    function amountLD(bytes calldata _msg) internal pure returns (uint256) {\\n        return uint256(bytes32(_msg[SRC_EID_OFFSET:AMOUNT_LD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composeFrom value from the composed message.\\n     * @param _msg The message.\\n     * @return The composeFrom value.\\n     */\\n    function composeFrom(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[AMOUNT_LD_OFFSET:COMPOSE_FROM_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message.\\n     * @param _msg The message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[COMPOSE_FROM_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0xaae73d6eb8b9561c43f1802f3c416c00ccd35f172b711f9781ccdf1b25a40db5\",\"license\":\"MIT\"},\"@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.20;\\n\\nlibrary OFTMsgCodec {\\n    // Offset constants for encoding and decoding OFT messages\\n    uint8 private constant SEND_TO_OFFSET = 32;\\n    uint8 private constant SEND_AMOUNT_SD_OFFSET = 40;\\n\\n    /**\\n     * @dev Encodes an OFT LayerZero message.\\n     * @param _sendTo The recipient address.\\n     * @param _amountShared The amount in shared decimals.\\n     * @param _composeMsg The composed message.\\n     * @return _msg The encoded message.\\n     * @return hasCompose A boolean indicating whether the message has a composed payload.\\n     */\\n    function encode(\\n        bytes32 _sendTo,\\n        uint64 _amountShared,\\n        bytes memory _composeMsg\\n    ) internal view returns (bytes memory _msg, bool hasCompose) {\\n        hasCompose = _composeMsg.length > 0;\\n        // @dev Remote chains will want to know the composed function caller ie. msg.sender on the src.\\n        _msg = hasCompose\\n            ? abi.encodePacked(_sendTo, _amountShared, addressToBytes32(msg.sender), _composeMsg)\\n            : abi.encodePacked(_sendTo, _amountShared);\\n    }\\n\\n    /**\\n     * @dev Checks if the OFT message is composed.\\n     * @param _msg The OFT message.\\n     * @return A boolean indicating whether the message is composed.\\n     */\\n    function isComposed(bytes calldata _msg) internal pure returns (bool) {\\n        return _msg.length > SEND_AMOUNT_SD_OFFSET;\\n    }\\n\\n    /**\\n     * @dev Retrieves the recipient address from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The recipient address.\\n     */\\n    function sendTo(bytes calldata _msg) internal pure returns (bytes32) {\\n        return bytes32(_msg[:SEND_TO_OFFSET]);\\n    }\\n\\n    /**\\n     * @dev Retrieves the amount in shared decimals from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The amount in shared decimals.\\n     */\\n    function amountSD(bytes calldata _msg) internal pure returns (uint64) {\\n        return uint64(bytes8(_msg[SEND_TO_OFFSET:SEND_AMOUNT_SD_OFFSET]));\\n    }\\n\\n    /**\\n     * @dev Retrieves the composed message from the OFT message.\\n     * @param _msg The OFT message.\\n     * @return The composed message.\\n     */\\n    function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n        return _msg[SEND_AMOUNT_SD_OFFSET:];\\n    }\\n\\n    /**\\n     * @dev Converts an address to bytes32.\\n     * @param _addr The address to convert.\\n     * @return The bytes32 representation of the address.\\n     */\\n    function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n        return bytes32(uint256(uint160(_addr)));\\n    }\\n\\n    /**\\n     * @dev Converts bytes32 to an address.\\n     * @param _b The bytes32 value to convert.\\n     * @return The address representation of bytes32.\\n     */\\n    function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n        return address(uint160(uint256(_b)));\\n    }\\n}\\n\",\"keccak256\":\"0x5358948017669c03e157f871d8c38e988f9004dbd0801ad3119d2487f0d40b0b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @title IERC1363\\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\\n *\\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\\n */\\ninterface IERC1363 is IERC20, IERC165 {\\n    /*\\n     * Note: the ERC-165 identifier for this interface is 0xb0202a11.\\n     * 0xb0202a11 ===\\n     *   bytes4(keccak256('transferAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\\n     *   bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256)')) ^\\n     *   bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\\n     */\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\\n     * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\\n     * @param from The address which you want to send tokens from.\\n     * @param to The address which you want to transfer to.\\n     * @param value The amount of tokens to be transferred.\\n     * @param data Additional data with no specified format, sent in call to `to`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\\n     * @param spender The address which will spend the funds.\\n     * @param value The amount of tokens to be spent.\\n     * @param data Additional data with no specified format, sent in call to `spender`.\\n     * @return A boolean value indicating whether the operation succeeded unless throwing.\\n     */\\n    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\\n}\\n\",\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../token/ERC20/IERC20.sol\\\";\\n\",\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/ERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"./IERC20.sol\\\";\\nimport {IERC20Metadata} from \\\"./extensions/IERC20Metadata.sol\\\";\\nimport {Context} from \\\"../../utils/Context.sol\\\";\\nimport {IERC20Errors} from \\\"../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * The default value of {decimals} is 18. To change this, you should override\\n * this function so it returns a different value.\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC-20\\n * applications.\\n */\\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\\n    mapping(address account => uint256) private _balances;\\n\\n    mapping(address account => mapping(address spender => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * Both values are immutable: they can only be set once during construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the default value returned by this function, unless\\n     * it's overridden.\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - the caller must have a balance of at least `value`.\\n     */\\n    function transfer(address to, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _transfer(owner, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\\n     * `transferFrom`. This is semantically equivalent to an infinite approval.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 value) public virtual returns (bool) {\\n        address owner = _msgSender();\\n        _approve(owner, spender, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Skips emitting an {Approval} event indicating an allowance update. This is not\\n     * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\\n     *\\n     * NOTE: Does not update the allowance if the current allowance\\n     * is the maximum `uint256`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` and `to` cannot be the zero address.\\n     * - `from` must have a balance of at least `value`.\\n     * - the caller must have allowance for ``from``'s tokens of at least\\n     * `value`.\\n     */\\n    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\\n        address spender = _msgSender();\\n        _spendAllowance(from, spender, value);\\n        _transfer(from, to, value);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _transfer(address from, address to, uint256 value) internal {\\n        if (from == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        if (to == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\\n     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\\n     * this function.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _update(address from, address to, uint256 value) internal virtual {\\n        if (from == address(0)) {\\n            // Overflow check required: The rest of the code assumes that totalSupply never overflows\\n            _totalSupply += value;\\n        } else {\\n            uint256 fromBalance = _balances[from];\\n            if (fromBalance < value) {\\n                revert ERC20InsufficientBalance(from, fromBalance, value);\\n            }\\n            unchecked {\\n                // Overflow not possible: value <= fromBalance <= totalSupply.\\n                _balances[from] = fromBalance - value;\\n            }\\n        }\\n\\n        if (to == address(0)) {\\n            unchecked {\\n                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\\n                _totalSupply -= value;\\n            }\\n        } else {\\n            unchecked {\\n                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\\n                _balances[to] += value;\\n            }\\n        }\\n\\n        emit Transfer(from, to, value);\\n    }\\n\\n    /**\\n     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\\n     * Relies on the `_update` mechanism\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead.\\n     */\\n    function _mint(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidReceiver(address(0));\\n        }\\n        _update(address(0), account, value);\\n    }\\n\\n    /**\\n     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\\n     * Relies on the `_update` mechanism.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * NOTE: This function is not virtual, {_update} should be overridden instead\\n     */\\n    function _burn(address account, uint256 value) internal {\\n        if (account == address(0)) {\\n            revert ERC20InvalidSender(address(0));\\n        }\\n        _update(account, address(0), value);\\n    }\\n\\n    /**\\n     * @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address owner, address spender, uint256 value) internal {\\n        _approve(owner, spender, value, true);\\n    }\\n\\n    /**\\n     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\\n     *\\n     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\\n     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\\n     * `Approval` event during `transferFrom` operations.\\n     *\\n     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\\n     * true using the following override:\\n     *\\n     * ```solidity\\n     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\\n     *     super._approve(owner, spender, value, true);\\n     * }\\n     * ```\\n     *\\n     * Requirements are the same as {_approve}.\\n     */\\n    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\\n        if (owner == address(0)) {\\n            revert ERC20InvalidApprover(address(0));\\n        }\\n        if (spender == address(0)) {\\n            revert ERC20InvalidSpender(address(0));\\n        }\\n        _allowances[owner][spender] = value;\\n        if (emitEvent) {\\n            emit Approval(owner, spender, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Updates `owner`'s allowance for `spender` based on spent `value`.\\n     *\\n     * Does not update the allowance value in case of infinite allowance.\\n     * Revert if not enough allowance is available.\\n     *\\n     * Does not emit an {Approval} event.\\n     */\\n    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\\n        uint256 currentAllowance = allowance(owner, spender);\\n        if (currentAllowance < type(uint256).max) {\\n            if (currentAllowance < value) {\\n                revert ERC20InsufficientAllowance(spender, currentAllowance, value);\\n            }\\n            unchecked {\\n                _approve(owner, spender, currentAllowance - value, false);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x41f6b3b9e030561e7896dbef372b499cc8d418a80c3884a4d65a68f2fdc7493a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n\\n    /**\\n     * @dev Returns the value of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the value of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address to, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\\n     * caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 value) external returns (bool);\\n\\n    /**\\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\\n     * allowance mechanism. `value` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\\n}\\n\",\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC20/utils/SafeERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC20} from \\\"../IERC20.sol\\\";\\nimport {IERC1363} from \\\"../../../interfaces/IERC1363.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    /**\\n     * @dev An operation with an ERC-20 token failed.\\n     */\\n    error SafeERC20FailedOperation(address token);\\n\\n    /**\\n     * @dev Indicates a failed `decreaseAllowance` request.\\n     */\\n    error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\\n     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\\n     */\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransfer} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransfer(IERC20 token, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transfer, (to, value)));\\n    }\\n\\n    /**\\n     * @dev Variant of {safeTransferFrom} that returns a bool instead of reverting if the operation is not successful.\\n     */\\n    function trySafeTransferFrom(IERC20 token, address from, address to, uint256 value) internal returns (bool) {\\n        return _callOptionalReturnBool(token, abi.encodeCall(token.transferFrom, (from, to, value)));\\n    }\\n\\n    /**\\n     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 oldAllowance = token.allowance(address(this), spender);\\n        forceApprove(token, spender, oldAllowance + value);\\n    }\\n\\n    /**\\n     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\\n     * value, non-reverting calls are assumed to be successful.\\n     *\\n     * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \\\"client\\\"\\n     * smart contract uses ERC-7674 to set temporary allowances, then the \\\"client\\\" smart contract should avoid using\\n     * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\\n     * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\\n     */\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\\n        unchecked {\\n            uint256 currentAllowance = token.allowance(address(this), spender);\\n            if (currentAllowance < requestedDecrease) {\\n                revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\\n            }\\n            forceApprove(token, spender, currentAllowance - requestedDecrease);\\n        }\\n    }\\n\\n    /**\\n     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\\n     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\\n     * to be set to zero before setting it to a non-zero value, such as USDT.\\n     *\\n     * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\\n     * only sets the \\\"standard\\\" allowance. Any temporary allowance will remain active, in addition to the value being\\n     * set here.\\n     */\\n    function forceApprove(IERC20 token, address spender, uint256 value) internal {\\n        bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\\n\\n        if (!_callOptionalReturnBool(token, approvalCall)) {\\n            _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\\n            _callOptionalReturn(token, approvalCall);\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            safeTransfer(token, to, value);\\n        } else if (!token.transferAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\\n     * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function transferFromAndCallRelaxed(\\n        IERC1363 token,\\n        address from,\\n        address to,\\n        uint256 value,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length == 0) {\\n            safeTransferFrom(token, from, to, value);\\n        } else if (!token.transferFromAndCall(from, to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\\n     * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\\n     * targeting contracts.\\n     *\\n     * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\\n     * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\\n     * once without retrying, and relies on the returned value to be true.\\n     *\\n     * Reverts if the returned value is other than `true`.\\n     */\\n    function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\\n        if (to.code.length == 0) {\\n            forceApprove(token, to, value);\\n        } else if (!token.approveAndCall(to, value, data)) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            // bubble errors\\n            if iszero(success) {\\n                let ptr := mload(0x40)\\n                returndatacopy(ptr, 0, returndatasize())\\n                revert(ptr, returndatasize())\\n            }\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n\\n        if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\\n            revert SafeERC20FailedOperation(address(token));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     *\\n     * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\\n     */\\n    function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\\n        bool success;\\n        uint256 returnSize;\\n        uint256 returnValue;\\n        assembly (\\\"memory-safe\\\") {\\n            success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\\n            returnSize := returndatasize()\\n            returnValue := mload(0)\\n        }\\n        return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\\n    }\\n}\\n\",\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"},\"contracts/SSG.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nimport {Ownable} from \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport {OFT} from \\\"@layerzerolabs/oft-evm/contracts/OFT.sol\\\";\\n\\ncontract SSG is OFT {\\n    uint256 public constant MAX_SUPPLY = 20_000_000 * 10 ** 18;\\n\\n    error MaxSupplyExceeded();\\n\\n    constructor(\\n        string memory _name,\\n        string memory _symbol,\\n        address _lzEndpoint,\\n        address _delegate\\n    ) OFT(_name, _symbol, _lzEndpoint, _delegate) Ownable(_delegate) {}\\n\\n    /**\\n     * @dev Mints new tokens to the specified address\\n     * @param _to The address to mint tokens to\\n     * @param _amount The amount of tokens to mint\\n     */\\n    function mint(address _to, uint256 _amount) external onlyOwner {\\n        if (totalSupply() + _amount > MAX_SUPPLY) {\\n            revert MaxSupplyExceeded();\\n        }\\n        _mint(_to, _amount);\\n    }\\n\\n    /**\\n     * @dev Override _credit method to enforce max supply limit during cross-chain transfers\\n     */\\n    function _credit(\\n        address _to,\\n        uint256 _amountLD,\\n        uint32 _srcEid\\n    ) internal virtual override returns (uint256 amountReceivedLD) {\\n        // Check if minting would exceed max supply\\n        if (totalSupply() + _amountLD > MAX_SUPPLY) {\\n            revert MaxSupplyExceeded();\\n        }\\n        return super._credit(_to, _amountLD, _srcEid);\\n    }\\n\\n    /**\\n     * @dev Override _update to enforce max supply limit for all minting operations\\n     * This is used by both _mint and cross-chain transfers\\n     */\\n    function _update(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual override {\\n        if (from == address(0) && totalSupply() + amount > MAX_SUPPLY) {\\n            revert MaxSupplyExceeded();\\n        }\\n        super._update(from, to, amount);\\n    }\\n}\\n\",\"keccak256\":\"0x09cd62f3dd093617eb00904f2ed00fdaccfdd6063bbd886a35ba9aa7cd9a858c\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":3841,"contract":"contracts/SSG.sol:SSG","label":"_owner","offset":0,"slot":"0","type":"t_address"},{"astId":1390,"contract":"contracts/SSG.sol:SSG","label":"peers","offset":0,"slot":"1","type":"t_mapping(t_uint32,t_bytes32)"},{"astId":2166,"contract":"contracts/SSG.sol:SSG","label":"preCrime","offset":0,"slot":"2","type":"t_address"},{"astId":2006,"contract":"contracts/SSG.sol:SSG","label":"enforcedOptions","offset":0,"slot":"3","type":"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))"},{"astId":2786,"contract":"contracts/SSG.sol:SSG","label":"msgInspector","offset":0,"slot":"4","type":"t_address"},{"astId":4272,"contract":"contracts/SSG.sol:SSG","label":"_balances","offset":0,"slot":"5","type":"t_mapping(t_address,t_uint256)"},{"astId":4278,"contract":"contracts/SSG.sol:SSG","label":"_allowances","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":4280,"contract":"contracts/SSG.sol:SSG","label":"_totalSupply","offset":0,"slot":"7","type":"t_uint256"},{"astId":4282,"contract":"contracts/SSG.sol:SSG","label":"_name","offset":0,"slot":"8","type":"t_string_storage"},{"astId":4284,"contract":"contracts/SSG.sol:SSG","label":"_symbol","offset":0,"slot":"9","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint16,t_bytes_storage)":{"encoding":"mapping","key":"t_uint16","label":"mapping(uint16 => bytes)","numberOfBytes":"32","value":"t_bytes_storage"},"t_mapping(t_uint32,t_bytes32)":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => bytes32)","numberOfBytes":"32","value":"t_bytes32"},"t_mapping(t_uint32,t_mapping(t_uint16,t_bytes_storage))":{"encoding":"mapping","key":"t_uint32","label":"mapping(uint32 => mapping(uint16 => bytes))","numberOfBytes":"32","value":"t_mapping(t_uint16,t_bytes_storage)"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint16":{"encoding":"inplace","label":"uint16","numberOfBytes":"2"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint32":{"encoding":"inplace","label":"uint32","numberOfBytes":"4"}}},"userdoc":{"kind":"user","methods":{"allowInitializePath((uint32,bytes32,uint64))":{"notice":"Checks if the path initialization is allowed based on the provided origin."},"approvalRequired()":{"notice":"Indicates whether the OFT contract requires approval of the 'token()' to send."},"combineOptions(uint32,uint16,bytes)":{"notice":"Combines options for a given endpoint and message type."},"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."},"nextNonce(uint32,bytes32)":{"notice":"Retrieves the next nonce for a given source endpoint and sender address."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"oftVersion()":{"notice":"Retrieves interfaceID and the version of the OFT."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"notice":"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation."},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"notice":"Provides a quote for the send() operation."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}},"contracts/UniqueNFT.sol":{"UniqueNFT":{"abi":[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721IncorrectOwner","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721InsufficientApproval","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC721InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"ERC721InvalidOperator","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC721InvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC721InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC721InvalidSender","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ERC721NonexistentToken","type":"error"},{"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":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toTokenId","type":"uint256"}],"name":"BatchMetadataUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"MetadataUpdate","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"string","name":"tokenURI","type":"string"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"errors":{"ERC721IncorrectOwner(address,uint256,address)":[{"details":"Indicates an error related to the ownership over a particular token. Used in transfers.","params":{"owner":"Address of the current owner of a token.","sender":"Address whose tokens are being transferred.","tokenId":"Identifier number of a token."}}],"ERC721InsufficientApproval(address,uint256)":[{"details":"Indicates a failure with the `operator`’s approval. Used in transfers.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner.","tokenId":"Identifier number of a token."}}],"ERC721InvalidApprover(address)":[{"details":"Indicates a failure with the `approver` of a token to be approved. Used in approvals.","params":{"approver":"Address initiating an approval operation."}}],"ERC721InvalidOperator(address)":[{"details":"Indicates a failure with the `operator` to be approved. Used in approvals.","params":{"operator":"Address that may be allowed to operate on tokens without being their owner."}}],"ERC721InvalidOwner(address)":[{"details":"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.","params":{"owner":"Address of the current owner of a token."}}],"ERC721InvalidReceiver(address)":[{"details":"Indicates a failure with the token `receiver`. Used in transfers.","params":{"receiver":"Address to which tokens are being transferred."}}],"ERC721InvalidSender(address)":[{"details":"Indicates a failure with the token `sender`. Used in transfers.","params":{"sender":"Address whose tokens are being transferred."}}],"ERC721NonexistentToken(uint256)":[{"details":"Indicates a `tokenId` whose `owner` is the zero address.","params":{"tokenId":"Identifier number of a token."}}],"OwnableInvalidOwner(address)":[{"details":"The owner is not a valid owner account. (eg. `address(0)`)"}],"OwnableUnauthorizedAccount(address)":[{"details":"The caller account is not authorized to perform an operation."}]},"events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"BatchMetadataUpdate(uint256,uint256)":{"details":"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs."},"MetadataUpdate(uint256)":{"details":"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"isMinted()":{"details":"检查NFT是否已经被铸造"},"mint(address,string)":{"details":"铸造唯一的NFT","params":{"recipient":"NFT接收者地址","tokenURI":"NFT的元数据URI"}},"name()":{"details":"See {IERC721Metadata-name}."},"owner()":{"details":"Returns the address of the current owner."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"renounceOwnership()":{"details":"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."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}"},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"totalSupply()":{"details":"返回当前铸造的NFT总数"},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_13326":{"entryPoint":null,"id":13326,"parameterSlots":1,"returnSlots":0},"@_3883":{"entryPoint":null,"id":3883,"parameterSlots":1,"returnSlots":0},"@_5402":{"entryPoint":null,"id":5402,"parameterSlots":2,"returnSlots":0},"@_transferOwnership_3979":{"entryPoint":219,"id":3979,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":301,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":429,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":508,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":371,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":349,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:3155:66","nodeType":"YulBlock","src":"0:3155:66","statements":[{"nativeSrc":"6:3:66","nodeType":"YulBlock","src":"6:3:66","statements":[]},{"body":{"nativeSrc":"95:209:66","nodeType":"YulBlock","src":"95:209:66","statements":[{"body":{"nativeSrc":"141:16:66","nodeType":"YulBlock","src":"141:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"150:1:66","nodeType":"YulLiteral","src":"150:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"153:1:66","nodeType":"YulLiteral","src":"153:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"143:6:66","nodeType":"YulIdentifier","src":"143:6:66"},"nativeSrc":"143:12:66","nodeType":"YulFunctionCall","src":"143:12:66"},"nativeSrc":"143:12:66","nodeType":"YulExpressionStatement","src":"143:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"116:7:66","nodeType":"YulIdentifier","src":"116:7:66"},{"name":"headStart","nativeSrc":"125:9:66","nodeType":"YulIdentifier","src":"125:9:66"}],"functionName":{"name":"sub","nativeSrc":"112:3:66","nodeType":"YulIdentifier","src":"112:3:66"},"nativeSrc":"112:23:66","nodeType":"YulFunctionCall","src":"112:23:66"},{"kind":"number","nativeSrc":"137:2:66","nodeType":"YulLiteral","src":"137:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"108:3:66","nodeType":"YulIdentifier","src":"108:3:66"},"nativeSrc":"108:32:66","nodeType":"YulFunctionCall","src":"108:32:66"},"nativeSrc":"105:52:66","nodeType":"YulIf","src":"105:52:66"},{"nativeSrc":"166:29:66","nodeType":"YulVariableDeclaration","src":"166:29:66","value":{"arguments":[{"name":"headStart","nativeSrc":"185:9:66","nodeType":"YulIdentifier","src":"185:9:66"}],"functionName":{"name":"mload","nativeSrc":"179:5:66","nodeType":"YulIdentifier","src":"179:5:66"},"nativeSrc":"179:16:66","nodeType":"YulFunctionCall","src":"179:16:66"},"variables":[{"name":"value","nativeSrc":"170:5:66","nodeType":"YulTypedName","src":"170:5:66","type":""}]},{"body":{"nativeSrc":"258:16:66","nodeType":"YulBlock","src":"258:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"267:1:66","nodeType":"YulLiteral","src":"267:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"270:1:66","nodeType":"YulLiteral","src":"270:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"260:6:66","nodeType":"YulIdentifier","src":"260:6:66"},"nativeSrc":"260:12:66","nodeType":"YulFunctionCall","src":"260:12:66"},"nativeSrc":"260:12:66","nodeType":"YulExpressionStatement","src":"260:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"217:5:66","nodeType":"YulIdentifier","src":"217:5:66"},{"arguments":[{"name":"value","nativeSrc":"228:5:66","nodeType":"YulIdentifier","src":"228:5:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"243:3:66","nodeType":"YulLiteral","src":"243:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"248:1:66","nodeType":"YulLiteral","src":"248:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"239:3:66","nodeType":"YulIdentifier","src":"239:3:66"},"nativeSrc":"239:11:66","nodeType":"YulFunctionCall","src":"239:11:66"},{"kind":"number","nativeSrc":"252:1:66","nodeType":"YulLiteral","src":"252:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"235:3:66","nodeType":"YulIdentifier","src":"235:3:66"},"nativeSrc":"235:19:66","nodeType":"YulFunctionCall","src":"235:19:66"}],"functionName":{"name":"and","nativeSrc":"224:3:66","nodeType":"YulIdentifier","src":"224:3:66"},"nativeSrc":"224:31:66","nodeType":"YulFunctionCall","src":"224:31:66"}],"functionName":{"name":"eq","nativeSrc":"214:2:66","nodeType":"YulIdentifier","src":"214:2:66"},"nativeSrc":"214:42:66","nodeType":"YulFunctionCall","src":"214:42:66"}],"functionName":{"name":"iszero","nativeSrc":"207:6:66","nodeType":"YulIdentifier","src":"207:6:66"},"nativeSrc":"207:50:66","nodeType":"YulFunctionCall","src":"207:50:66"},"nativeSrc":"204:70:66","nodeType":"YulIf","src":"204:70:66"},{"nativeSrc":"283:15:66","nodeType":"YulAssignment","src":"283:15:66","value":{"name":"value","nativeSrc":"293:5:66","nodeType":"YulIdentifier","src":"293:5:66"},"variableNames":[{"name":"value0","nativeSrc":"283:6:66","nodeType":"YulIdentifier","src":"283:6:66"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"14:290:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"61:9:66","nodeType":"YulTypedName","src":"61:9:66","type":""},{"name":"dataEnd","nativeSrc":"72:7:66","nodeType":"YulTypedName","src":"72:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"84:6:66","nodeType":"YulTypedName","src":"84:6:66","type":""}],"src":"14:290:66"},{"body":{"nativeSrc":"341:95:66","nodeType":"YulBlock","src":"341:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"358:1:66","nodeType":"YulLiteral","src":"358:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"365:3:66","nodeType":"YulLiteral","src":"365:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"370:10:66","nodeType":"YulLiteral","src":"370:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"361:3:66","nodeType":"YulIdentifier","src":"361:3:66"},"nativeSrc":"361:20:66","nodeType":"YulFunctionCall","src":"361:20:66"}],"functionName":{"name":"mstore","nativeSrc":"351:6:66","nodeType":"YulIdentifier","src":"351:6:66"},"nativeSrc":"351:31:66","nodeType":"YulFunctionCall","src":"351:31:66"},"nativeSrc":"351:31:66","nodeType":"YulExpressionStatement","src":"351:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"398:1:66","nodeType":"YulLiteral","src":"398:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"401:4:66","nodeType":"YulLiteral","src":"401:4:66","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"391:6:66","nodeType":"YulIdentifier","src":"391:6:66"},"nativeSrc":"391:15:66","nodeType":"YulFunctionCall","src":"391:15:66"},"nativeSrc":"391:15:66","nodeType":"YulExpressionStatement","src":"391:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"422:1:66","nodeType":"YulLiteral","src":"422:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"425:4:66","nodeType":"YulLiteral","src":"425:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"415:6:66","nodeType":"YulIdentifier","src":"415:6:66"},"nativeSrc":"415:15:66","nodeType":"YulFunctionCall","src":"415:15:66"},"nativeSrc":"415:15:66","nodeType":"YulExpressionStatement","src":"415:15:66"}]},"name":"panic_error_0x41","nativeSrc":"309:127:66","nodeType":"YulFunctionDefinition","src":"309:127:66"},{"body":{"nativeSrc":"496:325:66","nodeType":"YulBlock","src":"496:325:66","statements":[{"nativeSrc":"506:22:66","nodeType":"YulAssignment","src":"506:22:66","value":{"arguments":[{"kind":"number","nativeSrc":"520:1:66","nodeType":"YulLiteral","src":"520:1:66","type":"","value":"1"},{"name":"data","nativeSrc":"523:4:66","nodeType":"YulIdentifier","src":"523:4:66"}],"functionName":{"name":"shr","nativeSrc":"516:3:66","nodeType":"YulIdentifier","src":"516:3:66"},"nativeSrc":"516:12:66","nodeType":"YulFunctionCall","src":"516:12:66"},"variableNames":[{"name":"length","nativeSrc":"506:6:66","nodeType":"YulIdentifier","src":"506:6:66"}]},{"nativeSrc":"537:38:66","nodeType":"YulVariableDeclaration","src":"537:38:66","value":{"arguments":[{"name":"data","nativeSrc":"567:4:66","nodeType":"YulIdentifier","src":"567:4:66"},{"kind":"number","nativeSrc":"573:1:66","nodeType":"YulLiteral","src":"573:1:66","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"563:3:66","nodeType":"YulIdentifier","src":"563:3:66"},"nativeSrc":"563:12:66","nodeType":"YulFunctionCall","src":"563:12:66"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"541:18:66","nodeType":"YulTypedName","src":"541:18:66","type":""}]},{"body":{"nativeSrc":"614:31:66","nodeType":"YulBlock","src":"614:31:66","statements":[{"nativeSrc":"616:27:66","nodeType":"YulAssignment","src":"616:27:66","value":{"arguments":[{"name":"length","nativeSrc":"630:6:66","nodeType":"YulIdentifier","src":"630:6:66"},{"kind":"number","nativeSrc":"638:4:66","nodeType":"YulLiteral","src":"638:4:66","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"626:3:66","nodeType":"YulIdentifier","src":"626:3:66"},"nativeSrc":"626:17:66","nodeType":"YulFunctionCall","src":"626:17:66"},"variableNames":[{"name":"length","nativeSrc":"616:6:66","nodeType":"YulIdentifier","src":"616:6:66"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"594:18:66","nodeType":"YulIdentifier","src":"594:18:66"}],"functionName":{"name":"iszero","nativeSrc":"587:6:66","nodeType":"YulIdentifier","src":"587:6:66"},"nativeSrc":"587:26:66","nodeType":"YulFunctionCall","src":"587:26:66"},"nativeSrc":"584:61:66","nodeType":"YulIf","src":"584:61:66"},{"body":{"nativeSrc":"704:111:66","nodeType":"YulBlock","src":"704:111:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"725:1:66","nodeType":"YulLiteral","src":"725:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"732:3:66","nodeType":"YulLiteral","src":"732:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"737:10:66","nodeType":"YulLiteral","src":"737:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"728:3:66","nodeType":"YulIdentifier","src":"728:3:66"},"nativeSrc":"728:20:66","nodeType":"YulFunctionCall","src":"728:20:66"}],"functionName":{"name":"mstore","nativeSrc":"718:6:66","nodeType":"YulIdentifier","src":"718:6:66"},"nativeSrc":"718:31:66","nodeType":"YulFunctionCall","src":"718:31:66"},"nativeSrc":"718:31:66","nodeType":"YulExpressionStatement","src":"718:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"769:1:66","nodeType":"YulLiteral","src":"769:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"772:4:66","nodeType":"YulLiteral","src":"772:4:66","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"762:6:66","nodeType":"YulIdentifier","src":"762:6:66"},"nativeSrc":"762:15:66","nodeType":"YulFunctionCall","src":"762:15:66"},"nativeSrc":"762:15:66","nodeType":"YulExpressionStatement","src":"762:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"797:1:66","nodeType":"YulLiteral","src":"797:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"800:4:66","nodeType":"YulLiteral","src":"800:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"790:6:66","nodeType":"YulIdentifier","src":"790:6:66"},"nativeSrc":"790:15:66","nodeType":"YulFunctionCall","src":"790:15:66"},"nativeSrc":"790:15:66","nodeType":"YulExpressionStatement","src":"790:15:66"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"660:18:66","nodeType":"YulIdentifier","src":"660:18:66"},{"arguments":[{"name":"length","nativeSrc":"683:6:66","nodeType":"YulIdentifier","src":"683:6:66"},{"kind":"number","nativeSrc":"691:2:66","nodeType":"YulLiteral","src":"691:2:66","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"680:2:66","nodeType":"YulIdentifier","src":"680:2:66"},"nativeSrc":"680:14:66","nodeType":"YulFunctionCall","src":"680:14:66"}],"functionName":{"name":"eq","nativeSrc":"657:2:66","nodeType":"YulIdentifier","src":"657:2:66"},"nativeSrc":"657:38:66","nodeType":"YulFunctionCall","src":"657:38:66"},"nativeSrc":"654:161:66","nodeType":"YulIf","src":"654:161:66"}]},"name":"extract_byte_array_length","nativeSrc":"441:380:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"476:4:66","nodeType":"YulTypedName","src":"476:4:66","type":""}],"returnVariables":[{"name":"length","nativeSrc":"485:6:66","nodeType":"YulTypedName","src":"485:6:66","type":""}],"src":"441:380:66"},{"body":{"nativeSrc":"882:65:66","nodeType":"YulBlock","src":"882:65:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"899:1:66","nodeType":"YulLiteral","src":"899:1:66","type":"","value":"0"},{"name":"ptr","nativeSrc":"902:3:66","nodeType":"YulIdentifier","src":"902:3:66"}],"functionName":{"name":"mstore","nativeSrc":"892:6:66","nodeType":"YulIdentifier","src":"892:6:66"},"nativeSrc":"892:14:66","nodeType":"YulFunctionCall","src":"892:14:66"},"nativeSrc":"892:14:66","nodeType":"YulExpressionStatement","src":"892:14:66"},{"nativeSrc":"915:26:66","nodeType":"YulAssignment","src":"915:26:66","value":{"arguments":[{"kind":"number","nativeSrc":"933:1:66","nodeType":"YulLiteral","src":"933:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"936:4:66","nodeType":"YulLiteral","src":"936:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"923:9:66","nodeType":"YulIdentifier","src":"923:9:66"},"nativeSrc":"923:18:66","nodeType":"YulFunctionCall","src":"923:18:66"},"variableNames":[{"name":"data","nativeSrc":"915:4:66","nodeType":"YulIdentifier","src":"915:4:66"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"826:121:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"865:3:66","nodeType":"YulTypedName","src":"865:3:66","type":""}],"returnVariables":[{"name":"data","nativeSrc":"873:4:66","nodeType":"YulTypedName","src":"873:4:66","type":""}],"src":"826:121:66"},{"body":{"nativeSrc":"1033:437:66","nodeType":"YulBlock","src":"1033:437:66","statements":[{"body":{"nativeSrc":"1066:398:66","nodeType":"YulBlock","src":"1066:398:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1087:1:66","nodeType":"YulLiteral","src":"1087:1:66","type":"","value":"0"},{"name":"array","nativeSrc":"1090:5:66","nodeType":"YulIdentifier","src":"1090:5:66"}],"functionName":{"name":"mstore","nativeSrc":"1080:6:66","nodeType":"YulIdentifier","src":"1080:6:66"},"nativeSrc":"1080:16:66","nodeType":"YulFunctionCall","src":"1080:16:66"},"nativeSrc":"1080:16:66","nodeType":"YulExpressionStatement","src":"1080:16:66"},{"nativeSrc":"1109:30:66","nodeType":"YulVariableDeclaration","src":"1109:30:66","value":{"arguments":[{"kind":"number","nativeSrc":"1131:1:66","nodeType":"YulLiteral","src":"1131:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1134:4:66","nodeType":"YulLiteral","src":"1134:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"1121:9:66","nodeType":"YulIdentifier","src":"1121:9:66"},"nativeSrc":"1121:18:66","nodeType":"YulFunctionCall","src":"1121:18:66"},"variables":[{"name":"data","nativeSrc":"1113:4:66","nodeType":"YulTypedName","src":"1113:4:66","type":""}]},{"nativeSrc":"1152:57:66","nodeType":"YulVariableDeclaration","src":"1152:57:66","value":{"arguments":[{"name":"data","nativeSrc":"1175:4:66","nodeType":"YulIdentifier","src":"1175:4:66"},{"arguments":[{"kind":"number","nativeSrc":"1185:1:66","nodeType":"YulLiteral","src":"1185:1:66","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"1192:10:66","nodeType":"YulIdentifier","src":"1192:10:66"},{"kind":"number","nativeSrc":"1204:2:66","nodeType":"YulLiteral","src":"1204:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1188:3:66","nodeType":"YulIdentifier","src":"1188:3:66"},"nativeSrc":"1188:19:66","nodeType":"YulFunctionCall","src":"1188:19:66"}],"functionName":{"name":"shr","nativeSrc":"1181:3:66","nodeType":"YulIdentifier","src":"1181:3:66"},"nativeSrc":"1181:27:66","nodeType":"YulFunctionCall","src":"1181:27:66"}],"functionName":{"name":"add","nativeSrc":"1171:3:66","nodeType":"YulIdentifier","src":"1171:3:66"},"nativeSrc":"1171:38:66","nodeType":"YulFunctionCall","src":"1171:38:66"},"variables":[{"name":"deleteStart","nativeSrc":"1156:11:66","nodeType":"YulTypedName","src":"1156:11:66","type":""}]},{"body":{"nativeSrc":"1246:23:66","nodeType":"YulBlock","src":"1246:23:66","statements":[{"nativeSrc":"1248:19:66","nodeType":"YulAssignment","src":"1248:19:66","value":{"name":"data","nativeSrc":"1263:4:66","nodeType":"YulIdentifier","src":"1263:4:66"},"variableNames":[{"name":"deleteStart","nativeSrc":"1248:11:66","nodeType":"YulIdentifier","src":"1248:11:66"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"1228:10:66","nodeType":"YulIdentifier","src":"1228:10:66"},{"kind":"number","nativeSrc":"1240:4:66","nodeType":"YulLiteral","src":"1240:4:66","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"1225:2:66","nodeType":"YulIdentifier","src":"1225:2:66"},"nativeSrc":"1225:20:66","nodeType":"YulFunctionCall","src":"1225:20:66"},"nativeSrc":"1222:47:66","nodeType":"YulIf","src":"1222:47:66"},{"nativeSrc":"1282:41:66","nodeType":"YulVariableDeclaration","src":"1282:41:66","value":{"arguments":[{"name":"data","nativeSrc":"1296:4:66","nodeType":"YulIdentifier","src":"1296:4:66"},{"arguments":[{"kind":"number","nativeSrc":"1306:1:66","nodeType":"YulLiteral","src":"1306:1:66","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"1313:3:66","nodeType":"YulIdentifier","src":"1313:3:66"},{"kind":"number","nativeSrc":"1318:2:66","nodeType":"YulLiteral","src":"1318:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1309:3:66","nodeType":"YulIdentifier","src":"1309:3:66"},"nativeSrc":"1309:12:66","nodeType":"YulFunctionCall","src":"1309:12:66"}],"functionName":{"name":"shr","nativeSrc":"1302:3:66","nodeType":"YulIdentifier","src":"1302:3:66"},"nativeSrc":"1302:20:66","nodeType":"YulFunctionCall","src":"1302:20:66"}],"functionName":{"name":"add","nativeSrc":"1292:3:66","nodeType":"YulIdentifier","src":"1292:3:66"},"nativeSrc":"1292:31:66","nodeType":"YulFunctionCall","src":"1292:31:66"},"variables":[{"name":"_1","nativeSrc":"1286:2:66","nodeType":"YulTypedName","src":"1286:2:66","type":""}]},{"nativeSrc":"1336:24:66","nodeType":"YulVariableDeclaration","src":"1336:24:66","value":{"name":"deleteStart","nativeSrc":"1349:11:66","nodeType":"YulIdentifier","src":"1349:11:66"},"variables":[{"name":"start","nativeSrc":"1340:5:66","nodeType":"YulTypedName","src":"1340:5:66","type":""}]},{"body":{"nativeSrc":"1434:20:66","nodeType":"YulBlock","src":"1434:20:66","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"1443:5:66","nodeType":"YulIdentifier","src":"1443:5:66"},{"kind":"number","nativeSrc":"1450:1:66","nodeType":"YulLiteral","src":"1450:1:66","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"1436:6:66","nodeType":"YulIdentifier","src":"1436:6:66"},"nativeSrc":"1436:16:66","nodeType":"YulFunctionCall","src":"1436:16:66"},"nativeSrc":"1436:16:66","nodeType":"YulExpressionStatement","src":"1436:16:66"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"1384:5:66","nodeType":"YulIdentifier","src":"1384:5:66"},{"name":"_1","nativeSrc":"1391:2:66","nodeType":"YulIdentifier","src":"1391:2:66"}],"functionName":{"name":"lt","nativeSrc":"1381:2:66","nodeType":"YulIdentifier","src":"1381:2:66"},"nativeSrc":"1381:13:66","nodeType":"YulFunctionCall","src":"1381:13:66"},"nativeSrc":"1373:81:66","nodeType":"YulForLoop","post":{"nativeSrc":"1395:26:66","nodeType":"YulBlock","src":"1395:26:66","statements":[{"nativeSrc":"1397:22:66","nodeType":"YulAssignment","src":"1397:22:66","value":{"arguments":[{"name":"start","nativeSrc":"1410:5:66","nodeType":"YulIdentifier","src":"1410:5:66"},{"kind":"number","nativeSrc":"1417:1:66","nodeType":"YulLiteral","src":"1417:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"1406:3:66","nodeType":"YulIdentifier","src":"1406:3:66"},"nativeSrc":"1406:13:66","nodeType":"YulFunctionCall","src":"1406:13:66"},"variableNames":[{"name":"start","nativeSrc":"1397:5:66","nodeType":"YulIdentifier","src":"1397:5:66"}]}]},"pre":{"nativeSrc":"1377:3:66","nodeType":"YulBlock","src":"1377:3:66","statements":[]},"src":"1373:81:66"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"1049:3:66","nodeType":"YulIdentifier","src":"1049:3:66"},{"kind":"number","nativeSrc":"1054:2:66","nodeType":"YulLiteral","src":"1054:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"1046:2:66","nodeType":"YulIdentifier","src":"1046:2:66"},"nativeSrc":"1046:11:66","nodeType":"YulFunctionCall","src":"1046:11:66"},"nativeSrc":"1043:421:66","nodeType":"YulIf","src":"1043:421:66"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"952:518:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"1005:5:66","nodeType":"YulTypedName","src":"1005:5:66","type":""},{"name":"len","nativeSrc":"1012:3:66","nodeType":"YulTypedName","src":"1012:3:66","type":""},{"name":"startIndex","nativeSrc":"1017:10:66","nodeType":"YulTypedName","src":"1017:10:66","type":""}],"src":"952:518:66"},{"body":{"nativeSrc":"1560:81:66","nodeType":"YulBlock","src":"1560:81:66","statements":[{"nativeSrc":"1570:65:66","nodeType":"YulAssignment","src":"1570:65:66","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"1585:4:66","nodeType":"YulIdentifier","src":"1585:4:66"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1603:1:66","nodeType":"YulLiteral","src":"1603:1:66","type":"","value":"3"},{"name":"len","nativeSrc":"1606:3:66","nodeType":"YulIdentifier","src":"1606:3:66"}],"functionName":{"name":"shl","nativeSrc":"1599:3:66","nodeType":"YulIdentifier","src":"1599:3:66"},"nativeSrc":"1599:11:66","nodeType":"YulFunctionCall","src":"1599:11:66"},{"arguments":[{"kind":"number","nativeSrc":"1616:1:66","nodeType":"YulLiteral","src":"1616:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"1612:3:66","nodeType":"YulIdentifier","src":"1612:3:66"},"nativeSrc":"1612:6:66","nodeType":"YulFunctionCall","src":"1612:6:66"}],"functionName":{"name":"shr","nativeSrc":"1595:3:66","nodeType":"YulIdentifier","src":"1595:3:66"},"nativeSrc":"1595:24:66","nodeType":"YulFunctionCall","src":"1595:24:66"}],"functionName":{"name":"not","nativeSrc":"1591:3:66","nodeType":"YulIdentifier","src":"1591:3:66"},"nativeSrc":"1591:29:66","nodeType":"YulFunctionCall","src":"1591:29:66"}],"functionName":{"name":"and","nativeSrc":"1581:3:66","nodeType":"YulIdentifier","src":"1581:3:66"},"nativeSrc":"1581:40:66","nodeType":"YulFunctionCall","src":"1581:40:66"},{"arguments":[{"kind":"number","nativeSrc":"1627:1:66","nodeType":"YulLiteral","src":"1627:1:66","type":"","value":"1"},{"name":"len","nativeSrc":"1630:3:66","nodeType":"YulIdentifier","src":"1630:3:66"}],"functionName":{"name":"shl","nativeSrc":"1623:3:66","nodeType":"YulIdentifier","src":"1623:3:66"},"nativeSrc":"1623:11:66","nodeType":"YulFunctionCall","src":"1623:11:66"}],"functionName":{"name":"or","nativeSrc":"1578:2:66","nodeType":"YulIdentifier","src":"1578:2:66"},"nativeSrc":"1578:57:66","nodeType":"YulFunctionCall","src":"1578:57:66"},"variableNames":[{"name":"used","nativeSrc":"1570:4:66","nodeType":"YulIdentifier","src":"1570:4:66"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"1475:166:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"1537:4:66","nodeType":"YulTypedName","src":"1537:4:66","type":""},{"name":"len","nativeSrc":"1543:3:66","nodeType":"YulTypedName","src":"1543:3:66","type":""}],"returnVariables":[{"name":"used","nativeSrc":"1551:4:66","nodeType":"YulTypedName","src":"1551:4:66","type":""}],"src":"1475:166:66"},{"body":{"nativeSrc":"1742:1203:66","nodeType":"YulBlock","src":"1742:1203:66","statements":[{"nativeSrc":"1752:24:66","nodeType":"YulVariableDeclaration","src":"1752:24:66","value":{"arguments":[{"name":"src","nativeSrc":"1772:3:66","nodeType":"YulIdentifier","src":"1772:3:66"}],"functionName":{"name":"mload","nativeSrc":"1766:5:66","nodeType":"YulIdentifier","src":"1766:5:66"},"nativeSrc":"1766:10:66","nodeType":"YulFunctionCall","src":"1766:10:66"},"variables":[{"name":"newLen","nativeSrc":"1756:6:66","nodeType":"YulTypedName","src":"1756:6:66","type":""}]},{"body":{"nativeSrc":"1819:22:66","nodeType":"YulBlock","src":"1819:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1821:16:66","nodeType":"YulIdentifier","src":"1821:16:66"},"nativeSrc":"1821:18:66","nodeType":"YulFunctionCall","src":"1821:18:66"},"nativeSrc":"1821:18:66","nodeType":"YulExpressionStatement","src":"1821:18:66"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"1791:6:66","nodeType":"YulIdentifier","src":"1791:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1807:2:66","nodeType":"YulLiteral","src":"1807:2:66","type":"","value":"64"},{"kind":"number","nativeSrc":"1811:1:66","nodeType":"YulLiteral","src":"1811:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1803:3:66","nodeType":"YulIdentifier","src":"1803:3:66"},"nativeSrc":"1803:10:66","nodeType":"YulFunctionCall","src":"1803:10:66"},{"kind":"number","nativeSrc":"1815:1:66","nodeType":"YulLiteral","src":"1815:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1799:3:66","nodeType":"YulIdentifier","src":"1799:3:66"},"nativeSrc":"1799:18:66","nodeType":"YulFunctionCall","src":"1799:18:66"}],"functionName":{"name":"gt","nativeSrc":"1788:2:66","nodeType":"YulIdentifier","src":"1788:2:66"},"nativeSrc":"1788:30:66","nodeType":"YulFunctionCall","src":"1788:30:66"},"nativeSrc":"1785:56:66","nodeType":"YulIf","src":"1785:56:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"1894:4:66","nodeType":"YulIdentifier","src":"1894:4:66"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"1932:4:66","nodeType":"YulIdentifier","src":"1932:4:66"}],"functionName":{"name":"sload","nativeSrc":"1926:5:66","nodeType":"YulIdentifier","src":"1926:5:66"},"nativeSrc":"1926:11:66","nodeType":"YulFunctionCall","src":"1926:11:66"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"1900:25:66","nodeType":"YulIdentifier","src":"1900:25:66"},"nativeSrc":"1900:38:66","nodeType":"YulFunctionCall","src":"1900:38:66"},{"name":"newLen","nativeSrc":"1940:6:66","nodeType":"YulIdentifier","src":"1940:6:66"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"1850:43:66","nodeType":"YulIdentifier","src":"1850:43:66"},"nativeSrc":"1850:97:66","nodeType":"YulFunctionCall","src":"1850:97:66"},"nativeSrc":"1850:97:66","nodeType":"YulExpressionStatement","src":"1850:97:66"},{"nativeSrc":"1956:18:66","nodeType":"YulVariableDeclaration","src":"1956:18:66","value":{"kind":"number","nativeSrc":"1973:1:66","nodeType":"YulLiteral","src":"1973:1:66","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"1960:9:66","nodeType":"YulTypedName","src":"1960:9:66","type":""}]},{"nativeSrc":"1983:17:66","nodeType":"YulAssignment","src":"1983:17:66","value":{"kind":"number","nativeSrc":"1996:4:66","nodeType":"YulLiteral","src":"1996:4:66","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"1983:9:66","nodeType":"YulIdentifier","src":"1983:9:66"}]},{"cases":[{"body":{"nativeSrc":"2046:642:66","nodeType":"YulBlock","src":"2046:642:66","statements":[{"nativeSrc":"2060:35:66","nodeType":"YulVariableDeclaration","src":"2060:35:66","value":{"arguments":[{"name":"newLen","nativeSrc":"2079:6:66","nodeType":"YulIdentifier","src":"2079:6:66"},{"arguments":[{"kind":"number","nativeSrc":"2091:2:66","nodeType":"YulLiteral","src":"2091:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2087:3:66","nodeType":"YulIdentifier","src":"2087:3:66"},"nativeSrc":"2087:7:66","nodeType":"YulFunctionCall","src":"2087:7:66"}],"functionName":{"name":"and","nativeSrc":"2075:3:66","nodeType":"YulIdentifier","src":"2075:3:66"},"nativeSrc":"2075:20:66","nodeType":"YulFunctionCall","src":"2075:20:66"},"variables":[{"name":"loopEnd","nativeSrc":"2064:7:66","nodeType":"YulTypedName","src":"2064:7:66","type":""}]},{"nativeSrc":"2108:49:66","nodeType":"YulVariableDeclaration","src":"2108:49:66","value":{"arguments":[{"name":"slot","nativeSrc":"2152:4:66","nodeType":"YulIdentifier","src":"2152:4:66"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"2122:29:66","nodeType":"YulIdentifier","src":"2122:29:66"},"nativeSrc":"2122:35:66","nodeType":"YulFunctionCall","src":"2122:35:66"},"variables":[{"name":"dstPtr","nativeSrc":"2112:6:66","nodeType":"YulTypedName","src":"2112:6:66","type":""}]},{"nativeSrc":"2170:10:66","nodeType":"YulVariableDeclaration","src":"2170:10:66","value":{"kind":"number","nativeSrc":"2179:1:66","nodeType":"YulLiteral","src":"2179:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"2174:1:66","nodeType":"YulTypedName","src":"2174:1:66","type":""}]},{"body":{"nativeSrc":"2250:165:66","nodeType":"YulBlock","src":"2250:165:66","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"2275:6:66","nodeType":"YulIdentifier","src":"2275:6:66"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"2293:3:66","nodeType":"YulIdentifier","src":"2293:3:66"},{"name":"srcOffset","nativeSrc":"2298:9:66","nodeType":"YulIdentifier","src":"2298:9:66"}],"functionName":{"name":"add","nativeSrc":"2289:3:66","nodeType":"YulIdentifier","src":"2289:3:66"},"nativeSrc":"2289:19:66","nodeType":"YulFunctionCall","src":"2289:19:66"}],"functionName":{"name":"mload","nativeSrc":"2283:5:66","nodeType":"YulIdentifier","src":"2283:5:66"},"nativeSrc":"2283:26:66","nodeType":"YulFunctionCall","src":"2283:26:66"}],"functionName":{"name":"sstore","nativeSrc":"2268:6:66","nodeType":"YulIdentifier","src":"2268:6:66"},"nativeSrc":"2268:42:66","nodeType":"YulFunctionCall","src":"2268:42:66"},"nativeSrc":"2268:42:66","nodeType":"YulExpressionStatement","src":"2268:42:66"},{"nativeSrc":"2327:24:66","nodeType":"YulAssignment","src":"2327:24:66","value":{"arguments":[{"name":"dstPtr","nativeSrc":"2341:6:66","nodeType":"YulIdentifier","src":"2341:6:66"},{"kind":"number","nativeSrc":"2349:1:66","nodeType":"YulLiteral","src":"2349:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2337:3:66","nodeType":"YulIdentifier","src":"2337:3:66"},"nativeSrc":"2337:14:66","nodeType":"YulFunctionCall","src":"2337:14:66"},"variableNames":[{"name":"dstPtr","nativeSrc":"2327:6:66","nodeType":"YulIdentifier","src":"2327:6:66"}]},{"nativeSrc":"2368:33:66","nodeType":"YulAssignment","src":"2368:33:66","value":{"arguments":[{"name":"srcOffset","nativeSrc":"2385:9:66","nodeType":"YulIdentifier","src":"2385:9:66"},{"kind":"number","nativeSrc":"2396:4:66","nodeType":"YulLiteral","src":"2396:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2381:3:66","nodeType":"YulIdentifier","src":"2381:3:66"},"nativeSrc":"2381:20:66","nodeType":"YulFunctionCall","src":"2381:20:66"},"variableNames":[{"name":"srcOffset","nativeSrc":"2368:9:66","nodeType":"YulIdentifier","src":"2368:9:66"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"2204:1:66","nodeType":"YulIdentifier","src":"2204:1:66"},{"name":"loopEnd","nativeSrc":"2207:7:66","nodeType":"YulIdentifier","src":"2207:7:66"}],"functionName":{"name":"lt","nativeSrc":"2201:2:66","nodeType":"YulIdentifier","src":"2201:2:66"},"nativeSrc":"2201:14:66","nodeType":"YulFunctionCall","src":"2201:14:66"},"nativeSrc":"2193:222:66","nodeType":"YulForLoop","post":{"nativeSrc":"2216:21:66","nodeType":"YulBlock","src":"2216:21:66","statements":[{"nativeSrc":"2218:17:66","nodeType":"YulAssignment","src":"2218:17:66","value":{"arguments":[{"name":"i","nativeSrc":"2227:1:66","nodeType":"YulIdentifier","src":"2227:1:66"},{"kind":"number","nativeSrc":"2230:4:66","nodeType":"YulLiteral","src":"2230:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2223:3:66","nodeType":"YulIdentifier","src":"2223:3:66"},"nativeSrc":"2223:12:66","nodeType":"YulFunctionCall","src":"2223:12:66"},"variableNames":[{"name":"i","nativeSrc":"2218:1:66","nodeType":"YulIdentifier","src":"2218:1:66"}]}]},"pre":{"nativeSrc":"2197:3:66","nodeType":"YulBlock","src":"2197:3:66","statements":[]},"src":"2193:222:66"},{"body":{"nativeSrc":"2463:166:66","nodeType":"YulBlock","src":"2463:166:66","statements":[{"nativeSrc":"2481:43:66","nodeType":"YulVariableDeclaration","src":"2481:43:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"2508:3:66","nodeType":"YulIdentifier","src":"2508:3:66"},{"name":"srcOffset","nativeSrc":"2513:9:66","nodeType":"YulIdentifier","src":"2513:9:66"}],"functionName":{"name":"add","nativeSrc":"2504:3:66","nodeType":"YulIdentifier","src":"2504:3:66"},"nativeSrc":"2504:19:66","nodeType":"YulFunctionCall","src":"2504:19:66"}],"functionName":{"name":"mload","nativeSrc":"2498:5:66","nodeType":"YulIdentifier","src":"2498:5:66"},"nativeSrc":"2498:26:66","nodeType":"YulFunctionCall","src":"2498:26:66"},"variables":[{"name":"lastValue","nativeSrc":"2485:9:66","nodeType":"YulTypedName","src":"2485:9:66","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"2548:6:66","nodeType":"YulIdentifier","src":"2548:6:66"},{"arguments":[{"name":"lastValue","nativeSrc":"2560:9:66","nodeType":"YulIdentifier","src":"2560:9:66"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2587:1:66","nodeType":"YulLiteral","src":"2587:1:66","type":"","value":"3"},{"name":"newLen","nativeSrc":"2590:6:66","nodeType":"YulIdentifier","src":"2590:6:66"}],"functionName":{"name":"shl","nativeSrc":"2583:3:66","nodeType":"YulIdentifier","src":"2583:3:66"},"nativeSrc":"2583:14:66","nodeType":"YulFunctionCall","src":"2583:14:66"},{"kind":"number","nativeSrc":"2599:3:66","nodeType":"YulLiteral","src":"2599:3:66","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"2579:3:66","nodeType":"YulIdentifier","src":"2579:3:66"},"nativeSrc":"2579:24:66","nodeType":"YulFunctionCall","src":"2579:24:66"},{"arguments":[{"kind":"number","nativeSrc":"2609:1:66","nodeType":"YulLiteral","src":"2609:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"2605:3:66","nodeType":"YulIdentifier","src":"2605:3:66"},"nativeSrc":"2605:6:66","nodeType":"YulFunctionCall","src":"2605:6:66"}],"functionName":{"name":"shr","nativeSrc":"2575:3:66","nodeType":"YulIdentifier","src":"2575:3:66"},"nativeSrc":"2575:37:66","nodeType":"YulFunctionCall","src":"2575:37:66"}],"functionName":{"name":"not","nativeSrc":"2571:3:66","nodeType":"YulIdentifier","src":"2571:3:66"},"nativeSrc":"2571:42:66","nodeType":"YulFunctionCall","src":"2571:42:66"}],"functionName":{"name":"and","nativeSrc":"2556:3:66","nodeType":"YulIdentifier","src":"2556:3:66"},"nativeSrc":"2556:58:66","nodeType":"YulFunctionCall","src":"2556:58:66"}],"functionName":{"name":"sstore","nativeSrc":"2541:6:66","nodeType":"YulIdentifier","src":"2541:6:66"},"nativeSrc":"2541:74:66","nodeType":"YulFunctionCall","src":"2541:74:66"},"nativeSrc":"2541:74:66","nodeType":"YulExpressionStatement","src":"2541:74:66"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"2434:7:66","nodeType":"YulIdentifier","src":"2434:7:66"},{"name":"newLen","nativeSrc":"2443:6:66","nodeType":"YulIdentifier","src":"2443:6:66"}],"functionName":{"name":"lt","nativeSrc":"2431:2:66","nodeType":"YulIdentifier","src":"2431:2:66"},"nativeSrc":"2431:19:66","nodeType":"YulFunctionCall","src":"2431:19:66"},"nativeSrc":"2428:201:66","nodeType":"YulIf","src":"2428:201:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"2649:4:66","nodeType":"YulIdentifier","src":"2649:4:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2663:1:66","nodeType":"YulLiteral","src":"2663:1:66","type":"","value":"1"},{"name":"newLen","nativeSrc":"2666:6:66","nodeType":"YulIdentifier","src":"2666:6:66"}],"functionName":{"name":"shl","nativeSrc":"2659:3:66","nodeType":"YulIdentifier","src":"2659:3:66"},"nativeSrc":"2659:14:66","nodeType":"YulFunctionCall","src":"2659:14:66"},{"kind":"number","nativeSrc":"2675:1:66","nodeType":"YulLiteral","src":"2675:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"2655:3:66","nodeType":"YulIdentifier","src":"2655:3:66"},"nativeSrc":"2655:22:66","nodeType":"YulFunctionCall","src":"2655:22:66"}],"functionName":{"name":"sstore","nativeSrc":"2642:6:66","nodeType":"YulIdentifier","src":"2642:6:66"},"nativeSrc":"2642:36:66","nodeType":"YulFunctionCall","src":"2642:36:66"},"nativeSrc":"2642:36:66","nodeType":"YulExpressionStatement","src":"2642:36:66"}]},"nativeSrc":"2039:649:66","nodeType":"YulCase","src":"2039:649:66","value":{"kind":"number","nativeSrc":"2044:1:66","nodeType":"YulLiteral","src":"2044:1:66","type":"","value":"1"}},{"body":{"nativeSrc":"2705:234:66","nodeType":"YulBlock","src":"2705:234:66","statements":[{"nativeSrc":"2719:14:66","nodeType":"YulVariableDeclaration","src":"2719:14:66","value":{"kind":"number","nativeSrc":"2732:1:66","nodeType":"YulLiteral","src":"2732:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2723:5:66","nodeType":"YulTypedName","src":"2723:5:66","type":""}]},{"body":{"nativeSrc":"2768:67:66","nodeType":"YulBlock","src":"2768:67:66","statements":[{"nativeSrc":"2786:35:66","nodeType":"YulAssignment","src":"2786:35:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"2805:3:66","nodeType":"YulIdentifier","src":"2805:3:66"},{"name":"srcOffset","nativeSrc":"2810:9:66","nodeType":"YulIdentifier","src":"2810:9:66"}],"functionName":{"name":"add","nativeSrc":"2801:3:66","nodeType":"YulIdentifier","src":"2801:3:66"},"nativeSrc":"2801:19:66","nodeType":"YulFunctionCall","src":"2801:19:66"}],"functionName":{"name":"mload","nativeSrc":"2795:5:66","nodeType":"YulIdentifier","src":"2795:5:66"},"nativeSrc":"2795:26:66","nodeType":"YulFunctionCall","src":"2795:26:66"},"variableNames":[{"name":"value","nativeSrc":"2786:5:66","nodeType":"YulIdentifier","src":"2786:5:66"}]}]},"condition":{"name":"newLen","nativeSrc":"2749:6:66","nodeType":"YulIdentifier","src":"2749:6:66"},"nativeSrc":"2746:89:66","nodeType":"YulIf","src":"2746:89:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"2855:4:66","nodeType":"YulIdentifier","src":"2855:4:66"},{"arguments":[{"name":"value","nativeSrc":"2914:5:66","nodeType":"YulIdentifier","src":"2914:5:66"},{"name":"newLen","nativeSrc":"2921:6:66","nodeType":"YulIdentifier","src":"2921:6:66"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"2861:52:66","nodeType":"YulIdentifier","src":"2861:52:66"},"nativeSrc":"2861:67:66","nodeType":"YulFunctionCall","src":"2861:67:66"}],"functionName":{"name":"sstore","nativeSrc":"2848:6:66","nodeType":"YulIdentifier","src":"2848:6:66"},"nativeSrc":"2848:81:66","nodeType":"YulFunctionCall","src":"2848:81:66"},"nativeSrc":"2848:81:66","nodeType":"YulExpressionStatement","src":"2848:81:66"}]},"nativeSrc":"2697:242:66","nodeType":"YulCase","src":"2697:242:66","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"2019:6:66","nodeType":"YulIdentifier","src":"2019:6:66"},{"kind":"number","nativeSrc":"2027:2:66","nodeType":"YulLiteral","src":"2027:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"2016:2:66","nodeType":"YulIdentifier","src":"2016:2:66"},"nativeSrc":"2016:14:66","nodeType":"YulFunctionCall","src":"2016:14:66"},"nativeSrc":"2009:930:66","nodeType":"YulSwitch","src":"2009:930:66"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"1646:1299:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"1727:4:66","nodeType":"YulTypedName","src":"1727:4:66","type":""},{"name":"src","nativeSrc":"1733:3:66","nodeType":"YulTypedName","src":"1733:3:66","type":""}],"src":"1646:1299:66"},{"body":{"nativeSrc":"3051:102:66","nodeType":"YulBlock","src":"3051:102:66","statements":[{"nativeSrc":"3061:26:66","nodeType":"YulAssignment","src":"3061:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"3073:9:66","nodeType":"YulIdentifier","src":"3073:9:66"},{"kind":"number","nativeSrc":"3084:2:66","nodeType":"YulLiteral","src":"3084:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3069:3:66","nodeType":"YulIdentifier","src":"3069:3:66"},"nativeSrc":"3069:18:66","nodeType":"YulFunctionCall","src":"3069:18:66"},"variableNames":[{"name":"tail","nativeSrc":"3061:4:66","nodeType":"YulIdentifier","src":"3061:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3103:9:66","nodeType":"YulIdentifier","src":"3103:9:66"},{"arguments":[{"name":"value0","nativeSrc":"3118:6:66","nodeType":"YulIdentifier","src":"3118:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"3134:3:66","nodeType":"YulLiteral","src":"3134:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"3139:1:66","nodeType":"YulLiteral","src":"3139:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"3130:3:66","nodeType":"YulIdentifier","src":"3130:3:66"},"nativeSrc":"3130:11:66","nodeType":"YulFunctionCall","src":"3130:11:66"},{"kind":"number","nativeSrc":"3143:1:66","nodeType":"YulLiteral","src":"3143:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"3126:3:66","nodeType":"YulIdentifier","src":"3126:3:66"},"nativeSrc":"3126:19:66","nodeType":"YulFunctionCall","src":"3126:19:66"}],"functionName":{"name":"and","nativeSrc":"3114:3:66","nodeType":"YulIdentifier","src":"3114:3:66"},"nativeSrc":"3114:32:66","nodeType":"YulFunctionCall","src":"3114:32:66"}],"functionName":{"name":"mstore","nativeSrc":"3096:6:66","nodeType":"YulIdentifier","src":"3096:6:66"},"nativeSrc":"3096:51:66","nodeType":"YulFunctionCall","src":"3096:51:66"},"nativeSrc":"3096:51:66","nodeType":"YulExpressionStatement","src":"3096:51:66"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"2950:203:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3020:9:66","nodeType":"YulTypedName","src":"3020:9:66","type":""},{"name":"value0","nativeSrc":"3031:6:66","nodeType":"YulTypedName","src":"3031:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3042:4:66","nodeType":"YulTypedName","src":"3042:4:66","type":""}],"src":"2950:203:66"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n}","id":66,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b506040516117ee3803806117ee83398101604081905261002f9161012d565b8060405180604001604052806009815260200168155b9a5c5d5953919560ba1b815250604051806040016040528060048152602001631553919560e21b815250816000908161007e91906101fc565b50600161008b82826101fc565b5050506001600160a01b0381166100bc57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100c5816100db565b505060006008556009805460ff191690556102ba565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006020828403121561013f57600080fd5b81516001600160a01b038116811461015657600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061018757607f821691505b6020821081036101a757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101f757806000526020600020601f840160051c810160208510156101d45750805b601f840160051c820191505b818110156101f457600081556001016101e0565b50505b505050565b81516001600160401b038111156102155761021561015d565b610229816102238454610173565b846101ad565b6020601f82116001811461025d57600083156102455750848201515b600019600385901b1c1916600184901b1784556101f4565b600084815260208120601f198516915b8281101561028d578785015182556020948501946001909201910161026d565b50848210156102ab5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b611525806102c96000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063b88d4fde11610071578063b88d4fde14610240578063c87b56dd14610253578063d0def52114610266578063e985e9c514610279578063f2fde38b1461028c57600080fd5b806370a08231146101f9578063715018a61461020c5780638da5cb5b1461021457806395d89b4114610225578063a22cb4651461022d57600080fd5b806318160ddd116100f457806318160ddd146101a357806323b872dd146101b557806336ae5040146101c857806342842e0e146101d35780636352211e146101e657600080fd5b806301ffc9a71461012657806306fdde031461014e578063081812fc14610163578063095ea7b31461018e575b600080fd5b610139610134366004610ff1565b61029f565b60405190151581526020015b60405180910390f35b6101566102ca565b604051610145919061105e565b610176610171366004611071565b61035c565b6040516001600160a01b039091168152602001610145565b6101a161019c3660046110a6565b610385565b005b6008545b604051908152602001610145565b6101a16101c33660046110d0565b610394565b60095460ff16610139565b6101a16101e13660046110d0565b610424565b6101766101f4366004611071565b610444565b6101a761020736600461110d565b61044f565b6101a1610497565b6007546001600160a01b0316610176565b6101566104ab565b6101a161023b366004611128565b6104ba565b6101a161024e3660046111f4565b6104c5565b610156610261366004611071565b6104dd565b6101a7610274366004611270565b6105ee565b6101396102873660046112d2565b610703565b6101a161029a36600461110d565b610731565b60006001600160e01b03198216632483248360e11b14806102c457506102c48261076f565b92915050565b6060600080546102d990611305565b80601f016020809104026020016040519081016040528092919081815260200182805461030590611305565b80156103525780601f1061032757610100808354040283529160200191610352565b820191906000526020600020905b81548152906001019060200180831161033557829003601f168201915b5050505050905090565b6000610367826107bf565b506000828152600460205260409020546001600160a01b03166102c4565b6103908282336107f8565b5050565b6001600160a01b0382166103c357604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103d0838333610805565b9050836001600160a01b0316816001600160a01b03161461041e576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103ba565b50505050565b61043f838383604051806020016040528060008152506104c5565b505050565b60006102c4826107bf565b60006001600160a01b03821661047b576040516322718ad960e21b8152600060048201526024016103ba565b506001600160a01b031660009081526003602052604090205490565b61049f6108fe565b6104a9600061092b565b565b6060600180546102d990611305565b61039033838361097d565b6104d0848484610394565b61041e3385858585610a1c565b60606104e8826107bf565b506000828152600660205260408120805461050290611305565b80601f016020809104026020016040519081016040528092919081815260200182805461052e90611305565b801561057b5780601f106105505761010080835404028352916020019161057b565b820191906000526020600020905b81548152906001019060200180831161055e57829003601f168201915b50505050509050600061059960408051602081019091526000815290565b905080516000036105ab575092915050565b8151156105dd5780826040516020016105c592919061133f565b60405160208183030381529060405292505050919050565b6105e684610b47565b949350505050565b60006105f86108fe565b60095460ff16156106635760405162461bcd60e51b815260206004820152602f60248201527f556e697175654e46543a20546865206f6e6c79204e46542068617320616c726560448201526e18591e481899595b881b5a5b9d1959608a1b60648201526084016103ba565b6001600854106106bf5760405162461bcd60e51b815260206004820152602160248201527f556e697175654e46543a204d6178696d756d20737570706c79207265616368656044820152601960fa1b60648201526084016103ba565b6008546106cc8482610bbc565b6106d68184610bd6565b6001600860008282546106e9919061136e565b90915550506009805460ff19166001179055905092915050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6107396108fe565b6001600160a01b03811661076357604051631e4fbdf760e01b8152600060048201526024016103ba565b61076c8161092b565b50565b60006001600160e01b031982166380ac58cd60e01b14806107a057506001600160e01b03198216635b5e139f60e01b145b806102c457506301ffc9a760e01b6001600160e01b03198316146102c4565b6000818152600260205260408120546001600160a01b0316806102c457604051637e27328960e01b8152600481018490526024016103ba565b61043f8383836001610c26565b6000828152600260205260408120546001600160a01b039081169083161561083257610832818486610d2c565b6001600160a01b038116156108705761084f600085600080610c26565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561089f576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6007546001600160a01b031633146104a95760405163118cdaa760e01b81523360048201526024016103ba565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166109af57604051630b61174360e31b81526001600160a01b03831660048201526024016103ba565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610b4057604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610a5e90889088908790879060040161138f565b6020604051808303816000875af1925050508015610a99575060408051601f3d908101601f19168201909252610a96918101906113cc565b60015b610b02573d808015610ac7576040519150601f19603f3d011682016040523d82523d6000602084013e610acc565b606091505b508051600003610afa57604051633250574960e11b81526001600160a01b03851660048201526024016103ba565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610b3e57604051633250574960e11b81526001600160a01b03851660048201526024016103ba565b505b5050505050565b6060610b52826107bf565b506000610b6a60408051602081019091526000815290565b90506000815111610b8a5760405180602001604052806000815250610bb5565b80610b9484610d90565b604051602001610ba592919061133f565b6040516020818303038152906040525b9392505050565b610390828260405180602001604052806000815250610e23565b6000828152600660205260409020610bee8282611430565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b8080610c3a57506001600160a01b03821615155b15610cfc576000610c4a846107bf565b90506001600160a01b03831615801590610c765750826001600160a01b0316816001600160a01b031614155b8015610c895750610c878184610703565b155b15610cb25760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103ba565b8115610cfa5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610d37838383610e3b565b61043f576001600160a01b038316610d6557604051637e27328960e01b8152600481018290526024016103ba565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103ba565b60606000610d9d83610e9e565b600101905060008167ffffffffffffffff811115610dbd57610dbd611164565b6040519080825280601f01601f191660200182016040528015610de7576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610df157509392505050565b610e2d8383610f76565b61043f336000858585610a1c565b60006001600160a01b038316158015906105e65750826001600160a01b0316846001600160a01b03161480610e755750610e758484610703565b806105e65750506000908152600460205260409020546001600160a01b03908116911614919050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610edd5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610f09576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610f2757662386f26fc10000830492506010015b6305f5e1008310610f3f576305f5e100830492506008015b6127108310610f5357612710830492506004015b60648310610f65576064830492506002015b600a83106102c45760010192915050565b6001600160a01b038216610fa057604051633250574960e11b8152600060048201526024016103ba565b6000610fae83836000610805565b90506001600160a01b0381161561043f576040516339e3563760e11b8152600060048201526024016103ba565b6001600160e01b03198116811461076c57600080fd5b60006020828403121561100357600080fd5b8135610bb581610fdb565b60005b83811015611029578181015183820152602001611011565b50506000910152565b6000815180845261104a81602086016020860161100e565b601f01601f19169290920160200192915050565b602081526000610bb56020830184611032565b60006020828403121561108357600080fd5b5035919050565b80356001600160a01b03811681146110a157600080fd5b919050565b600080604083850312156110b957600080fd5b6110c28361108a565b946020939093013593505050565b6000806000606084860312156110e557600080fd5b6110ee8461108a565b92506110fc6020850161108a565b929592945050506040919091013590565b60006020828403121561111f57600080fd5b610bb58261108a565b6000806040838503121561113b57600080fd5b6111448361108a565b91506020830135801515811461115957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008067ffffffffffffffff84111561119557611195611164565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156111c4576111c4611164565b6040528381529050808284018510156111dc57600080fd5b83836020830137600060208583010152509392505050565b6000806000806080858703121561120a57600080fd5b6112138561108a565b93506112216020860161108a565b925060408501359150606085013567ffffffffffffffff81111561124457600080fd5b8501601f8101871361125557600080fd5b6112648782356020840161117a565b91505092959194509250565b6000806040838503121561128357600080fd5b61128c8361108a565b9150602083013567ffffffffffffffff8111156112a857600080fd5b8301601f810185136112b957600080fd5b6112c88582356020840161117a565b9150509250929050565b600080604083850312156112e557600080fd5b6112ee8361108a565b91506112fc6020840161108a565b90509250929050565b600181811c9082168061131957607f821691505b60208210810361133957634e487b7160e01b600052602260045260246000fd5b50919050565b6000835161135181846020880161100e565b83519083019061136581836020880161100e565b01949350505050565b808201808211156102c457634e487b7160e01b600052601160045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906113c290830184611032565b9695505050505050565b6000602082840312156113de57600080fd5b8151610bb581610fdb565b601f82111561043f57806000526020600020601f840160051c810160208510156114105750805b601f840160051c820191505b81811015610b40576000815560010161141c565b815167ffffffffffffffff81111561144a5761144a611164565b61145e816114588454611305565b846113e9565b6020601f821160018114611492576000831561147a5750848201515b600019600385901b1c1916600184901b178455610b40565b600084815260208120601f198516915b828110156114c257878501518255602094850194600190920191016114a2565b50848210156114e05786840151600019600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220c31df74f3673a60309abee9f5f7d151ceba9b6e3201800381e94aba236150a9c64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x17EE CODESIZE SUB DUP1 PUSH2 0x17EE DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x12D JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH9 0x155B9A5C5D59539195 PUSH1 0xBA SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0x15539195 PUSH1 0xE2 SHL DUP2 MSTORE POP DUP2 PUSH1 0x0 SWAP1 DUP2 PUSH2 0x7E SWAP2 SWAP1 PUSH2 0x1FC JUMP JUMPDEST POP PUSH1 0x1 PUSH2 0x8B DUP3 DUP3 PUSH2 0x1FC JUMP JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xBC JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC5 DUP2 PUSH2 0xDB JUMP JUMPDEST POP POP PUSH1 0x0 PUSH1 0x8 SSTORE PUSH1 0x9 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x2BA JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x187 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1A7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1F7 JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1D4 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1E0 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x215 JUMPI PUSH2 0x215 PUSH2 0x15D JUMP JUMPDEST PUSH2 0x229 DUP2 PUSH2 0x223 DUP5 SLOAD PUSH2 0x173 JUMP JUMPDEST DUP5 PUSH2 0x1AD JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x25D JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x245 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0x1F4 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x28D JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x26D JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x2AB JUMPI DUP7 DUP5 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x1525 DUP1 PUSH2 0x2C9 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x121 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0xD0DEF521 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x28C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x36AE5040 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x18E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x139 PUSH2 0x134 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x156 PUSH2 0x2CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x105E JUMP JUMPDEST PUSH2 0x176 PUSH2 0x171 CALLDATASIZE PUSH1 0x4 PUSH2 0x1071 JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x19C CALLDATASIZE PUSH1 0x4 PUSH2 0x10A6 JUMP JUMPDEST PUSH2 0x385 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x8 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x1C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D0 JUMP JUMPDEST PUSH2 0x394 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0xFF AND PUSH2 0x139 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x1E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D0 JUMP JUMPDEST PUSH2 0x424 JUMP JUMPDEST PUSH2 0x176 PUSH2 0x1F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1071 JUMP JUMPDEST PUSH2 0x444 JUMP JUMPDEST PUSH2 0x1A7 PUSH2 0x207 CALLDATASIZE PUSH1 0x4 PUSH2 0x110D JUMP JUMPDEST PUSH2 0x44F JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x497 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x176 JUMP JUMPDEST PUSH2 0x156 PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0x1128 JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x24E CALLDATASIZE PUSH1 0x4 PUSH2 0x11F4 JUMP JUMPDEST PUSH2 0x4C5 JUMP JUMPDEST PUSH2 0x156 PUSH2 0x261 CALLDATASIZE PUSH1 0x4 PUSH2 0x1071 JUMP JUMPDEST PUSH2 0x4DD JUMP JUMPDEST PUSH2 0x1A7 PUSH2 0x274 CALLDATASIZE PUSH1 0x4 PUSH2 0x1270 JUMP JUMPDEST PUSH2 0x5EE JUMP JUMPDEST PUSH2 0x139 PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0x12D2 JUMP JUMPDEST PUSH2 0x703 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x29A CALLDATASIZE PUSH1 0x4 PUSH2 0x110D JUMP JUMPDEST PUSH2 0x731 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x24832483 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x2C4 JUMPI POP PUSH2 0x2C4 DUP3 PUSH2 0x76F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x2D9 SWAP1 PUSH2 0x1305 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x305 SWAP1 PUSH2 0x1305 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x352 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x327 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x352 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x335 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x367 DUP3 PUSH2 0x7BF JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C4 JUMP JUMPDEST PUSH2 0x390 DUP3 DUP3 CALLER PUSH2 0x7F8 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3C3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3D0 DUP4 DUP4 CALLER PUSH2 0x805 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x41E JUMPI PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3BA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x43F DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x4C5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C4 DUP3 PUSH2 0x7BF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x47B JUMPI PUSH1 0x40 MLOAD PUSH4 0x22718AD9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x49F PUSH2 0x8FE JUMP JUMPDEST PUSH2 0x4A9 PUSH1 0x0 PUSH2 0x92B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x2D9 SWAP1 PUSH2 0x1305 JUMP JUMPDEST PUSH2 0x390 CALLER DUP4 DUP4 PUSH2 0x97D JUMP JUMPDEST PUSH2 0x4D0 DUP5 DUP5 DUP5 PUSH2 0x394 JUMP JUMPDEST PUSH2 0x41E CALLER DUP6 DUP6 DUP6 DUP6 PUSH2 0xA1C JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E8 DUP3 PUSH2 0x7BF JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0x502 SWAP1 PUSH2 0x1305 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x52E SWAP1 PUSH2 0x1305 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x57B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x550 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x55E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0x599 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x5AB JUMPI POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x5DD JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5C5 SWAP3 SWAP2 SWAP1 PUSH2 0x133F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5E6 DUP5 PUSH2 0xB47 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F8 PUSH2 0x8FE JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x663 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697175654E46543A20546865206F6E6C79204E46542068617320616C7265 PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x18591E481899595B881B5A5B9D1959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x8 SLOAD LT PUSH2 0x6BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697175654E46543A204D6178696D756D20737570706C7920726561636865 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0xFA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x6CC DUP5 DUP3 PUSH2 0xBBC JUMP JUMPDEST PUSH2 0x6D6 DUP2 DUP5 PUSH2 0xBD6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6E9 SWAP2 SWAP1 PUSH2 0x136E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x9 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x739 PUSH2 0x8FE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x763 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH2 0x76C DUP2 PUSH2 0x92B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x7A0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2C4 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x2C4 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x2C4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH2 0x43F DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0xC26 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP1 DUP4 AND ISZERO PUSH2 0x832 JUMPI PUSH2 0x832 DUP2 DUP5 DUP7 PUSH2 0xD2C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x870 JUMPI PUSH2 0x84F PUSH1 0x0 DUP6 PUSH1 0x0 DUP1 PUSH2 0xC26 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x89F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP8 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x4A9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x9AF JUMPI PUSH1 0x40 MLOAD PUSH4 0xB611743 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0xB40 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xA5E SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x138F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xA99 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xA96 SWAP2 DUP2 ADD SWAP1 PUSH2 0x13CC JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xB02 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xAC7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xACC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ PUSH2 0xB3E JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xB52 DUP3 PUSH2 0x7BF JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xB6A PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0xB8A JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xBB5 JUMP JUMPDEST DUP1 PUSH2 0xB94 DUP5 PUSH2 0xD90 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBA5 SWAP3 SWAP2 SWAP1 PUSH2 0x133F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x390 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xE23 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xBEE DUP3 DUP3 PUSH2 0x1430 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH32 0xF8E1A15ABA9398E019F0B49DF1A4FDE98EE17AE345CB5F6B5E2C27F5033E8CE7 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST DUP1 DUP1 PUSH2 0xC3A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xCFC JUMPI PUSH1 0x0 PUSH2 0xC4A DUP5 PUSH2 0x7BF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xC76 JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xC89 JUMPI POP PUSH2 0xC87 DUP2 DUP5 PUSH2 0x703 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xCB2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST DUP2 ISZERO PUSH2 0xCFA JUMPI DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD37 DUP4 DUP4 DUP4 PUSH2 0xE3B JUMP JUMPDEST PUSH2 0x43F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xD65 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x177E802F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xD9D DUP4 PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDBD JUMPI PUSH2 0xDBD PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xDE7 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xDF1 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE2D DUP4 DUP4 PUSH2 0xF76 JUMP JUMPDEST PUSH2 0x43F CALLER PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0xA1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5E6 JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xE75 JUMPI POP PUSH2 0xE75 DUP5 DUP5 PUSH2 0x703 JUMP JUMPDEST DUP1 PUSH2 0x5E6 JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0xEDD JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0xF09 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0xF27 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0xF3F JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0xF53 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0xF65 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x2C4 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xFA0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFAE DUP4 DUP4 PUSH1 0x0 PUSH2 0x805 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x43F JUMPI PUSH1 0x40 MLOAD PUSH4 0x39E35637 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x76C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1003 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xBB5 DUP2 PUSH2 0xFDB JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1029 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1011 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x104A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x100E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xBB5 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1032 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1083 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x10A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10C2 DUP4 PUSH2 0x108A JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x10E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10EE DUP5 PUSH2 0x108A JUMP JUMPDEST SWAP3 POP PUSH2 0x10FC PUSH1 0x20 DUP6 ADD PUSH2 0x108A JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x111F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB5 DUP3 PUSH2 0x108A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x113B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1144 DUP4 PUSH2 0x108A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT ISZERO PUSH2 0x1195 JUMPI PUSH2 0x1195 PUSH2 0x1164 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x11C4 JUMPI PUSH2 0x11C4 PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE SWAP1 POP DUP1 DUP3 DUP5 ADD DUP6 LT ISZERO PUSH2 0x11DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP4 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x120A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1213 DUP6 PUSH2 0x108A JUMP JUMPDEST SWAP4 POP PUSH2 0x1221 PUSH1 0x20 DUP7 ADD PUSH2 0x108A JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x1255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1264 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x117A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x128C DUP4 PUSH2 0x108A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x12B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12C8 DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x117A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12EE DUP4 PUSH2 0x108A JUMP JUMPDEST SWAP2 POP PUSH2 0x12FC PUSH1 0x20 DUP5 ADD PUSH2 0x108A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1319 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1339 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1351 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x100E JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1365 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x100E JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2C4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x13C2 SWAP1 DUP4 ADD DUP5 PUSH2 0x1032 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xBB5 DUP2 PUSH2 0xFDB JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x43F JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1410 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB40 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x141C JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x144A JUMPI PUSH2 0x144A PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x145E DUP2 PUSH2 0x1458 DUP5 SLOAD PUSH2 0x1305 JUMP JUMPDEST DUP5 PUSH2 0x13E9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x1492 JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x147A JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0xB40 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x14C2 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x14A2 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x14E0 JUMPI DUP7 DUP5 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC3 SAR 0xF7 0x4F CALLDATASIZE PUSH20 0xA60309ABEE9F5F7D151CEBA9B6E3201800381E94 0xAB LOG2 CALLDATASIZE ISZERO EXP SWAP13 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"249:1401:62:-:0;;;522:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;606:12;1380:113:40;;;;;;;;;;;;;-1:-1:-1;;;1380:113:40;;;;;;;;;;;;;;;;-1:-1:-1;;;1380:113:40;;;1454:5;1446;:13;;;;;;:::i;:::-;-1:-1:-1;1469:7:40;:17;1479:7;1469;:17;:::i;:::-;-1:-1:-1;;;;;;;;1273:26:28;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:28;;1350:1;1322:31;;;3096:51:66;3069:18;;1322:31:28;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;;648:1:62::2;630:15;:19:::0;659:9:::2;:17:::0;;-1:-1:-1;;659:17:62::2;::::0;;249:1401;;2912:187:28;3004:6;;;-1:-1:-1;;;;;3020:17:28;;;-1:-1:-1;;;;;;3020:17:28;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;14:290:66:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:66;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:66:o;309:127::-;370:10;365:3;361:20;358:1;351:31;401:4;398:1;391:15;425:4;422:1;415:15;441:380;520:1;516:12;;;;563;;;584:61;;638:4;630:6;626:17;616:27;;584:61;691:2;683:6;680:14;660:18;657:38;654:161;;737:10;732:3;728:20;725:1;718:31;772:4;769:1;762:15;800:4;797:1;790:15;654:161;;441:380;;;:::o;952:518::-;1054:2;1049:3;1046:11;1043:421;;;1090:5;1087:1;1080:16;1134:4;1131:1;1121:18;1204:2;1192:10;1188:19;1185:1;1181:27;1175:4;1171:38;1240:4;1228:10;1225:20;1222:47;;;-1:-1:-1;1263:4:66;1222:47;1318:2;1313:3;1309:12;1306:1;1302:20;1296:4;1292:31;1282:41;;1373:81;1391:2;1384:5;1381:13;1373:81;;;1450:1;1436:16;;1417:1;1406:13;1373:81;;;1377:3;;1043:421;952:518;;;:::o;1646:1299::-;1766:10;;-1:-1:-1;;;;;1788:30:66;;1785:56;;;1821:18;;:::i;:::-;1850:97;1940:6;1900:38;1932:4;1926:11;1900:38;:::i;:::-;1894:4;1850:97;:::i;:::-;1996:4;2027:2;2016:14;;2044:1;2039:649;;;;2732:1;2749:6;2746:89;;;-1:-1:-1;2801:19:66;;;2795:26;2746:89;-1:-1:-1;;1603:1:66;1599:11;;;1595:24;1591:29;1581:40;1627:1;1623:11;;;1578:57;2848:81;;2009:930;;2039:649;899:1;892:14;;;936:4;923:18;;-1:-1:-1;;2075:20:66;;;2193:222;2207:7;2204:1;2201:14;2193:222;;;2289:19;;;2283:26;2268:42;;2396:4;2381:20;;;;2349:1;2337:14;;;;2223:12;2193:222;;;2197:3;2443:6;2434:7;2431:19;2428:201;;;2504:19;;;2498:26;-1:-1:-1;;2587:1:66;2583:14;;;2599:3;2579:24;2575:37;2571:42;2556:58;2541:74;;2428:201;-1:-1:-1;;;;2675:1:66;2659:14;;;2655:22;2642:36;;-1:-1:-1;1646:1299:66:o;2950:203::-;249:1401:62;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_approve_6156":{"entryPoint":2040,"id":6156,"parameterSlots":3,"returnSlots":0},"@_approve_6222":{"entryPoint":3110,"id":6222,"parameterSlots":4,"returnSlots":0},"@_baseURI_5537":{"entryPoint":null,"id":5537,"parameterSlots":0,"returnSlots":1},"@_checkAuthorized_5796":{"entryPoint":3372,"id":5796,"parameterSlots":3,"returnSlots":0},"@_checkOwner_3917":{"entryPoint":2302,"id":3917,"parameterSlots":0,"returnSlots":0},"@_getApproved_5723":{"entryPoint":null,"id":5723,"parameterSlots":1,"returnSlots":1},"@_isAuthorized_5759":{"entryPoint":3643,"id":5759,"parameterSlots":3,"returnSlots":1},"@_mint_5952":{"entryPoint":3958,"id":5952,"parameterSlots":2,"returnSlots":0},"@_msgSender_6667":{"entryPoint":null,"id":6667,"parameterSlots":0,"returnSlots":1},"@_ownerOf_5710":{"entryPoint":null,"id":5710,"parameterSlots":1,"returnSlots":1},"@_requireOwned_6288":{"entryPoint":1983,"id":6288,"parameterSlots":1,"returnSlots":1},"@_safeMint_5967":{"entryPoint":3004,"id":5967,"parameterSlots":2,"returnSlots":0},"@_safeMint_5997":{"entryPoint":3619,"id":5997,"parameterSlots":3,"returnSlots":0},"@_setApprovalForAll_6259":{"entryPoint":2429,"id":6259,"parameterSlots":3,"returnSlots":0},"@_setTokenURI_6549":{"entryPoint":3030,"id":6549,"parameterSlots":2,"returnSlots":0},"@_transferOwnership_3979":{"entryPoint":2347,"id":3979,"parameterSlots":1,"returnSlots":0},"@_update_5902":{"entryPoint":2053,"id":5902,"parameterSlots":3,"returnSlots":1},"@approve_5553":{"entryPoint":901,"id":5553,"parameterSlots":2,"returnSlots":0},"@balanceOf_5461":{"entryPoint":1103,"id":5461,"parameterSlots":1,"returnSlots":1},"@checkOnERC721Received_6654":{"entryPoint":2588,"id":6654,"parameterSlots":5,"returnSlots":0},"@getApproved_5570":{"entryPoint":860,"id":5570,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_5603":{"entryPoint":1795,"id":5603,"parameterSlots":2,"returnSlots":1},"@isMinted_13394":{"entryPoint":null,"id":13394,"parameterSlots":0,"returnSlots":1},"@log10_10084":{"entryPoint":3742,"id":10084,"parameterSlots":1,"returnSlots":1},"@mint_13376":{"entryPoint":1518,"id":13376,"parameterSlots":2,"returnSlots":1},"@name_5483":{"entryPoint":714,"id":5483,"parameterSlots":0,"returnSlots":1},"@ownerOf_5474":{"entryPoint":1092,"id":5474,"parameterSlots":1,"returnSlots":1},"@owner_3900":{"entryPoint":null,"id":3900,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_3931":{"entryPoint":1175,"id":3931,"parameterSlots":0,"returnSlots":0},"@safeTransferFrom_5667":{"entryPoint":1060,"id":5667,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_5697":{"entryPoint":1221,"id":5697,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_5586":{"entryPoint":1210,"id":5586,"parameterSlots":2,"returnSlots":0},"@supportsInterface_5433":{"entryPoint":1903,"id":5433,"parameterSlots":1,"returnSlots":1},"@supportsInterface_6473":{"entryPoint":671,"id":6473,"parameterSlots":1,"returnSlots":1},"@supportsInterface_8618":{"entryPoint":null,"id":8618,"parameterSlots":1,"returnSlots":1},"@symbol_5492":{"entryPoint":1195,"id":5492,"parameterSlots":0,"returnSlots":1},"@toString_6851":{"entryPoint":3472,"id":6851,"parameterSlots":1,"returnSlots":1},"@tokenURI_5528":{"entryPoint":2887,"id":5528,"parameterSlots":1,"returnSlots":1},"@tokenURI_6530":{"entryPoint":1245,"id":6530,"parameterSlots":1,"returnSlots":1},"@totalSupply_13385":{"entryPoint":null,"id":13385,"parameterSlots":0,"returnSlots":1},"@transferFrom_5649":{"entryPoint":916,"id":5649,"parameterSlots":3,"returnSlots":0},"@transferOwnership_3959":{"entryPoint":1841,"id":3959,"parameterSlots":1,"returnSlots":0},"abi_decode_address":{"entryPoint":4234,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_available_length_bytes":{"entryPoint":4474,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4365,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":4818,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":4304,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":4596,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":4392,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_string_memory_ptr":{"entryPoint":4720,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":4262,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":4081,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":5068,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":4209,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":4146,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4927,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":5007,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4190,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1273b4ad278fd53b35fe872e354cdd577d65adcb7b1d095e4baf15f107084221__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_d8f036579390a0987d4ad9019af725baa50b0e5d7c04e2e356c36b1f83b2da03__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":4974,"id":null,"parameterSlots":2,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":5097,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":5168,"id":null,"parameterSlots":2,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":4110,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":4869,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x12":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":4452,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":4059,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:11320:66","nodeType":"YulBlock","src":"0:11320:66","statements":[{"nativeSrc":"6:3:66","nodeType":"YulBlock","src":"6:3:66","statements":[]},{"body":{"nativeSrc":"58:87:66","nodeType":"YulBlock","src":"58:87:66","statements":[{"body":{"nativeSrc":"123:16:66","nodeType":"YulBlock","src":"123:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"132:1:66","nodeType":"YulLiteral","src":"132:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"135:1:66","nodeType":"YulLiteral","src":"135:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"125:6:66","nodeType":"YulIdentifier","src":"125:6:66"},"nativeSrc":"125:12:66","nodeType":"YulFunctionCall","src":"125:12:66"},"nativeSrc":"125:12:66","nodeType":"YulExpressionStatement","src":"125:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"81:5:66","nodeType":"YulIdentifier","src":"81:5:66"},{"arguments":[{"name":"value","nativeSrc":"92:5:66","nodeType":"YulIdentifier","src":"92:5:66"},{"arguments":[{"kind":"number","nativeSrc":"103:3:66","nodeType":"YulLiteral","src":"103:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"108:10:66","nodeType":"YulLiteral","src":"108:10:66","type":"","value":"0xffffffff"}],"functionName":{"name":"shl","nativeSrc":"99:3:66","nodeType":"YulIdentifier","src":"99:3:66"},"nativeSrc":"99:20:66","nodeType":"YulFunctionCall","src":"99:20:66"}],"functionName":{"name":"and","nativeSrc":"88:3:66","nodeType":"YulIdentifier","src":"88:3:66"},"nativeSrc":"88:32:66","nodeType":"YulFunctionCall","src":"88:32:66"}],"functionName":{"name":"eq","nativeSrc":"78:2:66","nodeType":"YulIdentifier","src":"78:2:66"},"nativeSrc":"78:43:66","nodeType":"YulFunctionCall","src":"78:43:66"}],"functionName":{"name":"iszero","nativeSrc":"71:6:66","nodeType":"YulIdentifier","src":"71:6:66"},"nativeSrc":"71:51:66","nodeType":"YulFunctionCall","src":"71:51:66"},"nativeSrc":"68:71:66","nodeType":"YulIf","src":"68:71:66"}]},"name":"validator_revert_bytes4","nativeSrc":"14:131:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"47:5:66","nodeType":"YulTypedName","src":"47:5:66","type":""}],"src":"14:131:66"},{"body":{"nativeSrc":"219:176:66","nodeType":"YulBlock","src":"219:176:66","statements":[{"body":{"nativeSrc":"265:16:66","nodeType":"YulBlock","src":"265:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"274:1:66","nodeType":"YulLiteral","src":"274:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"277:1:66","nodeType":"YulLiteral","src":"277:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"267:6:66","nodeType":"YulIdentifier","src":"267:6:66"},"nativeSrc":"267:12:66","nodeType":"YulFunctionCall","src":"267:12:66"},"nativeSrc":"267:12:66","nodeType":"YulExpressionStatement","src":"267:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"240:7:66","nodeType":"YulIdentifier","src":"240:7:66"},{"name":"headStart","nativeSrc":"249:9:66","nodeType":"YulIdentifier","src":"249:9:66"}],"functionName":{"name":"sub","nativeSrc":"236:3:66","nodeType":"YulIdentifier","src":"236:3:66"},"nativeSrc":"236:23:66","nodeType":"YulFunctionCall","src":"236:23:66"},{"kind":"number","nativeSrc":"261:2:66","nodeType":"YulLiteral","src":"261:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"232:3:66","nodeType":"YulIdentifier","src":"232:3:66"},"nativeSrc":"232:32:66","nodeType":"YulFunctionCall","src":"232:32:66"},"nativeSrc":"229:52:66","nodeType":"YulIf","src":"229:52:66"},{"nativeSrc":"290:36:66","nodeType":"YulVariableDeclaration","src":"290:36:66","value":{"arguments":[{"name":"headStart","nativeSrc":"316:9:66","nodeType":"YulIdentifier","src":"316:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"303:12:66","nodeType":"YulIdentifier","src":"303:12:66"},"nativeSrc":"303:23:66","nodeType":"YulFunctionCall","src":"303:23:66"},"variables":[{"name":"value","nativeSrc":"294:5:66","nodeType":"YulTypedName","src":"294:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"359:5:66","nodeType":"YulIdentifier","src":"359:5:66"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"335:23:66","nodeType":"YulIdentifier","src":"335:23:66"},"nativeSrc":"335:30:66","nodeType":"YulFunctionCall","src":"335:30:66"},"nativeSrc":"335:30:66","nodeType":"YulExpressionStatement","src":"335:30:66"},{"nativeSrc":"374:15:66","nodeType":"YulAssignment","src":"374:15:66","value":{"name":"value","nativeSrc":"384:5:66","nodeType":"YulIdentifier","src":"384:5:66"},"variableNames":[{"name":"value0","nativeSrc":"374:6:66","nodeType":"YulIdentifier","src":"374:6:66"}]}]},"name":"abi_decode_tuple_t_bytes4","nativeSrc":"150:245:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"185:9:66","nodeType":"YulTypedName","src":"185:9:66","type":""},{"name":"dataEnd","nativeSrc":"196:7:66","nodeType":"YulTypedName","src":"196:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"208:6:66","nodeType":"YulTypedName","src":"208:6:66","type":""}],"src":"150:245:66"},{"body":{"nativeSrc":"495:92:66","nodeType":"YulBlock","src":"495:92:66","statements":[{"nativeSrc":"505:26:66","nodeType":"YulAssignment","src":"505:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"517:9:66","nodeType":"YulIdentifier","src":"517:9:66"},{"kind":"number","nativeSrc":"528:2:66","nodeType":"YulLiteral","src":"528:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"513:3:66","nodeType":"YulIdentifier","src":"513:3:66"},"nativeSrc":"513:18:66","nodeType":"YulFunctionCall","src":"513:18:66"},"variableNames":[{"name":"tail","nativeSrc":"505:4:66","nodeType":"YulIdentifier","src":"505:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"547:9:66","nodeType":"YulIdentifier","src":"547:9:66"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"572:6:66","nodeType":"YulIdentifier","src":"572:6:66"}],"functionName":{"name":"iszero","nativeSrc":"565:6:66","nodeType":"YulIdentifier","src":"565:6:66"},"nativeSrc":"565:14:66","nodeType":"YulFunctionCall","src":"565:14:66"}],"functionName":{"name":"iszero","nativeSrc":"558:6:66","nodeType":"YulIdentifier","src":"558:6:66"},"nativeSrc":"558:22:66","nodeType":"YulFunctionCall","src":"558:22:66"}],"functionName":{"name":"mstore","nativeSrc":"540:6:66","nodeType":"YulIdentifier","src":"540:6:66"},"nativeSrc":"540:41:66","nodeType":"YulFunctionCall","src":"540:41:66"},"nativeSrc":"540:41:66","nodeType":"YulExpressionStatement","src":"540:41:66"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"400:187:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"464:9:66","nodeType":"YulTypedName","src":"464:9:66","type":""},{"name":"value0","nativeSrc":"475:6:66","nodeType":"YulTypedName","src":"475:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"486:4:66","nodeType":"YulTypedName","src":"486:4:66","type":""}],"src":"400:187:66"},{"body":{"nativeSrc":"658:184:66","nodeType":"YulBlock","src":"658:184:66","statements":[{"nativeSrc":"668:10:66","nodeType":"YulVariableDeclaration","src":"668:10:66","value":{"kind":"number","nativeSrc":"677:1:66","nodeType":"YulLiteral","src":"677:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"672:1:66","nodeType":"YulTypedName","src":"672:1:66","type":""}]},{"body":{"nativeSrc":"737:63:66","nodeType":"YulBlock","src":"737:63:66","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"762:3:66","nodeType":"YulIdentifier","src":"762:3:66"},{"name":"i","nativeSrc":"767:1:66","nodeType":"YulIdentifier","src":"767:1:66"}],"functionName":{"name":"add","nativeSrc":"758:3:66","nodeType":"YulIdentifier","src":"758:3:66"},"nativeSrc":"758:11:66","nodeType":"YulFunctionCall","src":"758:11:66"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"781:3:66","nodeType":"YulIdentifier","src":"781:3:66"},{"name":"i","nativeSrc":"786:1:66","nodeType":"YulIdentifier","src":"786:1:66"}],"functionName":{"name":"add","nativeSrc":"777:3:66","nodeType":"YulIdentifier","src":"777:3:66"},"nativeSrc":"777:11:66","nodeType":"YulFunctionCall","src":"777:11:66"}],"functionName":{"name":"mload","nativeSrc":"771:5:66","nodeType":"YulIdentifier","src":"771:5:66"},"nativeSrc":"771:18:66","nodeType":"YulFunctionCall","src":"771:18:66"}],"functionName":{"name":"mstore","nativeSrc":"751:6:66","nodeType":"YulIdentifier","src":"751:6:66"},"nativeSrc":"751:39:66","nodeType":"YulFunctionCall","src":"751:39:66"},"nativeSrc":"751:39:66","nodeType":"YulExpressionStatement","src":"751:39:66"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"698:1:66","nodeType":"YulIdentifier","src":"698:1:66"},{"name":"length","nativeSrc":"701:6:66","nodeType":"YulIdentifier","src":"701:6:66"}],"functionName":{"name":"lt","nativeSrc":"695:2:66","nodeType":"YulIdentifier","src":"695:2:66"},"nativeSrc":"695:13:66","nodeType":"YulFunctionCall","src":"695:13:66"},"nativeSrc":"687:113:66","nodeType":"YulForLoop","post":{"nativeSrc":"709:19:66","nodeType":"YulBlock","src":"709:19:66","statements":[{"nativeSrc":"711:15:66","nodeType":"YulAssignment","src":"711:15:66","value":{"arguments":[{"name":"i","nativeSrc":"720:1:66","nodeType":"YulIdentifier","src":"720:1:66"},{"kind":"number","nativeSrc":"723:2:66","nodeType":"YulLiteral","src":"723:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"716:3:66","nodeType":"YulIdentifier","src":"716:3:66"},"nativeSrc":"716:10:66","nodeType":"YulFunctionCall","src":"716:10:66"},"variableNames":[{"name":"i","nativeSrc":"711:1:66","nodeType":"YulIdentifier","src":"711:1:66"}]}]},"pre":{"nativeSrc":"691:3:66","nodeType":"YulBlock","src":"691:3:66","statements":[]},"src":"687:113:66"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"820:3:66","nodeType":"YulIdentifier","src":"820:3:66"},{"name":"length","nativeSrc":"825:6:66","nodeType":"YulIdentifier","src":"825:6:66"}],"functionName":{"name":"add","nativeSrc":"816:3:66","nodeType":"YulIdentifier","src":"816:3:66"},"nativeSrc":"816:16:66","nodeType":"YulFunctionCall","src":"816:16:66"},{"kind":"number","nativeSrc":"834:1:66","nodeType":"YulLiteral","src":"834:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"809:6:66","nodeType":"YulIdentifier","src":"809:6:66"},"nativeSrc":"809:27:66","nodeType":"YulFunctionCall","src":"809:27:66"},"nativeSrc":"809:27:66","nodeType":"YulExpressionStatement","src":"809:27:66"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"592:250:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"636:3:66","nodeType":"YulTypedName","src":"636:3:66","type":""},{"name":"dst","nativeSrc":"641:3:66","nodeType":"YulTypedName","src":"641:3:66","type":""},{"name":"length","nativeSrc":"646:6:66","nodeType":"YulTypedName","src":"646:6:66","type":""}],"src":"592:250:66"},{"body":{"nativeSrc":"897:221:66","nodeType":"YulBlock","src":"897:221:66","statements":[{"nativeSrc":"907:26:66","nodeType":"YulVariableDeclaration","src":"907:26:66","value":{"arguments":[{"name":"value","nativeSrc":"927:5:66","nodeType":"YulIdentifier","src":"927:5:66"}],"functionName":{"name":"mload","nativeSrc":"921:5:66","nodeType":"YulIdentifier","src":"921:5:66"},"nativeSrc":"921:12:66","nodeType":"YulFunctionCall","src":"921:12:66"},"variables":[{"name":"length","nativeSrc":"911:6:66","nodeType":"YulTypedName","src":"911:6:66","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"949:3:66","nodeType":"YulIdentifier","src":"949:3:66"},{"name":"length","nativeSrc":"954:6:66","nodeType":"YulIdentifier","src":"954:6:66"}],"functionName":{"name":"mstore","nativeSrc":"942:6:66","nodeType":"YulIdentifier","src":"942:6:66"},"nativeSrc":"942:19:66","nodeType":"YulFunctionCall","src":"942:19:66"},"nativeSrc":"942:19:66","nodeType":"YulExpressionStatement","src":"942:19:66"},{"expression":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1009:5:66","nodeType":"YulIdentifier","src":"1009:5:66"},{"kind":"number","nativeSrc":"1016:4:66","nodeType":"YulLiteral","src":"1016:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1005:3:66","nodeType":"YulIdentifier","src":"1005:3:66"},"nativeSrc":"1005:16:66","nodeType":"YulFunctionCall","src":"1005:16:66"},{"arguments":[{"name":"pos","nativeSrc":"1027:3:66","nodeType":"YulIdentifier","src":"1027:3:66"},{"kind":"number","nativeSrc":"1032:4:66","nodeType":"YulLiteral","src":"1032:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1023:3:66","nodeType":"YulIdentifier","src":"1023:3:66"},"nativeSrc":"1023:14:66","nodeType":"YulFunctionCall","src":"1023:14:66"},{"name":"length","nativeSrc":"1039:6:66","nodeType":"YulIdentifier","src":"1039:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"970:34:66","nodeType":"YulIdentifier","src":"970:34:66"},"nativeSrc":"970:76:66","nodeType":"YulFunctionCall","src":"970:76:66"},"nativeSrc":"970:76:66","nodeType":"YulExpressionStatement","src":"970:76:66"},{"nativeSrc":"1055:57:66","nodeType":"YulAssignment","src":"1055:57:66","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"1070:3:66","nodeType":"YulIdentifier","src":"1070:3:66"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1083:6:66","nodeType":"YulIdentifier","src":"1083:6:66"},{"kind":"number","nativeSrc":"1091:2:66","nodeType":"YulLiteral","src":"1091:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"1079:3:66","nodeType":"YulIdentifier","src":"1079:3:66"},"nativeSrc":"1079:15:66","nodeType":"YulFunctionCall","src":"1079:15:66"},{"arguments":[{"kind":"number","nativeSrc":"1100:2:66","nodeType":"YulLiteral","src":"1100:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1096:3:66","nodeType":"YulIdentifier","src":"1096:3:66"},"nativeSrc":"1096:7:66","nodeType":"YulFunctionCall","src":"1096:7:66"}],"functionName":{"name":"and","nativeSrc":"1075:3:66","nodeType":"YulIdentifier","src":"1075:3:66"},"nativeSrc":"1075:29:66","nodeType":"YulFunctionCall","src":"1075:29:66"}],"functionName":{"name":"add","nativeSrc":"1066:3:66","nodeType":"YulIdentifier","src":"1066:3:66"},"nativeSrc":"1066:39:66","nodeType":"YulFunctionCall","src":"1066:39:66"},{"kind":"number","nativeSrc":"1107:4:66","nodeType":"YulLiteral","src":"1107:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1062:3:66","nodeType":"YulIdentifier","src":"1062:3:66"},"nativeSrc":"1062:50:66","nodeType":"YulFunctionCall","src":"1062:50:66"},"variableNames":[{"name":"end","nativeSrc":"1055:3:66","nodeType":"YulIdentifier","src":"1055:3:66"}]}]},"name":"abi_encode_string","nativeSrc":"847:271:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"874:5:66","nodeType":"YulTypedName","src":"874:5:66","type":""},{"name":"pos","nativeSrc":"881:3:66","nodeType":"YulTypedName","src":"881:3:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"889:3:66","nodeType":"YulTypedName","src":"889:3:66","type":""}],"src":"847:271:66"},{"body":{"nativeSrc":"1244:99:66","nodeType":"YulBlock","src":"1244:99:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1261:9:66","nodeType":"YulIdentifier","src":"1261:9:66"},{"kind":"number","nativeSrc":"1272:2:66","nodeType":"YulLiteral","src":"1272:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"1254:6:66","nodeType":"YulIdentifier","src":"1254:6:66"},"nativeSrc":"1254:21:66","nodeType":"YulFunctionCall","src":"1254:21:66"},"nativeSrc":"1254:21:66","nodeType":"YulExpressionStatement","src":"1254:21:66"},{"nativeSrc":"1284:53:66","nodeType":"YulAssignment","src":"1284:53:66","value":{"arguments":[{"name":"value0","nativeSrc":"1310:6:66","nodeType":"YulIdentifier","src":"1310:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"1322:9:66","nodeType":"YulIdentifier","src":"1322:9:66"},{"kind":"number","nativeSrc":"1333:2:66","nodeType":"YulLiteral","src":"1333:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1318:3:66","nodeType":"YulIdentifier","src":"1318:3:66"},"nativeSrc":"1318:18:66","nodeType":"YulFunctionCall","src":"1318:18:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"1292:17:66","nodeType":"YulIdentifier","src":"1292:17:66"},"nativeSrc":"1292:45:66","nodeType":"YulFunctionCall","src":"1292:45:66"},"variableNames":[{"name":"tail","nativeSrc":"1284:4:66","nodeType":"YulIdentifier","src":"1284:4:66"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"1123:220:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1213:9:66","nodeType":"YulTypedName","src":"1213:9:66","type":""},{"name":"value0","nativeSrc":"1224:6:66","nodeType":"YulTypedName","src":"1224:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1235:4:66","nodeType":"YulTypedName","src":"1235:4:66","type":""}],"src":"1123:220:66"},{"body":{"nativeSrc":"1418:156:66","nodeType":"YulBlock","src":"1418:156:66","statements":[{"body":{"nativeSrc":"1464:16:66","nodeType":"YulBlock","src":"1464:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1473:1:66","nodeType":"YulLiteral","src":"1473:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1476:1:66","nodeType":"YulLiteral","src":"1476:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1466:6:66","nodeType":"YulIdentifier","src":"1466:6:66"},"nativeSrc":"1466:12:66","nodeType":"YulFunctionCall","src":"1466:12:66"},"nativeSrc":"1466:12:66","nodeType":"YulExpressionStatement","src":"1466:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1439:7:66","nodeType":"YulIdentifier","src":"1439:7:66"},{"name":"headStart","nativeSrc":"1448:9:66","nodeType":"YulIdentifier","src":"1448:9:66"}],"functionName":{"name":"sub","nativeSrc":"1435:3:66","nodeType":"YulIdentifier","src":"1435:3:66"},"nativeSrc":"1435:23:66","nodeType":"YulFunctionCall","src":"1435:23:66"},{"kind":"number","nativeSrc":"1460:2:66","nodeType":"YulLiteral","src":"1460:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"1431:3:66","nodeType":"YulIdentifier","src":"1431:3:66"},"nativeSrc":"1431:32:66","nodeType":"YulFunctionCall","src":"1431:32:66"},"nativeSrc":"1428:52:66","nodeType":"YulIf","src":"1428:52:66"},{"nativeSrc":"1489:14:66","nodeType":"YulVariableDeclaration","src":"1489:14:66","value":{"kind":"number","nativeSrc":"1502:1:66","nodeType":"YulLiteral","src":"1502:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1493:5:66","nodeType":"YulTypedName","src":"1493:5:66","type":""}]},{"nativeSrc":"1512:32:66","nodeType":"YulAssignment","src":"1512:32:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1534:9:66","nodeType":"YulIdentifier","src":"1534:9:66"}],"functionName":{"name":"calldataload","nativeSrc":"1521:12:66","nodeType":"YulIdentifier","src":"1521:12:66"},"nativeSrc":"1521:23:66","nodeType":"YulFunctionCall","src":"1521:23:66"},"variableNames":[{"name":"value","nativeSrc":"1512:5:66","nodeType":"YulIdentifier","src":"1512:5:66"}]},{"nativeSrc":"1553:15:66","nodeType":"YulAssignment","src":"1553:15:66","value":{"name":"value","nativeSrc":"1563:5:66","nodeType":"YulIdentifier","src":"1563:5:66"},"variableNames":[{"name":"value0","nativeSrc":"1553:6:66","nodeType":"YulIdentifier","src":"1553:6:66"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"1348:226:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1384:9:66","nodeType":"YulTypedName","src":"1384:9:66","type":""},{"name":"dataEnd","nativeSrc":"1395:7:66","nodeType":"YulTypedName","src":"1395:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1407:6:66","nodeType":"YulTypedName","src":"1407:6:66","type":""}],"src":"1348:226:66"},{"body":{"nativeSrc":"1680:102:66","nodeType":"YulBlock","src":"1680:102:66","statements":[{"nativeSrc":"1690:26:66","nodeType":"YulAssignment","src":"1690:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"1702:9:66","nodeType":"YulIdentifier","src":"1702:9:66"},{"kind":"number","nativeSrc":"1713:2:66","nodeType":"YulLiteral","src":"1713:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1698:3:66","nodeType":"YulIdentifier","src":"1698:3:66"},"nativeSrc":"1698:18:66","nodeType":"YulFunctionCall","src":"1698:18:66"},"variableNames":[{"name":"tail","nativeSrc":"1690:4:66","nodeType":"YulIdentifier","src":"1690:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1732:9:66","nodeType":"YulIdentifier","src":"1732:9:66"},{"arguments":[{"name":"value0","nativeSrc":"1747:6:66","nodeType":"YulIdentifier","src":"1747:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1763:3:66","nodeType":"YulLiteral","src":"1763:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"1768:1:66","nodeType":"YulLiteral","src":"1768:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1759:3:66","nodeType":"YulIdentifier","src":"1759:3:66"},"nativeSrc":"1759:11:66","nodeType":"YulFunctionCall","src":"1759:11:66"},{"kind":"number","nativeSrc":"1772:1:66","nodeType":"YulLiteral","src":"1772:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1755:3:66","nodeType":"YulIdentifier","src":"1755:3:66"},"nativeSrc":"1755:19:66","nodeType":"YulFunctionCall","src":"1755:19:66"}],"functionName":{"name":"and","nativeSrc":"1743:3:66","nodeType":"YulIdentifier","src":"1743:3:66"},"nativeSrc":"1743:32:66","nodeType":"YulFunctionCall","src":"1743:32:66"}],"functionName":{"name":"mstore","nativeSrc":"1725:6:66","nodeType":"YulIdentifier","src":"1725:6:66"},"nativeSrc":"1725:51:66","nodeType":"YulFunctionCall","src":"1725:51:66"},"nativeSrc":"1725:51:66","nodeType":"YulExpressionStatement","src":"1725:51:66"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1579:203:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1649:9:66","nodeType":"YulTypedName","src":"1649:9:66","type":""},{"name":"value0","nativeSrc":"1660:6:66","nodeType":"YulTypedName","src":"1660:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1671:4:66","nodeType":"YulTypedName","src":"1671:4:66","type":""}],"src":"1579:203:66"},{"body":{"nativeSrc":"1836:124:66","nodeType":"YulBlock","src":"1836:124:66","statements":[{"nativeSrc":"1846:29:66","nodeType":"YulAssignment","src":"1846:29:66","value":{"arguments":[{"name":"offset","nativeSrc":"1868:6:66","nodeType":"YulIdentifier","src":"1868:6:66"}],"functionName":{"name":"calldataload","nativeSrc":"1855:12:66","nodeType":"YulIdentifier","src":"1855:12:66"},"nativeSrc":"1855:20:66","nodeType":"YulFunctionCall","src":"1855:20:66"},"variableNames":[{"name":"value","nativeSrc":"1846:5:66","nodeType":"YulIdentifier","src":"1846:5:66"}]},{"body":{"nativeSrc":"1938:16:66","nodeType":"YulBlock","src":"1938:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1947:1:66","nodeType":"YulLiteral","src":"1947:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"1950:1:66","nodeType":"YulLiteral","src":"1950:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1940:6:66","nodeType":"YulIdentifier","src":"1940:6:66"},"nativeSrc":"1940:12:66","nodeType":"YulFunctionCall","src":"1940:12:66"},"nativeSrc":"1940:12:66","nodeType":"YulExpressionStatement","src":"1940:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1897:5:66","nodeType":"YulIdentifier","src":"1897:5:66"},{"arguments":[{"name":"value","nativeSrc":"1908:5:66","nodeType":"YulIdentifier","src":"1908:5:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1923:3:66","nodeType":"YulLiteral","src":"1923:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"1928:1:66","nodeType":"YulLiteral","src":"1928:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1919:3:66","nodeType":"YulIdentifier","src":"1919:3:66"},"nativeSrc":"1919:11:66","nodeType":"YulFunctionCall","src":"1919:11:66"},{"kind":"number","nativeSrc":"1932:1:66","nodeType":"YulLiteral","src":"1932:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1915:3:66","nodeType":"YulIdentifier","src":"1915:3:66"},"nativeSrc":"1915:19:66","nodeType":"YulFunctionCall","src":"1915:19:66"}],"functionName":{"name":"and","nativeSrc":"1904:3:66","nodeType":"YulIdentifier","src":"1904:3:66"},"nativeSrc":"1904:31:66","nodeType":"YulFunctionCall","src":"1904:31:66"}],"functionName":{"name":"eq","nativeSrc":"1894:2:66","nodeType":"YulIdentifier","src":"1894:2:66"},"nativeSrc":"1894:42:66","nodeType":"YulFunctionCall","src":"1894:42:66"}],"functionName":{"name":"iszero","nativeSrc":"1887:6:66","nodeType":"YulIdentifier","src":"1887:6:66"},"nativeSrc":"1887:50:66","nodeType":"YulFunctionCall","src":"1887:50:66"},"nativeSrc":"1884:70:66","nodeType":"YulIf","src":"1884:70:66"}]},"name":"abi_decode_address","nativeSrc":"1787:173:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1815:6:66","nodeType":"YulTypedName","src":"1815:6:66","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1826:5:66","nodeType":"YulTypedName","src":"1826:5:66","type":""}],"src":"1787:173:66"},{"body":{"nativeSrc":"2052:213:66","nodeType":"YulBlock","src":"2052:213:66","statements":[{"body":{"nativeSrc":"2098:16:66","nodeType":"YulBlock","src":"2098:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2107:1:66","nodeType":"YulLiteral","src":"2107:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"2110:1:66","nodeType":"YulLiteral","src":"2110:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2100:6:66","nodeType":"YulIdentifier","src":"2100:6:66"},"nativeSrc":"2100:12:66","nodeType":"YulFunctionCall","src":"2100:12:66"},"nativeSrc":"2100:12:66","nodeType":"YulExpressionStatement","src":"2100:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2073:7:66","nodeType":"YulIdentifier","src":"2073:7:66"},{"name":"headStart","nativeSrc":"2082:9:66","nodeType":"YulIdentifier","src":"2082:9:66"}],"functionName":{"name":"sub","nativeSrc":"2069:3:66","nodeType":"YulIdentifier","src":"2069:3:66"},"nativeSrc":"2069:23:66","nodeType":"YulFunctionCall","src":"2069:23:66"},{"kind":"number","nativeSrc":"2094:2:66","nodeType":"YulLiteral","src":"2094:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"2065:3:66","nodeType":"YulIdentifier","src":"2065:3:66"},"nativeSrc":"2065:32:66","nodeType":"YulFunctionCall","src":"2065:32:66"},"nativeSrc":"2062:52:66","nodeType":"YulIf","src":"2062:52:66"},{"nativeSrc":"2123:39:66","nodeType":"YulAssignment","src":"2123:39:66","value":{"arguments":[{"name":"headStart","nativeSrc":"2152:9:66","nodeType":"YulIdentifier","src":"2152:9:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2133:18:66","nodeType":"YulIdentifier","src":"2133:18:66"},"nativeSrc":"2133:29:66","nodeType":"YulFunctionCall","src":"2133:29:66"},"variableNames":[{"name":"value0","nativeSrc":"2123:6:66","nodeType":"YulIdentifier","src":"2123:6:66"}]},{"nativeSrc":"2171:14:66","nodeType":"YulVariableDeclaration","src":"2171:14:66","value":{"kind":"number","nativeSrc":"2184:1:66","nodeType":"YulLiteral","src":"2184:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2175:5:66","nodeType":"YulTypedName","src":"2175:5:66","type":""}]},{"nativeSrc":"2194:41:66","nodeType":"YulAssignment","src":"2194:41:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2220:9:66","nodeType":"YulIdentifier","src":"2220:9:66"},{"kind":"number","nativeSrc":"2231:2:66","nodeType":"YulLiteral","src":"2231:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2216:3:66","nodeType":"YulIdentifier","src":"2216:3:66"},"nativeSrc":"2216:18:66","nodeType":"YulFunctionCall","src":"2216:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"2203:12:66","nodeType":"YulIdentifier","src":"2203:12:66"},"nativeSrc":"2203:32:66","nodeType":"YulFunctionCall","src":"2203:32:66"},"variableNames":[{"name":"value","nativeSrc":"2194:5:66","nodeType":"YulIdentifier","src":"2194:5:66"}]},{"nativeSrc":"2244:15:66","nodeType":"YulAssignment","src":"2244:15:66","value":{"name":"value","nativeSrc":"2254:5:66","nodeType":"YulIdentifier","src":"2254:5:66"},"variableNames":[{"name":"value1","nativeSrc":"2244:6:66","nodeType":"YulIdentifier","src":"2244:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"1965:300:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2010:9:66","nodeType":"YulTypedName","src":"2010:9:66","type":""},{"name":"dataEnd","nativeSrc":"2021:7:66","nodeType":"YulTypedName","src":"2021:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2033:6:66","nodeType":"YulTypedName","src":"2033:6:66","type":""},{"name":"value1","nativeSrc":"2041:6:66","nodeType":"YulTypedName","src":"2041:6:66","type":""}],"src":"1965:300:66"},{"body":{"nativeSrc":"2371:76:66","nodeType":"YulBlock","src":"2371:76:66","statements":[{"nativeSrc":"2381:26:66","nodeType":"YulAssignment","src":"2381:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"2393:9:66","nodeType":"YulIdentifier","src":"2393:9:66"},{"kind":"number","nativeSrc":"2404:2:66","nodeType":"YulLiteral","src":"2404:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2389:3:66","nodeType":"YulIdentifier","src":"2389:3:66"},"nativeSrc":"2389:18:66","nodeType":"YulFunctionCall","src":"2389:18:66"},"variableNames":[{"name":"tail","nativeSrc":"2381:4:66","nodeType":"YulIdentifier","src":"2381:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2423:9:66","nodeType":"YulIdentifier","src":"2423:9:66"},{"name":"value0","nativeSrc":"2434:6:66","nodeType":"YulIdentifier","src":"2434:6:66"}],"functionName":{"name":"mstore","nativeSrc":"2416:6:66","nodeType":"YulIdentifier","src":"2416:6:66"},"nativeSrc":"2416:25:66","nodeType":"YulFunctionCall","src":"2416:25:66"},"nativeSrc":"2416:25:66","nodeType":"YulExpressionStatement","src":"2416:25:66"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"2270:177:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2340:9:66","nodeType":"YulTypedName","src":"2340:9:66","type":""},{"name":"value0","nativeSrc":"2351:6:66","nodeType":"YulTypedName","src":"2351:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2362:4:66","nodeType":"YulTypedName","src":"2362:4:66","type":""}],"src":"2270:177:66"},{"body":{"nativeSrc":"2556:270:66","nodeType":"YulBlock","src":"2556:270:66","statements":[{"body":{"nativeSrc":"2602:16:66","nodeType":"YulBlock","src":"2602:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2611:1:66","nodeType":"YulLiteral","src":"2611:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"2614:1:66","nodeType":"YulLiteral","src":"2614:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2604:6:66","nodeType":"YulIdentifier","src":"2604:6:66"},"nativeSrc":"2604:12:66","nodeType":"YulFunctionCall","src":"2604:12:66"},"nativeSrc":"2604:12:66","nodeType":"YulExpressionStatement","src":"2604:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2577:7:66","nodeType":"YulIdentifier","src":"2577:7:66"},{"name":"headStart","nativeSrc":"2586:9:66","nodeType":"YulIdentifier","src":"2586:9:66"}],"functionName":{"name":"sub","nativeSrc":"2573:3:66","nodeType":"YulIdentifier","src":"2573:3:66"},"nativeSrc":"2573:23:66","nodeType":"YulFunctionCall","src":"2573:23:66"},{"kind":"number","nativeSrc":"2598:2:66","nodeType":"YulLiteral","src":"2598:2:66","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"2569:3:66","nodeType":"YulIdentifier","src":"2569:3:66"},"nativeSrc":"2569:32:66","nodeType":"YulFunctionCall","src":"2569:32:66"},"nativeSrc":"2566:52:66","nodeType":"YulIf","src":"2566:52:66"},{"nativeSrc":"2627:39:66","nodeType":"YulAssignment","src":"2627:39:66","value":{"arguments":[{"name":"headStart","nativeSrc":"2656:9:66","nodeType":"YulIdentifier","src":"2656:9:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2637:18:66","nodeType":"YulIdentifier","src":"2637:18:66"},"nativeSrc":"2637:29:66","nodeType":"YulFunctionCall","src":"2637:29:66"},"variableNames":[{"name":"value0","nativeSrc":"2627:6:66","nodeType":"YulIdentifier","src":"2627:6:66"}]},{"nativeSrc":"2675:48:66","nodeType":"YulAssignment","src":"2675:48:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2708:9:66","nodeType":"YulIdentifier","src":"2708:9:66"},{"kind":"number","nativeSrc":"2719:2:66","nodeType":"YulLiteral","src":"2719:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2704:3:66","nodeType":"YulIdentifier","src":"2704:3:66"},"nativeSrc":"2704:18:66","nodeType":"YulFunctionCall","src":"2704:18:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2685:18:66","nodeType":"YulIdentifier","src":"2685:18:66"},"nativeSrc":"2685:38:66","nodeType":"YulFunctionCall","src":"2685:38:66"},"variableNames":[{"name":"value1","nativeSrc":"2675:6:66","nodeType":"YulIdentifier","src":"2675:6:66"}]},{"nativeSrc":"2732:14:66","nodeType":"YulVariableDeclaration","src":"2732:14:66","value":{"kind":"number","nativeSrc":"2745:1:66","nodeType":"YulLiteral","src":"2745:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"2736:5:66","nodeType":"YulTypedName","src":"2736:5:66","type":""}]},{"nativeSrc":"2755:41:66","nodeType":"YulAssignment","src":"2755:41:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2781:9:66","nodeType":"YulIdentifier","src":"2781:9:66"},{"kind":"number","nativeSrc":"2792:2:66","nodeType":"YulLiteral","src":"2792:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2777:3:66","nodeType":"YulIdentifier","src":"2777:3:66"},"nativeSrc":"2777:18:66","nodeType":"YulFunctionCall","src":"2777:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"2764:12:66","nodeType":"YulIdentifier","src":"2764:12:66"},"nativeSrc":"2764:32:66","nodeType":"YulFunctionCall","src":"2764:32:66"},"variableNames":[{"name":"value","nativeSrc":"2755:5:66","nodeType":"YulIdentifier","src":"2755:5:66"}]},{"nativeSrc":"2805:15:66","nodeType":"YulAssignment","src":"2805:15:66","value":{"name":"value","nativeSrc":"2815:5:66","nodeType":"YulIdentifier","src":"2815:5:66"},"variableNames":[{"name":"value2","nativeSrc":"2805:6:66","nodeType":"YulIdentifier","src":"2805:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nativeSrc":"2452:374:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2506:9:66","nodeType":"YulTypedName","src":"2506:9:66","type":""},{"name":"dataEnd","nativeSrc":"2517:7:66","nodeType":"YulTypedName","src":"2517:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2529:6:66","nodeType":"YulTypedName","src":"2529:6:66","type":""},{"name":"value1","nativeSrc":"2537:6:66","nodeType":"YulTypedName","src":"2537:6:66","type":""},{"name":"value2","nativeSrc":"2545:6:66","nodeType":"YulTypedName","src":"2545:6:66","type":""}],"src":"2452:374:66"},{"body":{"nativeSrc":"2901:116:66","nodeType":"YulBlock","src":"2901:116:66","statements":[{"body":{"nativeSrc":"2947:16:66","nodeType":"YulBlock","src":"2947:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2956:1:66","nodeType":"YulLiteral","src":"2956:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"2959:1:66","nodeType":"YulLiteral","src":"2959:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2949:6:66","nodeType":"YulIdentifier","src":"2949:6:66"},"nativeSrc":"2949:12:66","nodeType":"YulFunctionCall","src":"2949:12:66"},"nativeSrc":"2949:12:66","nodeType":"YulExpressionStatement","src":"2949:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2922:7:66","nodeType":"YulIdentifier","src":"2922:7:66"},{"name":"headStart","nativeSrc":"2931:9:66","nodeType":"YulIdentifier","src":"2931:9:66"}],"functionName":{"name":"sub","nativeSrc":"2918:3:66","nodeType":"YulIdentifier","src":"2918:3:66"},"nativeSrc":"2918:23:66","nodeType":"YulFunctionCall","src":"2918:23:66"},{"kind":"number","nativeSrc":"2943:2:66","nodeType":"YulLiteral","src":"2943:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2914:3:66","nodeType":"YulIdentifier","src":"2914:3:66"},"nativeSrc":"2914:32:66","nodeType":"YulFunctionCall","src":"2914:32:66"},"nativeSrc":"2911:52:66","nodeType":"YulIf","src":"2911:52:66"},{"nativeSrc":"2972:39:66","nodeType":"YulAssignment","src":"2972:39:66","value":{"arguments":[{"name":"headStart","nativeSrc":"3001:9:66","nodeType":"YulIdentifier","src":"3001:9:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2982:18:66","nodeType":"YulIdentifier","src":"2982:18:66"},"nativeSrc":"2982:29:66","nodeType":"YulFunctionCall","src":"2982:29:66"},"variableNames":[{"name":"value0","nativeSrc":"2972:6:66","nodeType":"YulIdentifier","src":"2972:6:66"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2831:186:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2867:9:66","nodeType":"YulTypedName","src":"2867:9:66","type":""},{"name":"dataEnd","nativeSrc":"2878:7:66","nodeType":"YulTypedName","src":"2878:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2890:6:66","nodeType":"YulTypedName","src":"2890:6:66","type":""}],"src":"2831:186:66"},{"body":{"nativeSrc":"3106:263:66","nodeType":"YulBlock","src":"3106:263:66","statements":[{"body":{"nativeSrc":"3152:16:66","nodeType":"YulBlock","src":"3152:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3161:1:66","nodeType":"YulLiteral","src":"3161:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"3164:1:66","nodeType":"YulLiteral","src":"3164:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3154:6:66","nodeType":"YulIdentifier","src":"3154:6:66"},"nativeSrc":"3154:12:66","nodeType":"YulFunctionCall","src":"3154:12:66"},"nativeSrc":"3154:12:66","nodeType":"YulExpressionStatement","src":"3154:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3127:7:66","nodeType":"YulIdentifier","src":"3127:7:66"},{"name":"headStart","nativeSrc":"3136:9:66","nodeType":"YulIdentifier","src":"3136:9:66"}],"functionName":{"name":"sub","nativeSrc":"3123:3:66","nodeType":"YulIdentifier","src":"3123:3:66"},"nativeSrc":"3123:23:66","nodeType":"YulFunctionCall","src":"3123:23:66"},{"kind":"number","nativeSrc":"3148:2:66","nodeType":"YulLiteral","src":"3148:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"3119:3:66","nodeType":"YulIdentifier","src":"3119:3:66"},"nativeSrc":"3119:32:66","nodeType":"YulFunctionCall","src":"3119:32:66"},"nativeSrc":"3116:52:66","nodeType":"YulIf","src":"3116:52:66"},{"nativeSrc":"3177:39:66","nodeType":"YulAssignment","src":"3177:39:66","value":{"arguments":[{"name":"headStart","nativeSrc":"3206:9:66","nodeType":"YulIdentifier","src":"3206:9:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3187:18:66","nodeType":"YulIdentifier","src":"3187:18:66"},"nativeSrc":"3187:29:66","nodeType":"YulFunctionCall","src":"3187:29:66"},"variableNames":[{"name":"value0","nativeSrc":"3177:6:66","nodeType":"YulIdentifier","src":"3177:6:66"}]},{"nativeSrc":"3225:45:66","nodeType":"YulVariableDeclaration","src":"3225:45:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3255:9:66","nodeType":"YulIdentifier","src":"3255:9:66"},{"kind":"number","nativeSrc":"3266:2:66","nodeType":"YulLiteral","src":"3266:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3251:3:66","nodeType":"YulIdentifier","src":"3251:3:66"},"nativeSrc":"3251:18:66","nodeType":"YulFunctionCall","src":"3251:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"3238:12:66","nodeType":"YulIdentifier","src":"3238:12:66"},"nativeSrc":"3238:32:66","nodeType":"YulFunctionCall","src":"3238:32:66"},"variables":[{"name":"value","nativeSrc":"3229:5:66","nodeType":"YulTypedName","src":"3229:5:66","type":""}]},{"body":{"nativeSrc":"3323:16:66","nodeType":"YulBlock","src":"3323:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3332:1:66","nodeType":"YulLiteral","src":"3332:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"3335:1:66","nodeType":"YulLiteral","src":"3335:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3325:6:66","nodeType":"YulIdentifier","src":"3325:6:66"},"nativeSrc":"3325:12:66","nodeType":"YulFunctionCall","src":"3325:12:66"},"nativeSrc":"3325:12:66","nodeType":"YulExpressionStatement","src":"3325:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3292:5:66","nodeType":"YulIdentifier","src":"3292:5:66"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"3313:5:66","nodeType":"YulIdentifier","src":"3313:5:66"}],"functionName":{"name":"iszero","nativeSrc":"3306:6:66","nodeType":"YulIdentifier","src":"3306:6:66"},"nativeSrc":"3306:13:66","nodeType":"YulFunctionCall","src":"3306:13:66"}],"functionName":{"name":"iszero","nativeSrc":"3299:6:66","nodeType":"YulIdentifier","src":"3299:6:66"},"nativeSrc":"3299:21:66","nodeType":"YulFunctionCall","src":"3299:21:66"}],"functionName":{"name":"eq","nativeSrc":"3289:2:66","nodeType":"YulIdentifier","src":"3289:2:66"},"nativeSrc":"3289:32:66","nodeType":"YulFunctionCall","src":"3289:32:66"}],"functionName":{"name":"iszero","nativeSrc":"3282:6:66","nodeType":"YulIdentifier","src":"3282:6:66"},"nativeSrc":"3282:40:66","nodeType":"YulFunctionCall","src":"3282:40:66"},"nativeSrc":"3279:60:66","nodeType":"YulIf","src":"3279:60:66"},{"nativeSrc":"3348:15:66","nodeType":"YulAssignment","src":"3348:15:66","value":{"name":"value","nativeSrc":"3358:5:66","nodeType":"YulIdentifier","src":"3358:5:66"},"variableNames":[{"name":"value1","nativeSrc":"3348:6:66","nodeType":"YulIdentifier","src":"3348:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nativeSrc":"3022:347:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3064:9:66","nodeType":"YulTypedName","src":"3064:9:66","type":""},{"name":"dataEnd","nativeSrc":"3075:7:66","nodeType":"YulTypedName","src":"3075:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3087:6:66","nodeType":"YulTypedName","src":"3087:6:66","type":""},{"name":"value1","nativeSrc":"3095:6:66","nodeType":"YulTypedName","src":"3095:6:66","type":""}],"src":"3022:347:66"},{"body":{"nativeSrc":"3406:95:66","nodeType":"YulBlock","src":"3406:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3423:1:66","nodeType":"YulLiteral","src":"3423:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"3430:3:66","nodeType":"YulLiteral","src":"3430:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"3435:10:66","nodeType":"YulLiteral","src":"3435:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"3426:3:66","nodeType":"YulIdentifier","src":"3426:3:66"},"nativeSrc":"3426:20:66","nodeType":"YulFunctionCall","src":"3426:20:66"}],"functionName":{"name":"mstore","nativeSrc":"3416:6:66","nodeType":"YulIdentifier","src":"3416:6:66"},"nativeSrc":"3416:31:66","nodeType":"YulFunctionCall","src":"3416:31:66"},"nativeSrc":"3416:31:66","nodeType":"YulExpressionStatement","src":"3416:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3463:1:66","nodeType":"YulLiteral","src":"3463:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"3466:4:66","nodeType":"YulLiteral","src":"3466:4:66","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"3456:6:66","nodeType":"YulIdentifier","src":"3456:6:66"},"nativeSrc":"3456:15:66","nodeType":"YulFunctionCall","src":"3456:15:66"},"nativeSrc":"3456:15:66","nodeType":"YulExpressionStatement","src":"3456:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3487:1:66","nodeType":"YulLiteral","src":"3487:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"3490:4:66","nodeType":"YulLiteral","src":"3490:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"3480:6:66","nodeType":"YulIdentifier","src":"3480:6:66"},"nativeSrc":"3480:15:66","nodeType":"YulFunctionCall","src":"3480:15:66"},"nativeSrc":"3480:15:66","nodeType":"YulExpressionStatement","src":"3480:15:66"}]},"name":"panic_error_0x41","nativeSrc":"3374:127:66","nodeType":"YulFunctionDefinition","src":"3374:127:66"},{"body":{"nativeSrc":"3580:641:66","nodeType":"YulBlock","src":"3580:641:66","statements":[{"nativeSrc":"3590:13:66","nodeType":"YulVariableDeclaration","src":"3590:13:66","value":{"kind":"number","nativeSrc":"3602:1:66","nodeType":"YulLiteral","src":"3602:1:66","type":"","value":"0"},"variables":[{"name":"size","nativeSrc":"3594:4:66","nodeType":"YulTypedName","src":"3594:4:66","type":""}]},{"body":{"nativeSrc":"3646:22:66","nodeType":"YulBlock","src":"3646:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3648:16:66","nodeType":"YulIdentifier","src":"3648:16:66"},"nativeSrc":"3648:18:66","nodeType":"YulFunctionCall","src":"3648:18:66"},"nativeSrc":"3648:18:66","nodeType":"YulExpressionStatement","src":"3648:18:66"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"3618:6:66","nodeType":"YulIdentifier","src":"3618:6:66"},{"kind":"number","nativeSrc":"3626:18:66","nodeType":"YulLiteral","src":"3626:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3615:2:66","nodeType":"YulIdentifier","src":"3615:2:66"},"nativeSrc":"3615:30:66","nodeType":"YulFunctionCall","src":"3615:30:66"},"nativeSrc":"3612:56:66","nodeType":"YulIf","src":"3612:56:66"},{"nativeSrc":"3677:43:66","nodeType":"YulVariableDeclaration","src":"3677:43:66","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"3699:6:66","nodeType":"YulIdentifier","src":"3699:6:66"},{"kind":"number","nativeSrc":"3707:2:66","nodeType":"YulLiteral","src":"3707:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"3695:3:66","nodeType":"YulIdentifier","src":"3695:3:66"},"nativeSrc":"3695:15:66","nodeType":"YulFunctionCall","src":"3695:15:66"},{"arguments":[{"kind":"number","nativeSrc":"3716:2:66","nodeType":"YulLiteral","src":"3716:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3712:3:66","nodeType":"YulIdentifier","src":"3712:3:66"},"nativeSrc":"3712:7:66","nodeType":"YulFunctionCall","src":"3712:7:66"}],"functionName":{"name":"and","nativeSrc":"3691:3:66","nodeType":"YulIdentifier","src":"3691:3:66"},"nativeSrc":"3691:29:66","nodeType":"YulFunctionCall","src":"3691:29:66"},"variables":[{"name":"result","nativeSrc":"3681:6:66","nodeType":"YulTypedName","src":"3681:6:66","type":""}]},{"nativeSrc":"3729:25:66","nodeType":"YulAssignment","src":"3729:25:66","value":{"arguments":[{"name":"result","nativeSrc":"3741:6:66","nodeType":"YulIdentifier","src":"3741:6:66"},{"kind":"number","nativeSrc":"3749:4:66","nodeType":"YulLiteral","src":"3749:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"3737:3:66","nodeType":"YulIdentifier","src":"3737:3:66"},"nativeSrc":"3737:17:66","nodeType":"YulFunctionCall","src":"3737:17:66"},"variableNames":[{"name":"size","nativeSrc":"3729:4:66","nodeType":"YulIdentifier","src":"3729:4:66"}]},{"nativeSrc":"3763:15:66","nodeType":"YulVariableDeclaration","src":"3763:15:66","value":{"kind":"number","nativeSrc":"3777:1:66","nodeType":"YulLiteral","src":"3777:1:66","type":"","value":"0"},"variables":[{"name":"memPtr","nativeSrc":"3767:6:66","nodeType":"YulTypedName","src":"3767:6:66","type":""}]},{"nativeSrc":"3787:19:66","nodeType":"YulAssignment","src":"3787:19:66","value":{"arguments":[{"kind":"number","nativeSrc":"3803:2:66","nodeType":"YulLiteral","src":"3803:2:66","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"3797:5:66","nodeType":"YulIdentifier","src":"3797:5:66"},"nativeSrc":"3797:9:66","nodeType":"YulFunctionCall","src":"3797:9:66"},"variableNames":[{"name":"memPtr","nativeSrc":"3787:6:66","nodeType":"YulIdentifier","src":"3787:6:66"}]},{"nativeSrc":"3815:60:66","nodeType":"YulVariableDeclaration","src":"3815:60:66","value":{"arguments":[{"name":"memPtr","nativeSrc":"3837:6:66","nodeType":"YulIdentifier","src":"3837:6:66"},{"arguments":[{"arguments":[{"name":"result","nativeSrc":"3853:6:66","nodeType":"YulIdentifier","src":"3853:6:66"},{"kind":"number","nativeSrc":"3861:2:66","nodeType":"YulLiteral","src":"3861:2:66","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"3849:3:66","nodeType":"YulIdentifier","src":"3849:3:66"},"nativeSrc":"3849:15:66","nodeType":"YulFunctionCall","src":"3849:15:66"},{"arguments":[{"kind":"number","nativeSrc":"3870:2:66","nodeType":"YulLiteral","src":"3870:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"3866:3:66","nodeType":"YulIdentifier","src":"3866:3:66"},"nativeSrc":"3866:7:66","nodeType":"YulFunctionCall","src":"3866:7:66"}],"functionName":{"name":"and","nativeSrc":"3845:3:66","nodeType":"YulIdentifier","src":"3845:3:66"},"nativeSrc":"3845:29:66","nodeType":"YulFunctionCall","src":"3845:29:66"}],"functionName":{"name":"add","nativeSrc":"3833:3:66","nodeType":"YulIdentifier","src":"3833:3:66"},"nativeSrc":"3833:42:66","nodeType":"YulFunctionCall","src":"3833:42:66"},"variables":[{"name":"newFreePtr","nativeSrc":"3819:10:66","nodeType":"YulTypedName","src":"3819:10:66","type":""}]},{"body":{"nativeSrc":"3950:22:66","nodeType":"YulBlock","src":"3950:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"3952:16:66","nodeType":"YulIdentifier","src":"3952:16:66"},"nativeSrc":"3952:18:66","nodeType":"YulFunctionCall","src":"3952:18:66"},"nativeSrc":"3952:18:66","nodeType":"YulExpressionStatement","src":"3952:18:66"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"3893:10:66","nodeType":"YulIdentifier","src":"3893:10:66"},{"kind":"number","nativeSrc":"3905:18:66","nodeType":"YulLiteral","src":"3905:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3890:2:66","nodeType":"YulIdentifier","src":"3890:2:66"},"nativeSrc":"3890:34:66","nodeType":"YulFunctionCall","src":"3890:34:66"},{"arguments":[{"name":"newFreePtr","nativeSrc":"3929:10:66","nodeType":"YulIdentifier","src":"3929:10:66"},{"name":"memPtr","nativeSrc":"3941:6:66","nodeType":"YulIdentifier","src":"3941:6:66"}],"functionName":{"name":"lt","nativeSrc":"3926:2:66","nodeType":"YulIdentifier","src":"3926:2:66"},"nativeSrc":"3926:22:66","nodeType":"YulFunctionCall","src":"3926:22:66"}],"functionName":{"name":"or","nativeSrc":"3887:2:66","nodeType":"YulIdentifier","src":"3887:2:66"},"nativeSrc":"3887:62:66","nodeType":"YulFunctionCall","src":"3887:62:66"},"nativeSrc":"3884:88:66","nodeType":"YulIf","src":"3884:88:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3988:2:66","nodeType":"YulLiteral","src":"3988:2:66","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"3992:10:66","nodeType":"YulIdentifier","src":"3992:10:66"}],"functionName":{"name":"mstore","nativeSrc":"3981:6:66","nodeType":"YulIdentifier","src":"3981:6:66"},"nativeSrc":"3981:22:66","nodeType":"YulFunctionCall","src":"3981:22:66"},"nativeSrc":"3981:22:66","nodeType":"YulExpressionStatement","src":"3981:22:66"},{"nativeSrc":"4012:15:66","nodeType":"YulAssignment","src":"4012:15:66","value":{"name":"memPtr","nativeSrc":"4021:6:66","nodeType":"YulIdentifier","src":"4021:6:66"},"variableNames":[{"name":"array","nativeSrc":"4012:5:66","nodeType":"YulIdentifier","src":"4012:5:66"}]},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"4043:6:66","nodeType":"YulIdentifier","src":"4043:6:66"},{"name":"length","nativeSrc":"4051:6:66","nodeType":"YulIdentifier","src":"4051:6:66"}],"functionName":{"name":"mstore","nativeSrc":"4036:6:66","nodeType":"YulIdentifier","src":"4036:6:66"},"nativeSrc":"4036:22:66","nodeType":"YulFunctionCall","src":"4036:22:66"},"nativeSrc":"4036:22:66","nodeType":"YulExpressionStatement","src":"4036:22:66"},{"body":{"nativeSrc":"4096:16:66","nodeType":"YulBlock","src":"4096:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4105:1:66","nodeType":"YulLiteral","src":"4105:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4108:1:66","nodeType":"YulLiteral","src":"4108:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4098:6:66","nodeType":"YulIdentifier","src":"4098:6:66"},"nativeSrc":"4098:12:66","nodeType":"YulFunctionCall","src":"4098:12:66"},"nativeSrc":"4098:12:66","nodeType":"YulExpressionStatement","src":"4098:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"4077:3:66","nodeType":"YulIdentifier","src":"4077:3:66"},{"name":"length","nativeSrc":"4082:6:66","nodeType":"YulIdentifier","src":"4082:6:66"}],"functionName":{"name":"add","nativeSrc":"4073:3:66","nodeType":"YulIdentifier","src":"4073:3:66"},"nativeSrc":"4073:16:66","nodeType":"YulFunctionCall","src":"4073:16:66"},{"name":"end","nativeSrc":"4091:3:66","nodeType":"YulIdentifier","src":"4091:3:66"}],"functionName":{"name":"gt","nativeSrc":"4070:2:66","nodeType":"YulIdentifier","src":"4070:2:66"},"nativeSrc":"4070:25:66","nodeType":"YulFunctionCall","src":"4070:25:66"},"nativeSrc":"4067:45:66","nodeType":"YulIf","src":"4067:45:66"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"4138:6:66","nodeType":"YulIdentifier","src":"4138:6:66"},{"kind":"number","nativeSrc":"4146:4:66","nodeType":"YulLiteral","src":"4146:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4134:3:66","nodeType":"YulIdentifier","src":"4134:3:66"},"nativeSrc":"4134:17:66","nodeType":"YulFunctionCall","src":"4134:17:66"},{"name":"src","nativeSrc":"4153:3:66","nodeType":"YulIdentifier","src":"4153:3:66"},{"name":"length","nativeSrc":"4158:6:66","nodeType":"YulIdentifier","src":"4158:6:66"}],"functionName":{"name":"calldatacopy","nativeSrc":"4121:12:66","nodeType":"YulIdentifier","src":"4121:12:66"},"nativeSrc":"4121:44:66","nodeType":"YulFunctionCall","src":"4121:44:66"},"nativeSrc":"4121:44:66","nodeType":"YulExpressionStatement","src":"4121:44:66"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"4189:6:66","nodeType":"YulIdentifier","src":"4189:6:66"},{"name":"length","nativeSrc":"4197:6:66","nodeType":"YulIdentifier","src":"4197:6:66"}],"functionName":{"name":"add","nativeSrc":"4185:3:66","nodeType":"YulIdentifier","src":"4185:3:66"},"nativeSrc":"4185:19:66","nodeType":"YulFunctionCall","src":"4185:19:66"},{"kind":"number","nativeSrc":"4206:4:66","nodeType":"YulLiteral","src":"4206:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4181:3:66","nodeType":"YulIdentifier","src":"4181:3:66"},"nativeSrc":"4181:30:66","nodeType":"YulFunctionCall","src":"4181:30:66"},{"kind":"number","nativeSrc":"4213:1:66","nodeType":"YulLiteral","src":"4213:1:66","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"4174:6:66","nodeType":"YulIdentifier","src":"4174:6:66"},"nativeSrc":"4174:41:66","nodeType":"YulFunctionCall","src":"4174:41:66"},"nativeSrc":"4174:41:66","nodeType":"YulExpressionStatement","src":"4174:41:66"}]},"name":"abi_decode_available_length_bytes","nativeSrc":"3506:715:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"3549:3:66","nodeType":"YulTypedName","src":"3549:3:66","type":""},{"name":"length","nativeSrc":"3554:6:66","nodeType":"YulTypedName","src":"3554:6:66","type":""},{"name":"end","nativeSrc":"3562:3:66","nodeType":"YulTypedName","src":"3562:3:66","type":""}],"returnVariables":[{"name":"array","nativeSrc":"3570:5:66","nodeType":"YulTypedName","src":"3570:5:66","type":""}],"src":"3506:715:66"},{"body":{"nativeSrc":"4356:582:66","nodeType":"YulBlock","src":"4356:582:66","statements":[{"body":{"nativeSrc":"4403:16:66","nodeType":"YulBlock","src":"4403:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4412:1:66","nodeType":"YulLiteral","src":"4412:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4415:1:66","nodeType":"YulLiteral","src":"4415:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4405:6:66","nodeType":"YulIdentifier","src":"4405:6:66"},"nativeSrc":"4405:12:66","nodeType":"YulFunctionCall","src":"4405:12:66"},"nativeSrc":"4405:12:66","nodeType":"YulExpressionStatement","src":"4405:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4377:7:66","nodeType":"YulIdentifier","src":"4377:7:66"},{"name":"headStart","nativeSrc":"4386:9:66","nodeType":"YulIdentifier","src":"4386:9:66"}],"functionName":{"name":"sub","nativeSrc":"4373:3:66","nodeType":"YulIdentifier","src":"4373:3:66"},"nativeSrc":"4373:23:66","nodeType":"YulFunctionCall","src":"4373:23:66"},{"kind":"number","nativeSrc":"4398:3:66","nodeType":"YulLiteral","src":"4398:3:66","type":"","value":"128"}],"functionName":{"name":"slt","nativeSrc":"4369:3:66","nodeType":"YulIdentifier","src":"4369:3:66"},"nativeSrc":"4369:33:66","nodeType":"YulFunctionCall","src":"4369:33:66"},"nativeSrc":"4366:53:66","nodeType":"YulIf","src":"4366:53:66"},{"nativeSrc":"4428:39:66","nodeType":"YulAssignment","src":"4428:39:66","value":{"arguments":[{"name":"headStart","nativeSrc":"4457:9:66","nodeType":"YulIdentifier","src":"4457:9:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"4438:18:66","nodeType":"YulIdentifier","src":"4438:18:66"},"nativeSrc":"4438:29:66","nodeType":"YulFunctionCall","src":"4438:29:66"},"variableNames":[{"name":"value0","nativeSrc":"4428:6:66","nodeType":"YulIdentifier","src":"4428:6:66"}]},{"nativeSrc":"4476:48:66","nodeType":"YulAssignment","src":"4476:48:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4509:9:66","nodeType":"YulIdentifier","src":"4509:9:66"},{"kind":"number","nativeSrc":"4520:2:66","nodeType":"YulLiteral","src":"4520:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4505:3:66","nodeType":"YulIdentifier","src":"4505:3:66"},"nativeSrc":"4505:18:66","nodeType":"YulFunctionCall","src":"4505:18:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"4486:18:66","nodeType":"YulIdentifier","src":"4486:18:66"},"nativeSrc":"4486:38:66","nodeType":"YulFunctionCall","src":"4486:38:66"},"variableNames":[{"name":"value1","nativeSrc":"4476:6:66","nodeType":"YulIdentifier","src":"4476:6:66"}]},{"nativeSrc":"4533:14:66","nodeType":"YulVariableDeclaration","src":"4533:14:66","value":{"kind":"number","nativeSrc":"4546:1:66","nodeType":"YulLiteral","src":"4546:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"4537:5:66","nodeType":"YulTypedName","src":"4537:5:66","type":""}]},{"nativeSrc":"4556:41:66","nodeType":"YulAssignment","src":"4556:41:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4582:9:66","nodeType":"YulIdentifier","src":"4582:9:66"},{"kind":"number","nativeSrc":"4593:2:66","nodeType":"YulLiteral","src":"4593:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"4578:3:66","nodeType":"YulIdentifier","src":"4578:3:66"},"nativeSrc":"4578:18:66","nodeType":"YulFunctionCall","src":"4578:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"4565:12:66","nodeType":"YulIdentifier","src":"4565:12:66"},"nativeSrc":"4565:32:66","nodeType":"YulFunctionCall","src":"4565:32:66"},"variableNames":[{"name":"value","nativeSrc":"4556:5:66","nodeType":"YulIdentifier","src":"4556:5:66"}]},{"nativeSrc":"4606:15:66","nodeType":"YulAssignment","src":"4606:15:66","value":{"name":"value","nativeSrc":"4616:5:66","nodeType":"YulIdentifier","src":"4616:5:66"},"variableNames":[{"name":"value2","nativeSrc":"4606:6:66","nodeType":"YulIdentifier","src":"4606:6:66"}]},{"nativeSrc":"4630:46:66","nodeType":"YulVariableDeclaration","src":"4630:46:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4661:9:66","nodeType":"YulIdentifier","src":"4661:9:66"},{"kind":"number","nativeSrc":"4672:2:66","nodeType":"YulLiteral","src":"4672:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"4657:3:66","nodeType":"YulIdentifier","src":"4657:3:66"},"nativeSrc":"4657:18:66","nodeType":"YulFunctionCall","src":"4657:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"4644:12:66","nodeType":"YulIdentifier","src":"4644:12:66"},"nativeSrc":"4644:32:66","nodeType":"YulFunctionCall","src":"4644:32:66"},"variables":[{"name":"offset","nativeSrc":"4634:6:66","nodeType":"YulTypedName","src":"4634:6:66","type":""}]},{"body":{"nativeSrc":"4719:16:66","nodeType":"YulBlock","src":"4719:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4728:1:66","nodeType":"YulLiteral","src":"4728:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4731:1:66","nodeType":"YulLiteral","src":"4731:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4721:6:66","nodeType":"YulIdentifier","src":"4721:6:66"},"nativeSrc":"4721:12:66","nodeType":"YulFunctionCall","src":"4721:12:66"},"nativeSrc":"4721:12:66","nodeType":"YulExpressionStatement","src":"4721:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4691:6:66","nodeType":"YulIdentifier","src":"4691:6:66"},{"kind":"number","nativeSrc":"4699:18:66","nodeType":"YulLiteral","src":"4699:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4688:2:66","nodeType":"YulIdentifier","src":"4688:2:66"},"nativeSrc":"4688:30:66","nodeType":"YulFunctionCall","src":"4688:30:66"},"nativeSrc":"4685:50:66","nodeType":"YulIf","src":"4685:50:66"},{"nativeSrc":"4744:32:66","nodeType":"YulVariableDeclaration","src":"4744:32:66","value":{"arguments":[{"name":"headStart","nativeSrc":"4758:9:66","nodeType":"YulIdentifier","src":"4758:9:66"},{"name":"offset","nativeSrc":"4769:6:66","nodeType":"YulIdentifier","src":"4769:6:66"}],"functionName":{"name":"add","nativeSrc":"4754:3:66","nodeType":"YulIdentifier","src":"4754:3:66"},"nativeSrc":"4754:22:66","nodeType":"YulFunctionCall","src":"4754:22:66"},"variables":[{"name":"_1","nativeSrc":"4748:2:66","nodeType":"YulTypedName","src":"4748:2:66","type":""}]},{"body":{"nativeSrc":"4824:16:66","nodeType":"YulBlock","src":"4824:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4833:1:66","nodeType":"YulLiteral","src":"4833:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"4836:1:66","nodeType":"YulLiteral","src":"4836:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4826:6:66","nodeType":"YulIdentifier","src":"4826:6:66"},"nativeSrc":"4826:12:66","nodeType":"YulFunctionCall","src":"4826:12:66"},"nativeSrc":"4826:12:66","nodeType":"YulExpressionStatement","src":"4826:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"4803:2:66","nodeType":"YulIdentifier","src":"4803:2:66"},{"kind":"number","nativeSrc":"4807:4:66","nodeType":"YulLiteral","src":"4807:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"4799:3:66","nodeType":"YulIdentifier","src":"4799:3:66"},"nativeSrc":"4799:13:66","nodeType":"YulFunctionCall","src":"4799:13:66"},{"name":"dataEnd","nativeSrc":"4814:7:66","nodeType":"YulIdentifier","src":"4814:7:66"}],"functionName":{"name":"slt","nativeSrc":"4795:3:66","nodeType":"YulIdentifier","src":"4795:3:66"},"nativeSrc":"4795:27:66","nodeType":"YulFunctionCall","src":"4795:27:66"}],"functionName":{"name":"iszero","nativeSrc":"4788:6:66","nodeType":"YulIdentifier","src":"4788:6:66"},"nativeSrc":"4788:35:66","nodeType":"YulFunctionCall","src":"4788:35:66"},"nativeSrc":"4785:55:66","nodeType":"YulIf","src":"4785:55:66"},{"nativeSrc":"4849:83:66","nodeType":"YulAssignment","src":"4849:83:66","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"4897:2:66","nodeType":"YulIdentifier","src":"4897:2:66"},{"kind":"number","nativeSrc":"4901:2:66","nodeType":"YulLiteral","src":"4901:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4893:3:66","nodeType":"YulIdentifier","src":"4893:3:66"},"nativeSrc":"4893:11:66","nodeType":"YulFunctionCall","src":"4893:11:66"},{"arguments":[{"name":"_1","nativeSrc":"4919:2:66","nodeType":"YulIdentifier","src":"4919:2:66"}],"functionName":{"name":"calldataload","nativeSrc":"4906:12:66","nodeType":"YulIdentifier","src":"4906:12:66"},"nativeSrc":"4906:16:66","nodeType":"YulFunctionCall","src":"4906:16:66"},{"name":"dataEnd","nativeSrc":"4924:7:66","nodeType":"YulIdentifier","src":"4924:7:66"}],"functionName":{"name":"abi_decode_available_length_bytes","nativeSrc":"4859:33:66","nodeType":"YulIdentifier","src":"4859:33:66"},"nativeSrc":"4859:73:66","nodeType":"YulFunctionCall","src":"4859:73:66"},"variableNames":[{"name":"value3","nativeSrc":"4849:6:66","nodeType":"YulIdentifier","src":"4849:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nativeSrc":"4226:712:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4298:9:66","nodeType":"YulTypedName","src":"4298:9:66","type":""},{"name":"dataEnd","nativeSrc":"4309:7:66","nodeType":"YulTypedName","src":"4309:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4321:6:66","nodeType":"YulTypedName","src":"4321:6:66","type":""},{"name":"value1","nativeSrc":"4329:6:66","nodeType":"YulTypedName","src":"4329:6:66","type":""},{"name":"value2","nativeSrc":"4337:6:66","nodeType":"YulTypedName","src":"4337:6:66","type":""},{"name":"value3","nativeSrc":"4345:6:66","nodeType":"YulTypedName","src":"4345:6:66","type":""}],"src":"4226:712:66"},{"body":{"nativeSrc":"5040:427:66","nodeType":"YulBlock","src":"5040:427:66","statements":[{"body":{"nativeSrc":"5086:16:66","nodeType":"YulBlock","src":"5086:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5095:1:66","nodeType":"YulLiteral","src":"5095:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"5098:1:66","nodeType":"YulLiteral","src":"5098:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5088:6:66","nodeType":"YulIdentifier","src":"5088:6:66"},"nativeSrc":"5088:12:66","nodeType":"YulFunctionCall","src":"5088:12:66"},"nativeSrc":"5088:12:66","nodeType":"YulExpressionStatement","src":"5088:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5061:7:66","nodeType":"YulIdentifier","src":"5061:7:66"},{"name":"headStart","nativeSrc":"5070:9:66","nodeType":"YulIdentifier","src":"5070:9:66"}],"functionName":{"name":"sub","nativeSrc":"5057:3:66","nodeType":"YulIdentifier","src":"5057:3:66"},"nativeSrc":"5057:23:66","nodeType":"YulFunctionCall","src":"5057:23:66"},{"kind":"number","nativeSrc":"5082:2:66","nodeType":"YulLiteral","src":"5082:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5053:3:66","nodeType":"YulIdentifier","src":"5053:3:66"},"nativeSrc":"5053:32:66","nodeType":"YulFunctionCall","src":"5053:32:66"},"nativeSrc":"5050:52:66","nodeType":"YulIf","src":"5050:52:66"},{"nativeSrc":"5111:39:66","nodeType":"YulAssignment","src":"5111:39:66","value":{"arguments":[{"name":"headStart","nativeSrc":"5140:9:66","nodeType":"YulIdentifier","src":"5140:9:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"5121:18:66","nodeType":"YulIdentifier","src":"5121:18:66"},"nativeSrc":"5121:29:66","nodeType":"YulFunctionCall","src":"5121:29:66"},"variableNames":[{"name":"value0","nativeSrc":"5111:6:66","nodeType":"YulIdentifier","src":"5111:6:66"}]},{"nativeSrc":"5159:46:66","nodeType":"YulVariableDeclaration","src":"5159:46:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5190:9:66","nodeType":"YulIdentifier","src":"5190:9:66"},{"kind":"number","nativeSrc":"5201:2:66","nodeType":"YulLiteral","src":"5201:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5186:3:66","nodeType":"YulIdentifier","src":"5186:3:66"},"nativeSrc":"5186:18:66","nodeType":"YulFunctionCall","src":"5186:18:66"}],"functionName":{"name":"calldataload","nativeSrc":"5173:12:66","nodeType":"YulIdentifier","src":"5173:12:66"},"nativeSrc":"5173:32:66","nodeType":"YulFunctionCall","src":"5173:32:66"},"variables":[{"name":"offset","nativeSrc":"5163:6:66","nodeType":"YulTypedName","src":"5163:6:66","type":""}]},{"body":{"nativeSrc":"5248:16:66","nodeType":"YulBlock","src":"5248:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5257:1:66","nodeType":"YulLiteral","src":"5257:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"5260:1:66","nodeType":"YulLiteral","src":"5260:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5250:6:66","nodeType":"YulIdentifier","src":"5250:6:66"},"nativeSrc":"5250:12:66","nodeType":"YulFunctionCall","src":"5250:12:66"},"nativeSrc":"5250:12:66","nodeType":"YulExpressionStatement","src":"5250:12:66"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"5220:6:66","nodeType":"YulIdentifier","src":"5220:6:66"},{"kind":"number","nativeSrc":"5228:18:66","nodeType":"YulLiteral","src":"5228:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"5217:2:66","nodeType":"YulIdentifier","src":"5217:2:66"},"nativeSrc":"5217:30:66","nodeType":"YulFunctionCall","src":"5217:30:66"},"nativeSrc":"5214:50:66","nodeType":"YulIf","src":"5214:50:66"},{"nativeSrc":"5273:32:66","nodeType":"YulVariableDeclaration","src":"5273:32:66","value":{"arguments":[{"name":"headStart","nativeSrc":"5287:9:66","nodeType":"YulIdentifier","src":"5287:9:66"},{"name":"offset","nativeSrc":"5298:6:66","nodeType":"YulIdentifier","src":"5298:6:66"}],"functionName":{"name":"add","nativeSrc":"5283:3:66","nodeType":"YulIdentifier","src":"5283:3:66"},"nativeSrc":"5283:22:66","nodeType":"YulFunctionCall","src":"5283:22:66"},"variables":[{"name":"_1","nativeSrc":"5277:2:66","nodeType":"YulTypedName","src":"5277:2:66","type":""}]},{"body":{"nativeSrc":"5353:16:66","nodeType":"YulBlock","src":"5353:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5362:1:66","nodeType":"YulLiteral","src":"5362:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"5365:1:66","nodeType":"YulLiteral","src":"5365:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5355:6:66","nodeType":"YulIdentifier","src":"5355:6:66"},"nativeSrc":"5355:12:66","nodeType":"YulFunctionCall","src":"5355:12:66"},"nativeSrc":"5355:12:66","nodeType":"YulExpressionStatement","src":"5355:12:66"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"5332:2:66","nodeType":"YulIdentifier","src":"5332:2:66"},{"kind":"number","nativeSrc":"5336:4:66","nodeType":"YulLiteral","src":"5336:4:66","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"5328:3:66","nodeType":"YulIdentifier","src":"5328:3:66"},"nativeSrc":"5328:13:66","nodeType":"YulFunctionCall","src":"5328:13:66"},{"name":"dataEnd","nativeSrc":"5343:7:66","nodeType":"YulIdentifier","src":"5343:7:66"}],"functionName":{"name":"slt","nativeSrc":"5324:3:66","nodeType":"YulIdentifier","src":"5324:3:66"},"nativeSrc":"5324:27:66","nodeType":"YulFunctionCall","src":"5324:27:66"}],"functionName":{"name":"iszero","nativeSrc":"5317:6:66","nodeType":"YulIdentifier","src":"5317:6:66"},"nativeSrc":"5317:35:66","nodeType":"YulFunctionCall","src":"5317:35:66"},"nativeSrc":"5314:55:66","nodeType":"YulIf","src":"5314:55:66"},{"nativeSrc":"5378:83:66","nodeType":"YulAssignment","src":"5378:83:66","value":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"5426:2:66","nodeType":"YulIdentifier","src":"5426:2:66"},{"kind":"number","nativeSrc":"5430:2:66","nodeType":"YulLiteral","src":"5430:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5422:3:66","nodeType":"YulIdentifier","src":"5422:3:66"},"nativeSrc":"5422:11:66","nodeType":"YulFunctionCall","src":"5422:11:66"},{"arguments":[{"name":"_1","nativeSrc":"5448:2:66","nodeType":"YulIdentifier","src":"5448:2:66"}],"functionName":{"name":"calldataload","nativeSrc":"5435:12:66","nodeType":"YulIdentifier","src":"5435:12:66"},"nativeSrc":"5435:16:66","nodeType":"YulFunctionCall","src":"5435:16:66"},{"name":"dataEnd","nativeSrc":"5453:7:66","nodeType":"YulIdentifier","src":"5453:7:66"}],"functionName":{"name":"abi_decode_available_length_bytes","nativeSrc":"5388:33:66","nodeType":"YulIdentifier","src":"5388:33:66"},"nativeSrc":"5388:73:66","nodeType":"YulFunctionCall","src":"5388:73:66"},"variableNames":[{"name":"value1","nativeSrc":"5378:6:66","nodeType":"YulIdentifier","src":"5378:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_string_memory_ptr","nativeSrc":"4943:524:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4998:9:66","nodeType":"YulTypedName","src":"4998:9:66","type":""},{"name":"dataEnd","nativeSrc":"5009:7:66","nodeType":"YulTypedName","src":"5009:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5021:6:66","nodeType":"YulTypedName","src":"5021:6:66","type":""},{"name":"value1","nativeSrc":"5029:6:66","nodeType":"YulTypedName","src":"5029:6:66","type":""}],"src":"4943:524:66"},{"body":{"nativeSrc":"5559:173:66","nodeType":"YulBlock","src":"5559:173:66","statements":[{"body":{"nativeSrc":"5605:16:66","nodeType":"YulBlock","src":"5605:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5614:1:66","nodeType":"YulLiteral","src":"5614:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"5617:1:66","nodeType":"YulLiteral","src":"5617:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5607:6:66","nodeType":"YulIdentifier","src":"5607:6:66"},"nativeSrc":"5607:12:66","nodeType":"YulFunctionCall","src":"5607:12:66"},"nativeSrc":"5607:12:66","nodeType":"YulExpressionStatement","src":"5607:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5580:7:66","nodeType":"YulIdentifier","src":"5580:7:66"},{"name":"headStart","nativeSrc":"5589:9:66","nodeType":"YulIdentifier","src":"5589:9:66"}],"functionName":{"name":"sub","nativeSrc":"5576:3:66","nodeType":"YulIdentifier","src":"5576:3:66"},"nativeSrc":"5576:23:66","nodeType":"YulFunctionCall","src":"5576:23:66"},{"kind":"number","nativeSrc":"5601:2:66","nodeType":"YulLiteral","src":"5601:2:66","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"5572:3:66","nodeType":"YulIdentifier","src":"5572:3:66"},"nativeSrc":"5572:32:66","nodeType":"YulFunctionCall","src":"5572:32:66"},"nativeSrc":"5569:52:66","nodeType":"YulIf","src":"5569:52:66"},{"nativeSrc":"5630:39:66","nodeType":"YulAssignment","src":"5630:39:66","value":{"arguments":[{"name":"headStart","nativeSrc":"5659:9:66","nodeType":"YulIdentifier","src":"5659:9:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"5640:18:66","nodeType":"YulIdentifier","src":"5640:18:66"},"nativeSrc":"5640:29:66","nodeType":"YulFunctionCall","src":"5640:29:66"},"variableNames":[{"name":"value0","nativeSrc":"5630:6:66","nodeType":"YulIdentifier","src":"5630:6:66"}]},{"nativeSrc":"5678:48:66","nodeType":"YulAssignment","src":"5678:48:66","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5711:9:66","nodeType":"YulIdentifier","src":"5711:9:66"},{"kind":"number","nativeSrc":"5722:2:66","nodeType":"YulLiteral","src":"5722:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5707:3:66","nodeType":"YulIdentifier","src":"5707:3:66"},"nativeSrc":"5707:18:66","nodeType":"YulFunctionCall","src":"5707:18:66"}],"functionName":{"name":"abi_decode_address","nativeSrc":"5688:18:66","nodeType":"YulIdentifier","src":"5688:18:66"},"nativeSrc":"5688:38:66","nodeType":"YulFunctionCall","src":"5688:38:66"},"variableNames":[{"name":"value1","nativeSrc":"5678:6:66","nodeType":"YulIdentifier","src":"5678:6:66"}]}]},"name":"abi_decode_tuple_t_addresst_address","nativeSrc":"5472:260:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5517:9:66","nodeType":"YulTypedName","src":"5517:9:66","type":""},{"name":"dataEnd","nativeSrc":"5528:7:66","nodeType":"YulTypedName","src":"5528:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5540:6:66","nodeType":"YulTypedName","src":"5540:6:66","type":""},{"name":"value1","nativeSrc":"5548:6:66","nodeType":"YulTypedName","src":"5548:6:66","type":""}],"src":"5472:260:66"},{"body":{"nativeSrc":"5792:325:66","nodeType":"YulBlock","src":"5792:325:66","statements":[{"nativeSrc":"5802:22:66","nodeType":"YulAssignment","src":"5802:22:66","value":{"arguments":[{"kind":"number","nativeSrc":"5816:1:66","nodeType":"YulLiteral","src":"5816:1:66","type":"","value":"1"},{"name":"data","nativeSrc":"5819:4:66","nodeType":"YulIdentifier","src":"5819:4:66"}],"functionName":{"name":"shr","nativeSrc":"5812:3:66","nodeType":"YulIdentifier","src":"5812:3:66"},"nativeSrc":"5812:12:66","nodeType":"YulFunctionCall","src":"5812:12:66"},"variableNames":[{"name":"length","nativeSrc":"5802:6:66","nodeType":"YulIdentifier","src":"5802:6:66"}]},{"nativeSrc":"5833:38:66","nodeType":"YulVariableDeclaration","src":"5833:38:66","value":{"arguments":[{"name":"data","nativeSrc":"5863:4:66","nodeType":"YulIdentifier","src":"5863:4:66"},{"kind":"number","nativeSrc":"5869:1:66","nodeType":"YulLiteral","src":"5869:1:66","type":"","value":"1"}],"functionName":{"name":"and","nativeSrc":"5859:3:66","nodeType":"YulIdentifier","src":"5859:3:66"},"nativeSrc":"5859:12:66","nodeType":"YulFunctionCall","src":"5859:12:66"},"variables":[{"name":"outOfPlaceEncoding","nativeSrc":"5837:18:66","nodeType":"YulTypedName","src":"5837:18:66","type":""}]},{"body":{"nativeSrc":"5910:31:66","nodeType":"YulBlock","src":"5910:31:66","statements":[{"nativeSrc":"5912:27:66","nodeType":"YulAssignment","src":"5912:27:66","value":{"arguments":[{"name":"length","nativeSrc":"5926:6:66","nodeType":"YulIdentifier","src":"5926:6:66"},{"kind":"number","nativeSrc":"5934:4:66","nodeType":"YulLiteral","src":"5934:4:66","type":"","value":"0x7f"}],"functionName":{"name":"and","nativeSrc":"5922:3:66","nodeType":"YulIdentifier","src":"5922:3:66"},"nativeSrc":"5922:17:66","nodeType":"YulFunctionCall","src":"5922:17:66"},"variableNames":[{"name":"length","nativeSrc":"5912:6:66","nodeType":"YulIdentifier","src":"5912:6:66"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"5890:18:66","nodeType":"YulIdentifier","src":"5890:18:66"}],"functionName":{"name":"iszero","nativeSrc":"5883:6:66","nodeType":"YulIdentifier","src":"5883:6:66"},"nativeSrc":"5883:26:66","nodeType":"YulFunctionCall","src":"5883:26:66"},"nativeSrc":"5880:61:66","nodeType":"YulIf","src":"5880:61:66"},{"body":{"nativeSrc":"6000:111:66","nodeType":"YulBlock","src":"6000:111:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6021:1:66","nodeType":"YulLiteral","src":"6021:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"6028:3:66","nodeType":"YulLiteral","src":"6028:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"6033:10:66","nodeType":"YulLiteral","src":"6033:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"6024:3:66","nodeType":"YulIdentifier","src":"6024:3:66"},"nativeSrc":"6024:20:66","nodeType":"YulFunctionCall","src":"6024:20:66"}],"functionName":{"name":"mstore","nativeSrc":"6014:6:66","nodeType":"YulIdentifier","src":"6014:6:66"},"nativeSrc":"6014:31:66","nodeType":"YulFunctionCall","src":"6014:31:66"},"nativeSrc":"6014:31:66","nodeType":"YulExpressionStatement","src":"6014:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6065:1:66","nodeType":"YulLiteral","src":"6065:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"6068:4:66","nodeType":"YulLiteral","src":"6068:4:66","type":"","value":"0x22"}],"functionName":{"name":"mstore","nativeSrc":"6058:6:66","nodeType":"YulIdentifier","src":"6058:6:66"},"nativeSrc":"6058:15:66","nodeType":"YulFunctionCall","src":"6058:15:66"},"nativeSrc":"6058:15:66","nodeType":"YulExpressionStatement","src":"6058:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6093:1:66","nodeType":"YulLiteral","src":"6093:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"6096:4:66","nodeType":"YulLiteral","src":"6096:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"6086:6:66","nodeType":"YulIdentifier","src":"6086:6:66"},"nativeSrc":"6086:15:66","nodeType":"YulFunctionCall","src":"6086:15:66"},"nativeSrc":"6086:15:66","nodeType":"YulExpressionStatement","src":"6086:15:66"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nativeSrc":"5956:18:66","nodeType":"YulIdentifier","src":"5956:18:66"},{"arguments":[{"name":"length","nativeSrc":"5979:6:66","nodeType":"YulIdentifier","src":"5979:6:66"},{"kind":"number","nativeSrc":"5987:2:66","nodeType":"YulLiteral","src":"5987:2:66","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"5976:2:66","nodeType":"YulIdentifier","src":"5976:2:66"},"nativeSrc":"5976:14:66","nodeType":"YulFunctionCall","src":"5976:14:66"}],"functionName":{"name":"eq","nativeSrc":"5953:2:66","nodeType":"YulIdentifier","src":"5953:2:66"},"nativeSrc":"5953:38:66","nodeType":"YulFunctionCall","src":"5953:38:66"},"nativeSrc":"5950:161:66","nodeType":"YulIf","src":"5950:161:66"}]},"name":"extract_byte_array_length","nativeSrc":"5737:380:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"5772:4:66","nodeType":"YulTypedName","src":"5772:4:66","type":""}],"returnVariables":[{"name":"length","nativeSrc":"5781:6:66","nodeType":"YulTypedName","src":"5781:6:66","type":""}],"src":"5737:380:66"},{"body":{"nativeSrc":"6279:214:66","nodeType":"YulBlock","src":"6279:214:66","statements":[{"nativeSrc":"6289:26:66","nodeType":"YulAssignment","src":"6289:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"6301:9:66","nodeType":"YulIdentifier","src":"6301:9:66"},{"kind":"number","nativeSrc":"6312:2:66","nodeType":"YulLiteral","src":"6312:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"6297:3:66","nodeType":"YulIdentifier","src":"6297:3:66"},"nativeSrc":"6297:18:66","nodeType":"YulFunctionCall","src":"6297:18:66"},"variableNames":[{"name":"tail","nativeSrc":"6289:4:66","nodeType":"YulIdentifier","src":"6289:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6331:9:66","nodeType":"YulIdentifier","src":"6331:9:66"},{"arguments":[{"name":"value0","nativeSrc":"6346:6:66","nodeType":"YulIdentifier","src":"6346:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6362:3:66","nodeType":"YulLiteral","src":"6362:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"6367:1:66","nodeType":"YulLiteral","src":"6367:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6358:3:66","nodeType":"YulIdentifier","src":"6358:3:66"},"nativeSrc":"6358:11:66","nodeType":"YulFunctionCall","src":"6358:11:66"},{"kind":"number","nativeSrc":"6371:1:66","nodeType":"YulLiteral","src":"6371:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6354:3:66","nodeType":"YulIdentifier","src":"6354:3:66"},"nativeSrc":"6354:19:66","nodeType":"YulFunctionCall","src":"6354:19:66"}],"functionName":{"name":"and","nativeSrc":"6342:3:66","nodeType":"YulIdentifier","src":"6342:3:66"},"nativeSrc":"6342:32:66","nodeType":"YulFunctionCall","src":"6342:32:66"}],"functionName":{"name":"mstore","nativeSrc":"6324:6:66","nodeType":"YulIdentifier","src":"6324:6:66"},"nativeSrc":"6324:51:66","nodeType":"YulFunctionCall","src":"6324:51:66"},"nativeSrc":"6324:51:66","nodeType":"YulExpressionStatement","src":"6324:51:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6395:9:66","nodeType":"YulIdentifier","src":"6395:9:66"},{"kind":"number","nativeSrc":"6406:2:66","nodeType":"YulLiteral","src":"6406:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6391:3:66","nodeType":"YulIdentifier","src":"6391:3:66"},"nativeSrc":"6391:18:66","nodeType":"YulFunctionCall","src":"6391:18:66"},{"name":"value1","nativeSrc":"6411:6:66","nodeType":"YulIdentifier","src":"6411:6:66"}],"functionName":{"name":"mstore","nativeSrc":"6384:6:66","nodeType":"YulIdentifier","src":"6384:6:66"},"nativeSrc":"6384:34:66","nodeType":"YulFunctionCall","src":"6384:34:66"},"nativeSrc":"6384:34:66","nodeType":"YulExpressionStatement","src":"6384:34:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6438:9:66","nodeType":"YulIdentifier","src":"6438:9:66"},{"kind":"number","nativeSrc":"6449:2:66","nodeType":"YulLiteral","src":"6449:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6434:3:66","nodeType":"YulIdentifier","src":"6434:3:66"},"nativeSrc":"6434:18:66","nodeType":"YulFunctionCall","src":"6434:18:66"},{"arguments":[{"name":"value2","nativeSrc":"6458:6:66","nodeType":"YulIdentifier","src":"6458:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6474:3:66","nodeType":"YulLiteral","src":"6474:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"6479:1:66","nodeType":"YulLiteral","src":"6479:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"6470:3:66","nodeType":"YulIdentifier","src":"6470:3:66"},"nativeSrc":"6470:11:66","nodeType":"YulFunctionCall","src":"6470:11:66"},{"kind":"number","nativeSrc":"6483:1:66","nodeType":"YulLiteral","src":"6483:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"6466:3:66","nodeType":"YulIdentifier","src":"6466:3:66"},"nativeSrc":"6466:19:66","nodeType":"YulFunctionCall","src":"6466:19:66"}],"functionName":{"name":"and","nativeSrc":"6454:3:66","nodeType":"YulIdentifier","src":"6454:3:66"},"nativeSrc":"6454:32:66","nodeType":"YulFunctionCall","src":"6454:32:66"}],"functionName":{"name":"mstore","nativeSrc":"6427:6:66","nodeType":"YulIdentifier","src":"6427:6:66"},"nativeSrc":"6427:60:66","nodeType":"YulFunctionCall","src":"6427:60:66"},"nativeSrc":"6427:60:66","nodeType":"YulExpressionStatement","src":"6427:60:66"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed","nativeSrc":"6122:371:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6232:9:66","nodeType":"YulTypedName","src":"6232:9:66","type":""},{"name":"value2","nativeSrc":"6243:6:66","nodeType":"YulTypedName","src":"6243:6:66","type":""},{"name":"value1","nativeSrc":"6251:6:66","nodeType":"YulTypedName","src":"6251:6:66","type":""},{"name":"value0","nativeSrc":"6259:6:66","nodeType":"YulTypedName","src":"6259:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6270:4:66","nodeType":"YulTypedName","src":"6270:4:66","type":""}],"src":"6122:371:66"},{"body":{"nativeSrc":"6685:309:66","nodeType":"YulBlock","src":"6685:309:66","statements":[{"nativeSrc":"6695:27:66","nodeType":"YulVariableDeclaration","src":"6695:27:66","value":{"arguments":[{"name":"value0","nativeSrc":"6715:6:66","nodeType":"YulIdentifier","src":"6715:6:66"}],"functionName":{"name":"mload","nativeSrc":"6709:5:66","nodeType":"YulIdentifier","src":"6709:5:66"},"nativeSrc":"6709:13:66","nodeType":"YulFunctionCall","src":"6709:13:66"},"variables":[{"name":"length","nativeSrc":"6699:6:66","nodeType":"YulTypedName","src":"6699:6:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"6770:6:66","nodeType":"YulIdentifier","src":"6770:6:66"},{"kind":"number","nativeSrc":"6778:4:66","nodeType":"YulLiteral","src":"6778:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6766:3:66","nodeType":"YulIdentifier","src":"6766:3:66"},"nativeSrc":"6766:17:66","nodeType":"YulFunctionCall","src":"6766:17:66"},{"name":"pos","nativeSrc":"6785:3:66","nodeType":"YulIdentifier","src":"6785:3:66"},{"name":"length","nativeSrc":"6790:6:66","nodeType":"YulIdentifier","src":"6790:6:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"6731:34:66","nodeType":"YulIdentifier","src":"6731:34:66"},"nativeSrc":"6731:66:66","nodeType":"YulFunctionCall","src":"6731:66:66"},"nativeSrc":"6731:66:66","nodeType":"YulExpressionStatement","src":"6731:66:66"},{"nativeSrc":"6806:29:66","nodeType":"YulVariableDeclaration","src":"6806:29:66","value":{"arguments":[{"name":"pos","nativeSrc":"6823:3:66","nodeType":"YulIdentifier","src":"6823:3:66"},{"name":"length","nativeSrc":"6828:6:66","nodeType":"YulIdentifier","src":"6828:6:66"}],"functionName":{"name":"add","nativeSrc":"6819:3:66","nodeType":"YulIdentifier","src":"6819:3:66"},"nativeSrc":"6819:16:66","nodeType":"YulFunctionCall","src":"6819:16:66"},"variables":[{"name":"end_1","nativeSrc":"6810:5:66","nodeType":"YulTypedName","src":"6810:5:66","type":""}]},{"nativeSrc":"6844:29:66","nodeType":"YulVariableDeclaration","src":"6844:29:66","value":{"arguments":[{"name":"value1","nativeSrc":"6866:6:66","nodeType":"YulIdentifier","src":"6866:6:66"}],"functionName":{"name":"mload","nativeSrc":"6860:5:66","nodeType":"YulIdentifier","src":"6860:5:66"},"nativeSrc":"6860:13:66","nodeType":"YulFunctionCall","src":"6860:13:66"},"variables":[{"name":"length_1","nativeSrc":"6848:8:66","nodeType":"YulTypedName","src":"6848:8:66","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value1","nativeSrc":"6921:6:66","nodeType":"YulIdentifier","src":"6921:6:66"},{"kind":"number","nativeSrc":"6929:4:66","nodeType":"YulLiteral","src":"6929:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6917:3:66","nodeType":"YulIdentifier","src":"6917:3:66"},"nativeSrc":"6917:17:66","nodeType":"YulFunctionCall","src":"6917:17:66"},{"name":"end_1","nativeSrc":"6936:5:66","nodeType":"YulIdentifier","src":"6936:5:66"},{"name":"length_1","nativeSrc":"6943:8:66","nodeType":"YulIdentifier","src":"6943:8:66"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"6882:34:66","nodeType":"YulIdentifier","src":"6882:34:66"},"nativeSrc":"6882:70:66","nodeType":"YulFunctionCall","src":"6882:70:66"},"nativeSrc":"6882:70:66","nodeType":"YulExpressionStatement","src":"6882:70:66"},{"nativeSrc":"6961:27:66","nodeType":"YulAssignment","src":"6961:27:66","value":{"arguments":[{"name":"end_1","nativeSrc":"6972:5:66","nodeType":"YulIdentifier","src":"6972:5:66"},{"name":"length_1","nativeSrc":"6979:8:66","nodeType":"YulIdentifier","src":"6979:8:66"}],"functionName":{"name":"add","nativeSrc":"6968:3:66","nodeType":"YulIdentifier","src":"6968:3:66"},"nativeSrc":"6968:20:66","nodeType":"YulFunctionCall","src":"6968:20:66"},"variableNames":[{"name":"end","nativeSrc":"6961:3:66","nodeType":"YulIdentifier","src":"6961:3:66"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"6498:496:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"6653:3:66","nodeType":"YulTypedName","src":"6653:3:66","type":""},{"name":"value1","nativeSrc":"6658:6:66","nodeType":"YulTypedName","src":"6658:6:66","type":""},{"name":"value0","nativeSrc":"6666:6:66","nodeType":"YulTypedName","src":"6666:6:66","type":""}],"returnVariables":[{"name":"end","nativeSrc":"6677:3:66","nodeType":"YulTypedName","src":"6677:3:66","type":""}],"src":"6498:496:66"},{"body":{"nativeSrc":"7173:237:66","nodeType":"YulBlock","src":"7173:237:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7190:9:66","nodeType":"YulIdentifier","src":"7190:9:66"},{"kind":"number","nativeSrc":"7201:2:66","nodeType":"YulLiteral","src":"7201:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"7183:6:66","nodeType":"YulIdentifier","src":"7183:6:66"},"nativeSrc":"7183:21:66","nodeType":"YulFunctionCall","src":"7183:21:66"},"nativeSrc":"7183:21:66","nodeType":"YulExpressionStatement","src":"7183:21:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7224:9:66","nodeType":"YulIdentifier","src":"7224:9:66"},{"kind":"number","nativeSrc":"7235:2:66","nodeType":"YulLiteral","src":"7235:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7220:3:66","nodeType":"YulIdentifier","src":"7220:3:66"},"nativeSrc":"7220:18:66","nodeType":"YulFunctionCall","src":"7220:18:66"},{"kind":"number","nativeSrc":"7240:2:66","nodeType":"YulLiteral","src":"7240:2:66","type":"","value":"47"}],"functionName":{"name":"mstore","nativeSrc":"7213:6:66","nodeType":"YulIdentifier","src":"7213:6:66"},"nativeSrc":"7213:30:66","nodeType":"YulFunctionCall","src":"7213:30:66"},"nativeSrc":"7213:30:66","nodeType":"YulExpressionStatement","src":"7213:30:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7263:9:66","nodeType":"YulIdentifier","src":"7263:9:66"},{"kind":"number","nativeSrc":"7274:2:66","nodeType":"YulLiteral","src":"7274:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7259:3:66","nodeType":"YulIdentifier","src":"7259:3:66"},"nativeSrc":"7259:18:66","nodeType":"YulFunctionCall","src":"7259:18:66"},{"hexValue":"556e697175654e46543a20546865206f6e6c79204e46542068617320616c7265","kind":"string","nativeSrc":"7279:34:66","nodeType":"YulLiteral","src":"7279:34:66","type":"","value":"UniqueNFT: The only NFT has alre"}],"functionName":{"name":"mstore","nativeSrc":"7252:6:66","nodeType":"YulIdentifier","src":"7252:6:66"},"nativeSrc":"7252:62:66","nodeType":"YulFunctionCall","src":"7252:62:66"},"nativeSrc":"7252:62:66","nodeType":"YulExpressionStatement","src":"7252:62:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7334:9:66","nodeType":"YulIdentifier","src":"7334:9:66"},{"kind":"number","nativeSrc":"7345:2:66","nodeType":"YulLiteral","src":"7345:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7330:3:66","nodeType":"YulIdentifier","src":"7330:3:66"},"nativeSrc":"7330:18:66","nodeType":"YulFunctionCall","src":"7330:18:66"},{"hexValue":"616479206265656e206d696e746564","kind":"string","nativeSrc":"7350:17:66","nodeType":"YulLiteral","src":"7350:17:66","type":"","value":"ady been minted"}],"functionName":{"name":"mstore","nativeSrc":"7323:6:66","nodeType":"YulIdentifier","src":"7323:6:66"},"nativeSrc":"7323:45:66","nodeType":"YulFunctionCall","src":"7323:45:66"},"nativeSrc":"7323:45:66","nodeType":"YulExpressionStatement","src":"7323:45:66"},{"nativeSrc":"7377:27:66","nodeType":"YulAssignment","src":"7377:27:66","value":{"arguments":[{"name":"headStart","nativeSrc":"7389:9:66","nodeType":"YulIdentifier","src":"7389:9:66"},{"kind":"number","nativeSrc":"7400:3:66","nodeType":"YulLiteral","src":"7400:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"7385:3:66","nodeType":"YulIdentifier","src":"7385:3:66"},"nativeSrc":"7385:19:66","nodeType":"YulFunctionCall","src":"7385:19:66"},"variableNames":[{"name":"tail","nativeSrc":"7377:4:66","nodeType":"YulIdentifier","src":"7377:4:66"}]}]},"name":"abi_encode_tuple_t_stringliteral_d8f036579390a0987d4ad9019af725baa50b0e5d7c04e2e356c36b1f83b2da03__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"6999:411:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7150:9:66","nodeType":"YulTypedName","src":"7150:9:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7164:4:66","nodeType":"YulTypedName","src":"7164:4:66","type":""}],"src":"6999:411:66"},{"body":{"nativeSrc":"7589:223:66","nodeType":"YulBlock","src":"7589:223:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"7606:9:66","nodeType":"YulIdentifier","src":"7606:9:66"},{"kind":"number","nativeSrc":"7617:2:66","nodeType":"YulLiteral","src":"7617:2:66","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"7599:6:66","nodeType":"YulIdentifier","src":"7599:6:66"},"nativeSrc":"7599:21:66","nodeType":"YulFunctionCall","src":"7599:21:66"},"nativeSrc":"7599:21:66","nodeType":"YulExpressionStatement","src":"7599:21:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7640:9:66","nodeType":"YulIdentifier","src":"7640:9:66"},{"kind":"number","nativeSrc":"7651:2:66","nodeType":"YulLiteral","src":"7651:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7636:3:66","nodeType":"YulIdentifier","src":"7636:3:66"},"nativeSrc":"7636:18:66","nodeType":"YulFunctionCall","src":"7636:18:66"},{"kind":"number","nativeSrc":"7656:2:66","nodeType":"YulLiteral","src":"7656:2:66","type":"","value":"33"}],"functionName":{"name":"mstore","nativeSrc":"7629:6:66","nodeType":"YulIdentifier","src":"7629:6:66"},"nativeSrc":"7629:30:66","nodeType":"YulFunctionCall","src":"7629:30:66"},"nativeSrc":"7629:30:66","nodeType":"YulExpressionStatement","src":"7629:30:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7679:9:66","nodeType":"YulIdentifier","src":"7679:9:66"},{"kind":"number","nativeSrc":"7690:2:66","nodeType":"YulLiteral","src":"7690:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"7675:3:66","nodeType":"YulIdentifier","src":"7675:3:66"},"nativeSrc":"7675:18:66","nodeType":"YulFunctionCall","src":"7675:18:66"},{"hexValue":"556e697175654e46543a204d6178696d756d20737570706c7920726561636865","kind":"string","nativeSrc":"7695:34:66","nodeType":"YulLiteral","src":"7695:34:66","type":"","value":"UniqueNFT: Maximum supply reache"}],"functionName":{"name":"mstore","nativeSrc":"7668:6:66","nodeType":"YulIdentifier","src":"7668:6:66"},"nativeSrc":"7668:62:66","nodeType":"YulFunctionCall","src":"7668:62:66"},"nativeSrc":"7668:62:66","nodeType":"YulExpressionStatement","src":"7668:62:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7750:9:66","nodeType":"YulIdentifier","src":"7750:9:66"},{"kind":"number","nativeSrc":"7761:2:66","nodeType":"YulLiteral","src":"7761:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"7746:3:66","nodeType":"YulIdentifier","src":"7746:3:66"},"nativeSrc":"7746:18:66","nodeType":"YulFunctionCall","src":"7746:18:66"},{"hexValue":"64","kind":"string","nativeSrc":"7766:3:66","nodeType":"YulLiteral","src":"7766:3:66","type":"","value":"d"}],"functionName":{"name":"mstore","nativeSrc":"7739:6:66","nodeType":"YulIdentifier","src":"7739:6:66"},"nativeSrc":"7739:31:66","nodeType":"YulFunctionCall","src":"7739:31:66"},"nativeSrc":"7739:31:66","nodeType":"YulExpressionStatement","src":"7739:31:66"},{"nativeSrc":"7779:27:66","nodeType":"YulAssignment","src":"7779:27:66","value":{"arguments":[{"name":"headStart","nativeSrc":"7791:9:66","nodeType":"YulIdentifier","src":"7791:9:66"},{"kind":"number","nativeSrc":"7802:3:66","nodeType":"YulLiteral","src":"7802:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"7787:3:66","nodeType":"YulIdentifier","src":"7787:3:66"},"nativeSrc":"7787:19:66","nodeType":"YulFunctionCall","src":"7787:19:66"},"variableNames":[{"name":"tail","nativeSrc":"7779:4:66","nodeType":"YulIdentifier","src":"7779:4:66"}]}]},"name":"abi_encode_tuple_t_stringliteral_1273b4ad278fd53b35fe872e354cdd577d65adcb7b1d095e4baf15f107084221__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"7415:397:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7566:9:66","nodeType":"YulTypedName","src":"7566:9:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"7580:4:66","nodeType":"YulTypedName","src":"7580:4:66","type":""}],"src":"7415:397:66"},{"body":{"nativeSrc":"7865:174:66","nodeType":"YulBlock","src":"7865:174:66","statements":[{"nativeSrc":"7875:16:66","nodeType":"YulAssignment","src":"7875:16:66","value":{"arguments":[{"name":"x","nativeSrc":"7886:1:66","nodeType":"YulIdentifier","src":"7886:1:66"},{"name":"y","nativeSrc":"7889:1:66","nodeType":"YulIdentifier","src":"7889:1:66"}],"functionName":{"name":"add","nativeSrc":"7882:3:66","nodeType":"YulIdentifier","src":"7882:3:66"},"nativeSrc":"7882:9:66","nodeType":"YulFunctionCall","src":"7882:9:66"},"variableNames":[{"name":"sum","nativeSrc":"7875:3:66","nodeType":"YulIdentifier","src":"7875:3:66"}]},{"body":{"nativeSrc":"7922:111:66","nodeType":"YulBlock","src":"7922:111:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7943:1:66","nodeType":"YulLiteral","src":"7943:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"7950:3:66","nodeType":"YulLiteral","src":"7950:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"7955:10:66","nodeType":"YulLiteral","src":"7955:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"7946:3:66","nodeType":"YulIdentifier","src":"7946:3:66"},"nativeSrc":"7946:20:66","nodeType":"YulFunctionCall","src":"7946:20:66"}],"functionName":{"name":"mstore","nativeSrc":"7936:6:66","nodeType":"YulIdentifier","src":"7936:6:66"},"nativeSrc":"7936:31:66","nodeType":"YulFunctionCall","src":"7936:31:66"},"nativeSrc":"7936:31:66","nodeType":"YulExpressionStatement","src":"7936:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7987:1:66","nodeType":"YulLiteral","src":"7987:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"7990:4:66","nodeType":"YulLiteral","src":"7990:4:66","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"7980:6:66","nodeType":"YulIdentifier","src":"7980:6:66"},"nativeSrc":"7980:15:66","nodeType":"YulFunctionCall","src":"7980:15:66"},"nativeSrc":"7980:15:66","nodeType":"YulExpressionStatement","src":"7980:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8015:1:66","nodeType":"YulLiteral","src":"8015:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"8018:4:66","nodeType":"YulLiteral","src":"8018:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"8008:6:66","nodeType":"YulIdentifier","src":"8008:6:66"},"nativeSrc":"8008:15:66","nodeType":"YulFunctionCall","src":"8008:15:66"},"nativeSrc":"8008:15:66","nodeType":"YulExpressionStatement","src":"8008:15:66"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"7906:1:66","nodeType":"YulIdentifier","src":"7906:1:66"},{"name":"sum","nativeSrc":"7909:3:66","nodeType":"YulIdentifier","src":"7909:3:66"}],"functionName":{"name":"gt","nativeSrc":"7903:2:66","nodeType":"YulIdentifier","src":"7903:2:66"},"nativeSrc":"7903:10:66","nodeType":"YulFunctionCall","src":"7903:10:66"},"nativeSrc":"7900:133:66","nodeType":"YulIf","src":"7900:133:66"}]},"name":"checked_add_t_uint256","nativeSrc":"7817:222:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"7848:1:66","nodeType":"YulTypedName","src":"7848:1:66","type":""},{"name":"y","nativeSrc":"7851:1:66","nodeType":"YulTypedName","src":"7851:1:66","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"7857:3:66","nodeType":"YulTypedName","src":"7857:3:66","type":""}],"src":"7817:222:66"},{"body":{"nativeSrc":"8247:282:66","nodeType":"YulBlock","src":"8247:282:66","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8264:9:66","nodeType":"YulIdentifier","src":"8264:9:66"},{"arguments":[{"name":"value0","nativeSrc":"8279:6:66","nodeType":"YulIdentifier","src":"8279:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8295:3:66","nodeType":"YulLiteral","src":"8295:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"8300:1:66","nodeType":"YulLiteral","src":"8300:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8291:3:66","nodeType":"YulIdentifier","src":"8291:3:66"},"nativeSrc":"8291:11:66","nodeType":"YulFunctionCall","src":"8291:11:66"},{"kind":"number","nativeSrc":"8304:1:66","nodeType":"YulLiteral","src":"8304:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8287:3:66","nodeType":"YulIdentifier","src":"8287:3:66"},"nativeSrc":"8287:19:66","nodeType":"YulFunctionCall","src":"8287:19:66"}],"functionName":{"name":"and","nativeSrc":"8275:3:66","nodeType":"YulIdentifier","src":"8275:3:66"},"nativeSrc":"8275:32:66","nodeType":"YulFunctionCall","src":"8275:32:66"}],"functionName":{"name":"mstore","nativeSrc":"8257:6:66","nodeType":"YulIdentifier","src":"8257:6:66"},"nativeSrc":"8257:51:66","nodeType":"YulFunctionCall","src":"8257:51:66"},"nativeSrc":"8257:51:66","nodeType":"YulExpressionStatement","src":"8257:51:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8328:9:66","nodeType":"YulIdentifier","src":"8328:9:66"},{"kind":"number","nativeSrc":"8339:2:66","nodeType":"YulLiteral","src":"8339:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8324:3:66","nodeType":"YulIdentifier","src":"8324:3:66"},"nativeSrc":"8324:18:66","nodeType":"YulFunctionCall","src":"8324:18:66"},{"arguments":[{"name":"value1","nativeSrc":"8348:6:66","nodeType":"YulIdentifier","src":"8348:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8364:3:66","nodeType":"YulLiteral","src":"8364:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"8369:1:66","nodeType":"YulLiteral","src":"8369:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"8360:3:66","nodeType":"YulIdentifier","src":"8360:3:66"},"nativeSrc":"8360:11:66","nodeType":"YulFunctionCall","src":"8360:11:66"},{"kind":"number","nativeSrc":"8373:1:66","nodeType":"YulLiteral","src":"8373:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"8356:3:66","nodeType":"YulIdentifier","src":"8356:3:66"},"nativeSrc":"8356:19:66","nodeType":"YulFunctionCall","src":"8356:19:66"}],"functionName":{"name":"and","nativeSrc":"8344:3:66","nodeType":"YulIdentifier","src":"8344:3:66"},"nativeSrc":"8344:32:66","nodeType":"YulFunctionCall","src":"8344:32:66"}],"functionName":{"name":"mstore","nativeSrc":"8317:6:66","nodeType":"YulIdentifier","src":"8317:6:66"},"nativeSrc":"8317:60:66","nodeType":"YulFunctionCall","src":"8317:60:66"},"nativeSrc":"8317:60:66","nodeType":"YulExpressionStatement","src":"8317:60:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8397:9:66","nodeType":"YulIdentifier","src":"8397:9:66"},{"kind":"number","nativeSrc":"8408:2:66","nodeType":"YulLiteral","src":"8408:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8393:3:66","nodeType":"YulIdentifier","src":"8393:3:66"},"nativeSrc":"8393:18:66","nodeType":"YulFunctionCall","src":"8393:18:66"},{"name":"value2","nativeSrc":"8413:6:66","nodeType":"YulIdentifier","src":"8413:6:66"}],"functionName":{"name":"mstore","nativeSrc":"8386:6:66","nodeType":"YulIdentifier","src":"8386:6:66"},"nativeSrc":"8386:34:66","nodeType":"YulFunctionCall","src":"8386:34:66"},"nativeSrc":"8386:34:66","nodeType":"YulExpressionStatement","src":"8386:34:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8440:9:66","nodeType":"YulIdentifier","src":"8440:9:66"},{"kind":"number","nativeSrc":"8451:2:66","nodeType":"YulLiteral","src":"8451:2:66","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8436:3:66","nodeType":"YulIdentifier","src":"8436:3:66"},"nativeSrc":"8436:18:66","nodeType":"YulFunctionCall","src":"8436:18:66"},{"kind":"number","nativeSrc":"8456:3:66","nodeType":"YulLiteral","src":"8456:3:66","type":"","value":"128"}],"functionName":{"name":"mstore","nativeSrc":"8429:6:66","nodeType":"YulIdentifier","src":"8429:6:66"},"nativeSrc":"8429:31:66","nodeType":"YulFunctionCall","src":"8429:31:66"},"nativeSrc":"8429:31:66","nodeType":"YulExpressionStatement","src":"8429:31:66"},{"nativeSrc":"8469:54:66","nodeType":"YulAssignment","src":"8469:54:66","value":{"arguments":[{"name":"value3","nativeSrc":"8495:6:66","nodeType":"YulIdentifier","src":"8495:6:66"},{"arguments":[{"name":"headStart","nativeSrc":"8507:9:66","nodeType":"YulIdentifier","src":"8507:9:66"},{"kind":"number","nativeSrc":"8518:3:66","nodeType":"YulLiteral","src":"8518:3:66","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"8503:3:66","nodeType":"YulIdentifier","src":"8503:3:66"},"nativeSrc":"8503:19:66","nodeType":"YulFunctionCall","src":"8503:19:66"}],"functionName":{"name":"abi_encode_string","nativeSrc":"8477:17:66","nodeType":"YulIdentifier","src":"8477:17:66"},"nativeSrc":"8477:46:66","nodeType":"YulFunctionCall","src":"8477:46:66"},"variableNames":[{"name":"tail","nativeSrc":"8469:4:66","nodeType":"YulIdentifier","src":"8469:4:66"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"8044:485:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8192:9:66","nodeType":"YulTypedName","src":"8192:9:66","type":""},{"name":"value3","nativeSrc":"8203:6:66","nodeType":"YulTypedName","src":"8203:6:66","type":""},{"name":"value2","nativeSrc":"8211:6:66","nodeType":"YulTypedName","src":"8211:6:66","type":""},{"name":"value1","nativeSrc":"8219:6:66","nodeType":"YulTypedName","src":"8219:6:66","type":""},{"name":"value0","nativeSrc":"8227:6:66","nodeType":"YulTypedName","src":"8227:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8238:4:66","nodeType":"YulTypedName","src":"8238:4:66","type":""}],"src":"8044:485:66"},{"body":{"nativeSrc":"8614:169:66","nodeType":"YulBlock","src":"8614:169:66","statements":[{"body":{"nativeSrc":"8660:16:66","nodeType":"YulBlock","src":"8660:16:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8669:1:66","nodeType":"YulLiteral","src":"8669:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"8672:1:66","nodeType":"YulLiteral","src":"8672:1:66","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8662:6:66","nodeType":"YulIdentifier","src":"8662:6:66"},"nativeSrc":"8662:12:66","nodeType":"YulFunctionCall","src":"8662:12:66"},"nativeSrc":"8662:12:66","nodeType":"YulExpressionStatement","src":"8662:12:66"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8635:7:66","nodeType":"YulIdentifier","src":"8635:7:66"},{"name":"headStart","nativeSrc":"8644:9:66","nodeType":"YulIdentifier","src":"8644:9:66"}],"functionName":{"name":"sub","nativeSrc":"8631:3:66","nodeType":"YulIdentifier","src":"8631:3:66"},"nativeSrc":"8631:23:66","nodeType":"YulFunctionCall","src":"8631:23:66"},{"kind":"number","nativeSrc":"8656:2:66","nodeType":"YulLiteral","src":"8656:2:66","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"8627:3:66","nodeType":"YulIdentifier","src":"8627:3:66"},"nativeSrc":"8627:32:66","nodeType":"YulFunctionCall","src":"8627:32:66"},"nativeSrc":"8624:52:66","nodeType":"YulIf","src":"8624:52:66"},{"nativeSrc":"8685:29:66","nodeType":"YulVariableDeclaration","src":"8685:29:66","value":{"arguments":[{"name":"headStart","nativeSrc":"8704:9:66","nodeType":"YulIdentifier","src":"8704:9:66"}],"functionName":{"name":"mload","nativeSrc":"8698:5:66","nodeType":"YulIdentifier","src":"8698:5:66"},"nativeSrc":"8698:16:66","nodeType":"YulFunctionCall","src":"8698:16:66"},"variables":[{"name":"value","nativeSrc":"8689:5:66","nodeType":"YulTypedName","src":"8689:5:66","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"8747:5:66","nodeType":"YulIdentifier","src":"8747:5:66"}],"functionName":{"name":"validator_revert_bytes4","nativeSrc":"8723:23:66","nodeType":"YulIdentifier","src":"8723:23:66"},"nativeSrc":"8723:30:66","nodeType":"YulFunctionCall","src":"8723:30:66"},"nativeSrc":"8723:30:66","nodeType":"YulExpressionStatement","src":"8723:30:66"},{"nativeSrc":"8762:15:66","nodeType":"YulAssignment","src":"8762:15:66","value":{"name":"value","nativeSrc":"8772:5:66","nodeType":"YulIdentifier","src":"8772:5:66"},"variableNames":[{"name":"value0","nativeSrc":"8762:6:66","nodeType":"YulIdentifier","src":"8762:6:66"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nativeSrc":"8534:249:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8580:9:66","nodeType":"YulTypedName","src":"8580:9:66","type":""},{"name":"dataEnd","nativeSrc":"8591:7:66","nodeType":"YulTypedName","src":"8591:7:66","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8603:6:66","nodeType":"YulTypedName","src":"8603:6:66","type":""}],"src":"8534:249:66"},{"body":{"nativeSrc":"8844:65:66","nodeType":"YulBlock","src":"8844:65:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8861:1:66","nodeType":"YulLiteral","src":"8861:1:66","type":"","value":"0"},{"name":"ptr","nativeSrc":"8864:3:66","nodeType":"YulIdentifier","src":"8864:3:66"}],"functionName":{"name":"mstore","nativeSrc":"8854:6:66","nodeType":"YulIdentifier","src":"8854:6:66"},"nativeSrc":"8854:14:66","nodeType":"YulFunctionCall","src":"8854:14:66"},"nativeSrc":"8854:14:66","nodeType":"YulExpressionStatement","src":"8854:14:66"},{"nativeSrc":"8877:26:66","nodeType":"YulAssignment","src":"8877:26:66","value":{"arguments":[{"kind":"number","nativeSrc":"8895:1:66","nodeType":"YulLiteral","src":"8895:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"8898:4:66","nodeType":"YulLiteral","src":"8898:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"8885:9:66","nodeType":"YulIdentifier","src":"8885:9:66"},"nativeSrc":"8885:18:66","nodeType":"YulFunctionCall","src":"8885:18:66"},"variableNames":[{"name":"data","nativeSrc":"8877:4:66","nodeType":"YulIdentifier","src":"8877:4:66"}]}]},"name":"array_dataslot_string_storage","nativeSrc":"8788:121:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nativeSrc":"8827:3:66","nodeType":"YulTypedName","src":"8827:3:66","type":""}],"returnVariables":[{"name":"data","nativeSrc":"8835:4:66","nodeType":"YulTypedName","src":"8835:4:66","type":""}],"src":"8788:121:66"},{"body":{"nativeSrc":"8995:437:66","nodeType":"YulBlock","src":"8995:437:66","statements":[{"body":{"nativeSrc":"9028:398:66","nodeType":"YulBlock","src":"9028:398:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9049:1:66","nodeType":"YulLiteral","src":"9049:1:66","type":"","value":"0"},{"name":"array","nativeSrc":"9052:5:66","nodeType":"YulIdentifier","src":"9052:5:66"}],"functionName":{"name":"mstore","nativeSrc":"9042:6:66","nodeType":"YulIdentifier","src":"9042:6:66"},"nativeSrc":"9042:16:66","nodeType":"YulFunctionCall","src":"9042:16:66"},"nativeSrc":"9042:16:66","nodeType":"YulExpressionStatement","src":"9042:16:66"},{"nativeSrc":"9071:30:66","nodeType":"YulVariableDeclaration","src":"9071:30:66","value":{"arguments":[{"kind":"number","nativeSrc":"9093:1:66","nodeType":"YulLiteral","src":"9093:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"9096:4:66","nodeType":"YulLiteral","src":"9096:4:66","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"9083:9:66","nodeType":"YulIdentifier","src":"9083:9:66"},"nativeSrc":"9083:18:66","nodeType":"YulFunctionCall","src":"9083:18:66"},"variables":[{"name":"data","nativeSrc":"9075:4:66","nodeType":"YulTypedName","src":"9075:4:66","type":""}]},{"nativeSrc":"9114:57:66","nodeType":"YulVariableDeclaration","src":"9114:57:66","value":{"arguments":[{"name":"data","nativeSrc":"9137:4:66","nodeType":"YulIdentifier","src":"9137:4:66"},{"arguments":[{"kind":"number","nativeSrc":"9147:1:66","nodeType":"YulLiteral","src":"9147:1:66","type":"","value":"5"},{"arguments":[{"name":"startIndex","nativeSrc":"9154:10:66","nodeType":"YulIdentifier","src":"9154:10:66"},{"kind":"number","nativeSrc":"9166:2:66","nodeType":"YulLiteral","src":"9166:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"9150:3:66","nodeType":"YulIdentifier","src":"9150:3:66"},"nativeSrc":"9150:19:66","nodeType":"YulFunctionCall","src":"9150:19:66"}],"functionName":{"name":"shr","nativeSrc":"9143:3:66","nodeType":"YulIdentifier","src":"9143:3:66"},"nativeSrc":"9143:27:66","nodeType":"YulFunctionCall","src":"9143:27:66"}],"functionName":{"name":"add","nativeSrc":"9133:3:66","nodeType":"YulIdentifier","src":"9133:3:66"},"nativeSrc":"9133:38:66","nodeType":"YulFunctionCall","src":"9133:38:66"},"variables":[{"name":"deleteStart","nativeSrc":"9118:11:66","nodeType":"YulTypedName","src":"9118:11:66","type":""}]},{"body":{"nativeSrc":"9208:23:66","nodeType":"YulBlock","src":"9208:23:66","statements":[{"nativeSrc":"9210:19:66","nodeType":"YulAssignment","src":"9210:19:66","value":{"name":"data","nativeSrc":"9225:4:66","nodeType":"YulIdentifier","src":"9225:4:66"},"variableNames":[{"name":"deleteStart","nativeSrc":"9210:11:66","nodeType":"YulIdentifier","src":"9210:11:66"}]}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"9190:10:66","nodeType":"YulIdentifier","src":"9190:10:66"},{"kind":"number","nativeSrc":"9202:4:66","nodeType":"YulLiteral","src":"9202:4:66","type":"","value":"0x20"}],"functionName":{"name":"lt","nativeSrc":"9187:2:66","nodeType":"YulIdentifier","src":"9187:2:66"},"nativeSrc":"9187:20:66","nodeType":"YulFunctionCall","src":"9187:20:66"},"nativeSrc":"9184:47:66","nodeType":"YulIf","src":"9184:47:66"},{"nativeSrc":"9244:41:66","nodeType":"YulVariableDeclaration","src":"9244:41:66","value":{"arguments":[{"name":"data","nativeSrc":"9258:4:66","nodeType":"YulIdentifier","src":"9258:4:66"},{"arguments":[{"kind":"number","nativeSrc":"9268:1:66","nodeType":"YulLiteral","src":"9268:1:66","type":"","value":"5"},{"arguments":[{"name":"len","nativeSrc":"9275:3:66","nodeType":"YulIdentifier","src":"9275:3:66"},{"kind":"number","nativeSrc":"9280:2:66","nodeType":"YulLiteral","src":"9280:2:66","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"9271:3:66","nodeType":"YulIdentifier","src":"9271:3:66"},"nativeSrc":"9271:12:66","nodeType":"YulFunctionCall","src":"9271:12:66"}],"functionName":{"name":"shr","nativeSrc":"9264:3:66","nodeType":"YulIdentifier","src":"9264:3:66"},"nativeSrc":"9264:20:66","nodeType":"YulFunctionCall","src":"9264:20:66"}],"functionName":{"name":"add","nativeSrc":"9254:3:66","nodeType":"YulIdentifier","src":"9254:3:66"},"nativeSrc":"9254:31:66","nodeType":"YulFunctionCall","src":"9254:31:66"},"variables":[{"name":"_1","nativeSrc":"9248:2:66","nodeType":"YulTypedName","src":"9248:2:66","type":""}]},{"nativeSrc":"9298:24:66","nodeType":"YulVariableDeclaration","src":"9298:24:66","value":{"name":"deleteStart","nativeSrc":"9311:11:66","nodeType":"YulIdentifier","src":"9311:11:66"},"variables":[{"name":"start","nativeSrc":"9302:5:66","nodeType":"YulTypedName","src":"9302:5:66","type":""}]},{"body":{"nativeSrc":"9396:20:66","nodeType":"YulBlock","src":"9396:20:66","statements":[{"expression":{"arguments":[{"name":"start","nativeSrc":"9405:5:66","nodeType":"YulIdentifier","src":"9405:5:66"},{"kind":"number","nativeSrc":"9412:1:66","nodeType":"YulLiteral","src":"9412:1:66","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"9398:6:66","nodeType":"YulIdentifier","src":"9398:6:66"},"nativeSrc":"9398:16:66","nodeType":"YulFunctionCall","src":"9398:16:66"},"nativeSrc":"9398:16:66","nodeType":"YulExpressionStatement","src":"9398:16:66"}]},"condition":{"arguments":[{"name":"start","nativeSrc":"9346:5:66","nodeType":"YulIdentifier","src":"9346:5:66"},{"name":"_1","nativeSrc":"9353:2:66","nodeType":"YulIdentifier","src":"9353:2:66"}],"functionName":{"name":"lt","nativeSrc":"9343:2:66","nodeType":"YulIdentifier","src":"9343:2:66"},"nativeSrc":"9343:13:66","nodeType":"YulFunctionCall","src":"9343:13:66"},"nativeSrc":"9335:81:66","nodeType":"YulForLoop","post":{"nativeSrc":"9357:26:66","nodeType":"YulBlock","src":"9357:26:66","statements":[{"nativeSrc":"9359:22:66","nodeType":"YulAssignment","src":"9359:22:66","value":{"arguments":[{"name":"start","nativeSrc":"9372:5:66","nodeType":"YulIdentifier","src":"9372:5:66"},{"kind":"number","nativeSrc":"9379:1:66","nodeType":"YulLiteral","src":"9379:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9368:3:66","nodeType":"YulIdentifier","src":"9368:3:66"},"nativeSrc":"9368:13:66","nodeType":"YulFunctionCall","src":"9368:13:66"},"variableNames":[{"name":"start","nativeSrc":"9359:5:66","nodeType":"YulIdentifier","src":"9359:5:66"}]}]},"pre":{"nativeSrc":"9339:3:66","nodeType":"YulBlock","src":"9339:3:66","statements":[]},"src":"9335:81:66"}]},"condition":{"arguments":[{"name":"len","nativeSrc":"9011:3:66","nodeType":"YulIdentifier","src":"9011:3:66"},{"kind":"number","nativeSrc":"9016:2:66","nodeType":"YulLiteral","src":"9016:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"9008:2:66","nodeType":"YulIdentifier","src":"9008:2:66"},"nativeSrc":"9008:11:66","nodeType":"YulFunctionCall","src":"9008:11:66"},"nativeSrc":"9005:421:66","nodeType":"YulIf","src":"9005:421:66"}]},"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"8914:518:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nativeSrc":"8967:5:66","nodeType":"YulTypedName","src":"8967:5:66","type":""},{"name":"len","nativeSrc":"8974:3:66","nodeType":"YulTypedName","src":"8974:3:66","type":""},{"name":"startIndex","nativeSrc":"8979:10:66","nodeType":"YulTypedName","src":"8979:10:66","type":""}],"src":"8914:518:66"},{"body":{"nativeSrc":"9522:81:66","nodeType":"YulBlock","src":"9522:81:66","statements":[{"nativeSrc":"9532:65:66","nodeType":"YulAssignment","src":"9532:65:66","value":{"arguments":[{"arguments":[{"name":"data","nativeSrc":"9547:4:66","nodeType":"YulIdentifier","src":"9547:4:66"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9565:1:66","nodeType":"YulLiteral","src":"9565:1:66","type":"","value":"3"},{"name":"len","nativeSrc":"9568:3:66","nodeType":"YulIdentifier","src":"9568:3:66"}],"functionName":{"name":"shl","nativeSrc":"9561:3:66","nodeType":"YulIdentifier","src":"9561:3:66"},"nativeSrc":"9561:11:66","nodeType":"YulFunctionCall","src":"9561:11:66"},{"arguments":[{"kind":"number","nativeSrc":"9578:1:66","nodeType":"YulLiteral","src":"9578:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"9574:3:66","nodeType":"YulIdentifier","src":"9574:3:66"},"nativeSrc":"9574:6:66","nodeType":"YulFunctionCall","src":"9574:6:66"}],"functionName":{"name":"shr","nativeSrc":"9557:3:66","nodeType":"YulIdentifier","src":"9557:3:66"},"nativeSrc":"9557:24:66","nodeType":"YulFunctionCall","src":"9557:24:66"}],"functionName":{"name":"not","nativeSrc":"9553:3:66","nodeType":"YulIdentifier","src":"9553:3:66"},"nativeSrc":"9553:29:66","nodeType":"YulFunctionCall","src":"9553:29:66"}],"functionName":{"name":"and","nativeSrc":"9543:3:66","nodeType":"YulIdentifier","src":"9543:3:66"},"nativeSrc":"9543:40:66","nodeType":"YulFunctionCall","src":"9543:40:66"},{"arguments":[{"kind":"number","nativeSrc":"9589:1:66","nodeType":"YulLiteral","src":"9589:1:66","type":"","value":"1"},{"name":"len","nativeSrc":"9592:3:66","nodeType":"YulIdentifier","src":"9592:3:66"}],"functionName":{"name":"shl","nativeSrc":"9585:3:66","nodeType":"YulIdentifier","src":"9585:3:66"},"nativeSrc":"9585:11:66","nodeType":"YulFunctionCall","src":"9585:11:66"}],"functionName":{"name":"or","nativeSrc":"9540:2:66","nodeType":"YulIdentifier","src":"9540:2:66"},"nativeSrc":"9540:57:66","nodeType":"YulFunctionCall","src":"9540:57:66"},"variableNames":[{"name":"used","nativeSrc":"9532:4:66","nodeType":"YulIdentifier","src":"9532:4:66"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"9437:166:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nativeSrc":"9499:4:66","nodeType":"YulTypedName","src":"9499:4:66","type":""},{"name":"len","nativeSrc":"9505:3:66","nodeType":"YulTypedName","src":"9505:3:66","type":""}],"returnVariables":[{"name":"used","nativeSrc":"9513:4:66","nodeType":"YulTypedName","src":"9513:4:66","type":""}],"src":"9437:166:66"},{"body":{"nativeSrc":"9704:1203:66","nodeType":"YulBlock","src":"9704:1203:66","statements":[{"nativeSrc":"9714:24:66","nodeType":"YulVariableDeclaration","src":"9714:24:66","value":{"arguments":[{"name":"src","nativeSrc":"9734:3:66","nodeType":"YulIdentifier","src":"9734:3:66"}],"functionName":{"name":"mload","nativeSrc":"9728:5:66","nodeType":"YulIdentifier","src":"9728:5:66"},"nativeSrc":"9728:10:66","nodeType":"YulFunctionCall","src":"9728:10:66"},"variables":[{"name":"newLen","nativeSrc":"9718:6:66","nodeType":"YulTypedName","src":"9718:6:66","type":""}]},{"body":{"nativeSrc":"9781:22:66","nodeType":"YulBlock","src":"9781:22:66","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"9783:16:66","nodeType":"YulIdentifier","src":"9783:16:66"},"nativeSrc":"9783:18:66","nodeType":"YulFunctionCall","src":"9783:18:66"},"nativeSrc":"9783:18:66","nodeType":"YulExpressionStatement","src":"9783:18:66"}]},"condition":{"arguments":[{"name":"newLen","nativeSrc":"9753:6:66","nodeType":"YulIdentifier","src":"9753:6:66"},{"kind":"number","nativeSrc":"9761:18:66","nodeType":"YulLiteral","src":"9761:18:66","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"9750:2:66","nodeType":"YulIdentifier","src":"9750:2:66"},"nativeSrc":"9750:30:66","nodeType":"YulFunctionCall","src":"9750:30:66"},"nativeSrc":"9747:56:66","nodeType":"YulIf","src":"9747:56:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"9856:4:66","nodeType":"YulIdentifier","src":"9856:4:66"},{"arguments":[{"arguments":[{"name":"slot","nativeSrc":"9894:4:66","nodeType":"YulIdentifier","src":"9894:4:66"}],"functionName":{"name":"sload","nativeSrc":"9888:5:66","nodeType":"YulIdentifier","src":"9888:5:66"},"nativeSrc":"9888:11:66","nodeType":"YulFunctionCall","src":"9888:11:66"}],"functionName":{"name":"extract_byte_array_length","nativeSrc":"9862:25:66","nodeType":"YulIdentifier","src":"9862:25:66"},"nativeSrc":"9862:38:66","nodeType":"YulFunctionCall","src":"9862:38:66"},{"name":"newLen","nativeSrc":"9902:6:66","nodeType":"YulIdentifier","src":"9902:6:66"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nativeSrc":"9812:43:66","nodeType":"YulIdentifier","src":"9812:43:66"},"nativeSrc":"9812:97:66","nodeType":"YulFunctionCall","src":"9812:97:66"},"nativeSrc":"9812:97:66","nodeType":"YulExpressionStatement","src":"9812:97:66"},{"nativeSrc":"9918:18:66","nodeType":"YulVariableDeclaration","src":"9918:18:66","value":{"kind":"number","nativeSrc":"9935:1:66","nodeType":"YulLiteral","src":"9935:1:66","type":"","value":"0"},"variables":[{"name":"srcOffset","nativeSrc":"9922:9:66","nodeType":"YulTypedName","src":"9922:9:66","type":""}]},{"nativeSrc":"9945:17:66","nodeType":"YulAssignment","src":"9945:17:66","value":{"kind":"number","nativeSrc":"9958:4:66","nodeType":"YulLiteral","src":"9958:4:66","type":"","value":"0x20"},"variableNames":[{"name":"srcOffset","nativeSrc":"9945:9:66","nodeType":"YulIdentifier","src":"9945:9:66"}]},{"cases":[{"body":{"nativeSrc":"10008:642:66","nodeType":"YulBlock","src":"10008:642:66","statements":[{"nativeSrc":"10022:35:66","nodeType":"YulVariableDeclaration","src":"10022:35:66","value":{"arguments":[{"name":"newLen","nativeSrc":"10041:6:66","nodeType":"YulIdentifier","src":"10041:6:66"},{"arguments":[{"kind":"number","nativeSrc":"10053:2:66","nodeType":"YulLiteral","src":"10053:2:66","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"10049:3:66","nodeType":"YulIdentifier","src":"10049:3:66"},"nativeSrc":"10049:7:66","nodeType":"YulFunctionCall","src":"10049:7:66"}],"functionName":{"name":"and","nativeSrc":"10037:3:66","nodeType":"YulIdentifier","src":"10037:3:66"},"nativeSrc":"10037:20:66","nodeType":"YulFunctionCall","src":"10037:20:66"},"variables":[{"name":"loopEnd","nativeSrc":"10026:7:66","nodeType":"YulTypedName","src":"10026:7:66","type":""}]},{"nativeSrc":"10070:49:66","nodeType":"YulVariableDeclaration","src":"10070:49:66","value":{"arguments":[{"name":"slot","nativeSrc":"10114:4:66","nodeType":"YulIdentifier","src":"10114:4:66"}],"functionName":{"name":"array_dataslot_string_storage","nativeSrc":"10084:29:66","nodeType":"YulIdentifier","src":"10084:29:66"},"nativeSrc":"10084:35:66","nodeType":"YulFunctionCall","src":"10084:35:66"},"variables":[{"name":"dstPtr","nativeSrc":"10074:6:66","nodeType":"YulTypedName","src":"10074:6:66","type":""}]},{"nativeSrc":"10132:10:66","nodeType":"YulVariableDeclaration","src":"10132:10:66","value":{"kind":"number","nativeSrc":"10141:1:66","nodeType":"YulLiteral","src":"10141:1:66","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"10136:1:66","nodeType":"YulTypedName","src":"10136:1:66","type":""}]},{"body":{"nativeSrc":"10212:165:66","nodeType":"YulBlock","src":"10212:165:66","statements":[{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"10237:6:66","nodeType":"YulIdentifier","src":"10237:6:66"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10255:3:66","nodeType":"YulIdentifier","src":"10255:3:66"},{"name":"srcOffset","nativeSrc":"10260:9:66","nodeType":"YulIdentifier","src":"10260:9:66"}],"functionName":{"name":"add","nativeSrc":"10251:3:66","nodeType":"YulIdentifier","src":"10251:3:66"},"nativeSrc":"10251:19:66","nodeType":"YulFunctionCall","src":"10251:19:66"}],"functionName":{"name":"mload","nativeSrc":"10245:5:66","nodeType":"YulIdentifier","src":"10245:5:66"},"nativeSrc":"10245:26:66","nodeType":"YulFunctionCall","src":"10245:26:66"}],"functionName":{"name":"sstore","nativeSrc":"10230:6:66","nodeType":"YulIdentifier","src":"10230:6:66"},"nativeSrc":"10230:42:66","nodeType":"YulFunctionCall","src":"10230:42:66"},"nativeSrc":"10230:42:66","nodeType":"YulExpressionStatement","src":"10230:42:66"},{"nativeSrc":"10289:24:66","nodeType":"YulAssignment","src":"10289:24:66","value":{"arguments":[{"name":"dstPtr","nativeSrc":"10303:6:66","nodeType":"YulIdentifier","src":"10303:6:66"},{"kind":"number","nativeSrc":"10311:1:66","nodeType":"YulLiteral","src":"10311:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10299:3:66","nodeType":"YulIdentifier","src":"10299:3:66"},"nativeSrc":"10299:14:66","nodeType":"YulFunctionCall","src":"10299:14:66"},"variableNames":[{"name":"dstPtr","nativeSrc":"10289:6:66","nodeType":"YulIdentifier","src":"10289:6:66"}]},{"nativeSrc":"10330:33:66","nodeType":"YulAssignment","src":"10330:33:66","value":{"arguments":[{"name":"srcOffset","nativeSrc":"10347:9:66","nodeType":"YulIdentifier","src":"10347:9:66"},{"kind":"number","nativeSrc":"10358:4:66","nodeType":"YulLiteral","src":"10358:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10343:3:66","nodeType":"YulIdentifier","src":"10343:3:66"},"nativeSrc":"10343:20:66","nodeType":"YulFunctionCall","src":"10343:20:66"},"variableNames":[{"name":"srcOffset","nativeSrc":"10330:9:66","nodeType":"YulIdentifier","src":"10330:9:66"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"10166:1:66","nodeType":"YulIdentifier","src":"10166:1:66"},{"name":"loopEnd","nativeSrc":"10169:7:66","nodeType":"YulIdentifier","src":"10169:7:66"}],"functionName":{"name":"lt","nativeSrc":"10163:2:66","nodeType":"YulIdentifier","src":"10163:2:66"},"nativeSrc":"10163:14:66","nodeType":"YulFunctionCall","src":"10163:14:66"},"nativeSrc":"10155:222:66","nodeType":"YulForLoop","post":{"nativeSrc":"10178:21:66","nodeType":"YulBlock","src":"10178:21:66","statements":[{"nativeSrc":"10180:17:66","nodeType":"YulAssignment","src":"10180:17:66","value":{"arguments":[{"name":"i","nativeSrc":"10189:1:66","nodeType":"YulIdentifier","src":"10189:1:66"},{"kind":"number","nativeSrc":"10192:4:66","nodeType":"YulLiteral","src":"10192:4:66","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10185:3:66","nodeType":"YulIdentifier","src":"10185:3:66"},"nativeSrc":"10185:12:66","nodeType":"YulFunctionCall","src":"10185:12:66"},"variableNames":[{"name":"i","nativeSrc":"10180:1:66","nodeType":"YulIdentifier","src":"10180:1:66"}]}]},"pre":{"nativeSrc":"10159:3:66","nodeType":"YulBlock","src":"10159:3:66","statements":[]},"src":"10155:222:66"},{"body":{"nativeSrc":"10425:166:66","nodeType":"YulBlock","src":"10425:166:66","statements":[{"nativeSrc":"10443:43:66","nodeType":"YulVariableDeclaration","src":"10443:43:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10470:3:66","nodeType":"YulIdentifier","src":"10470:3:66"},{"name":"srcOffset","nativeSrc":"10475:9:66","nodeType":"YulIdentifier","src":"10475:9:66"}],"functionName":{"name":"add","nativeSrc":"10466:3:66","nodeType":"YulIdentifier","src":"10466:3:66"},"nativeSrc":"10466:19:66","nodeType":"YulFunctionCall","src":"10466:19:66"}],"functionName":{"name":"mload","nativeSrc":"10460:5:66","nodeType":"YulIdentifier","src":"10460:5:66"},"nativeSrc":"10460:26:66","nodeType":"YulFunctionCall","src":"10460:26:66"},"variables":[{"name":"lastValue","nativeSrc":"10447:9:66","nodeType":"YulTypedName","src":"10447:9:66","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nativeSrc":"10510:6:66","nodeType":"YulIdentifier","src":"10510:6:66"},{"arguments":[{"name":"lastValue","nativeSrc":"10522:9:66","nodeType":"YulIdentifier","src":"10522:9:66"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10549:1:66","nodeType":"YulLiteral","src":"10549:1:66","type":"","value":"3"},{"name":"newLen","nativeSrc":"10552:6:66","nodeType":"YulIdentifier","src":"10552:6:66"}],"functionName":{"name":"shl","nativeSrc":"10545:3:66","nodeType":"YulIdentifier","src":"10545:3:66"},"nativeSrc":"10545:14:66","nodeType":"YulFunctionCall","src":"10545:14:66"},{"kind":"number","nativeSrc":"10561:3:66","nodeType":"YulLiteral","src":"10561:3:66","type":"","value":"248"}],"functionName":{"name":"and","nativeSrc":"10541:3:66","nodeType":"YulIdentifier","src":"10541:3:66"},"nativeSrc":"10541:24:66","nodeType":"YulFunctionCall","src":"10541:24:66"},{"arguments":[{"kind":"number","nativeSrc":"10571:1:66","nodeType":"YulLiteral","src":"10571:1:66","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"10567:3:66","nodeType":"YulIdentifier","src":"10567:3:66"},"nativeSrc":"10567:6:66","nodeType":"YulFunctionCall","src":"10567:6:66"}],"functionName":{"name":"shr","nativeSrc":"10537:3:66","nodeType":"YulIdentifier","src":"10537:3:66"},"nativeSrc":"10537:37:66","nodeType":"YulFunctionCall","src":"10537:37:66"}],"functionName":{"name":"not","nativeSrc":"10533:3:66","nodeType":"YulIdentifier","src":"10533:3:66"},"nativeSrc":"10533:42:66","nodeType":"YulFunctionCall","src":"10533:42:66"}],"functionName":{"name":"and","nativeSrc":"10518:3:66","nodeType":"YulIdentifier","src":"10518:3:66"},"nativeSrc":"10518:58:66","nodeType":"YulFunctionCall","src":"10518:58:66"}],"functionName":{"name":"sstore","nativeSrc":"10503:6:66","nodeType":"YulIdentifier","src":"10503:6:66"},"nativeSrc":"10503:74:66","nodeType":"YulFunctionCall","src":"10503:74:66"},"nativeSrc":"10503:74:66","nodeType":"YulExpressionStatement","src":"10503:74:66"}]},"condition":{"arguments":[{"name":"loopEnd","nativeSrc":"10396:7:66","nodeType":"YulIdentifier","src":"10396:7:66"},{"name":"newLen","nativeSrc":"10405:6:66","nodeType":"YulIdentifier","src":"10405:6:66"}],"functionName":{"name":"lt","nativeSrc":"10393:2:66","nodeType":"YulIdentifier","src":"10393:2:66"},"nativeSrc":"10393:19:66","nodeType":"YulFunctionCall","src":"10393:19:66"},"nativeSrc":"10390:201:66","nodeType":"YulIf","src":"10390:201:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"10611:4:66","nodeType":"YulIdentifier","src":"10611:4:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10625:1:66","nodeType":"YulLiteral","src":"10625:1:66","type":"","value":"1"},{"name":"newLen","nativeSrc":"10628:6:66","nodeType":"YulIdentifier","src":"10628:6:66"}],"functionName":{"name":"shl","nativeSrc":"10621:3:66","nodeType":"YulIdentifier","src":"10621:3:66"},"nativeSrc":"10621:14:66","nodeType":"YulFunctionCall","src":"10621:14:66"},{"kind":"number","nativeSrc":"10637:1:66","nodeType":"YulLiteral","src":"10637:1:66","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10617:3:66","nodeType":"YulIdentifier","src":"10617:3:66"},"nativeSrc":"10617:22:66","nodeType":"YulFunctionCall","src":"10617:22:66"}],"functionName":{"name":"sstore","nativeSrc":"10604:6:66","nodeType":"YulIdentifier","src":"10604:6:66"},"nativeSrc":"10604:36:66","nodeType":"YulFunctionCall","src":"10604:36:66"},"nativeSrc":"10604:36:66","nodeType":"YulExpressionStatement","src":"10604:36:66"}]},"nativeSrc":"10001:649:66","nodeType":"YulCase","src":"10001:649:66","value":{"kind":"number","nativeSrc":"10006:1:66","nodeType":"YulLiteral","src":"10006:1:66","type":"","value":"1"}},{"body":{"nativeSrc":"10667:234:66","nodeType":"YulBlock","src":"10667:234:66","statements":[{"nativeSrc":"10681:14:66","nodeType":"YulVariableDeclaration","src":"10681:14:66","value":{"kind":"number","nativeSrc":"10694:1:66","nodeType":"YulLiteral","src":"10694:1:66","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"10685:5:66","nodeType":"YulTypedName","src":"10685:5:66","type":""}]},{"body":{"nativeSrc":"10730:67:66","nodeType":"YulBlock","src":"10730:67:66","statements":[{"nativeSrc":"10748:35:66","nodeType":"YulAssignment","src":"10748:35:66","value":{"arguments":[{"arguments":[{"name":"src","nativeSrc":"10767:3:66","nodeType":"YulIdentifier","src":"10767:3:66"},{"name":"srcOffset","nativeSrc":"10772:9:66","nodeType":"YulIdentifier","src":"10772:9:66"}],"functionName":{"name":"add","nativeSrc":"10763:3:66","nodeType":"YulIdentifier","src":"10763:3:66"},"nativeSrc":"10763:19:66","nodeType":"YulFunctionCall","src":"10763:19:66"}],"functionName":{"name":"mload","nativeSrc":"10757:5:66","nodeType":"YulIdentifier","src":"10757:5:66"},"nativeSrc":"10757:26:66","nodeType":"YulFunctionCall","src":"10757:26:66"},"variableNames":[{"name":"value","nativeSrc":"10748:5:66","nodeType":"YulIdentifier","src":"10748:5:66"}]}]},"condition":{"name":"newLen","nativeSrc":"10711:6:66","nodeType":"YulIdentifier","src":"10711:6:66"},"nativeSrc":"10708:89:66","nodeType":"YulIf","src":"10708:89:66"},{"expression":{"arguments":[{"name":"slot","nativeSrc":"10817:4:66","nodeType":"YulIdentifier","src":"10817:4:66"},{"arguments":[{"name":"value","nativeSrc":"10876:5:66","nodeType":"YulIdentifier","src":"10876:5:66"},{"name":"newLen","nativeSrc":"10883:6:66","nodeType":"YulIdentifier","src":"10883:6:66"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nativeSrc":"10823:52:66","nodeType":"YulIdentifier","src":"10823:52:66"},"nativeSrc":"10823:67:66","nodeType":"YulFunctionCall","src":"10823:67:66"}],"functionName":{"name":"sstore","nativeSrc":"10810:6:66","nodeType":"YulIdentifier","src":"10810:6:66"},"nativeSrc":"10810:81:66","nodeType":"YulFunctionCall","src":"10810:81:66"},"nativeSrc":"10810:81:66","nodeType":"YulExpressionStatement","src":"10810:81:66"}]},"nativeSrc":"10659:242:66","nodeType":"YulCase","src":"10659:242:66","value":"default"}],"expression":{"arguments":[{"name":"newLen","nativeSrc":"9981:6:66","nodeType":"YulIdentifier","src":"9981:6:66"},{"kind":"number","nativeSrc":"9989:2:66","nodeType":"YulLiteral","src":"9989:2:66","type":"","value":"31"}],"functionName":{"name":"gt","nativeSrc":"9978:2:66","nodeType":"YulIdentifier","src":"9978:2:66"},"nativeSrc":"9978:14:66","nodeType":"YulFunctionCall","src":"9978:14:66"},"nativeSrc":"9971:930:66","nodeType":"YulSwitch","src":"9971:930:66"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nativeSrc":"9608:1299:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nativeSrc":"9689:4:66","nodeType":"YulTypedName","src":"9689:4:66","type":""},{"name":"src","nativeSrc":"9695:3:66","nodeType":"YulTypedName","src":"9695:3:66","type":""}],"src":"9608:1299:66"},{"body":{"nativeSrc":"11041:145:66","nodeType":"YulBlock","src":"11041:145:66","statements":[{"nativeSrc":"11051:26:66","nodeType":"YulAssignment","src":"11051:26:66","value":{"arguments":[{"name":"headStart","nativeSrc":"11063:9:66","nodeType":"YulIdentifier","src":"11063:9:66"},{"kind":"number","nativeSrc":"11074:2:66","nodeType":"YulLiteral","src":"11074:2:66","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11059:3:66","nodeType":"YulIdentifier","src":"11059:3:66"},"nativeSrc":"11059:18:66","nodeType":"YulFunctionCall","src":"11059:18:66"},"variableNames":[{"name":"tail","nativeSrc":"11051:4:66","nodeType":"YulIdentifier","src":"11051:4:66"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"11093:9:66","nodeType":"YulIdentifier","src":"11093:9:66"},{"arguments":[{"name":"value0","nativeSrc":"11108:6:66","nodeType":"YulIdentifier","src":"11108:6:66"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11124:3:66","nodeType":"YulLiteral","src":"11124:3:66","type":"","value":"160"},{"kind":"number","nativeSrc":"11129:1:66","nodeType":"YulLiteral","src":"11129:1:66","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"11120:3:66","nodeType":"YulIdentifier","src":"11120:3:66"},"nativeSrc":"11120:11:66","nodeType":"YulFunctionCall","src":"11120:11:66"},{"kind":"number","nativeSrc":"11133:1:66","nodeType":"YulLiteral","src":"11133:1:66","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"11116:3:66","nodeType":"YulIdentifier","src":"11116:3:66"},"nativeSrc":"11116:19:66","nodeType":"YulFunctionCall","src":"11116:19:66"}],"functionName":{"name":"and","nativeSrc":"11104:3:66","nodeType":"YulIdentifier","src":"11104:3:66"},"nativeSrc":"11104:32:66","nodeType":"YulFunctionCall","src":"11104:32:66"}],"functionName":{"name":"mstore","nativeSrc":"11086:6:66","nodeType":"YulIdentifier","src":"11086:6:66"},"nativeSrc":"11086:51:66","nodeType":"YulFunctionCall","src":"11086:51:66"},"nativeSrc":"11086:51:66","nodeType":"YulExpressionStatement","src":"11086:51:66"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11157:9:66","nodeType":"YulIdentifier","src":"11157:9:66"},{"kind":"number","nativeSrc":"11168:2:66","nodeType":"YulLiteral","src":"11168:2:66","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11153:3:66","nodeType":"YulIdentifier","src":"11153:3:66"},"nativeSrc":"11153:18:66","nodeType":"YulFunctionCall","src":"11153:18:66"},{"name":"value1","nativeSrc":"11173:6:66","nodeType":"YulIdentifier","src":"11173:6:66"}],"functionName":{"name":"mstore","nativeSrc":"11146:6:66","nodeType":"YulIdentifier","src":"11146:6:66"},"nativeSrc":"11146:34:66","nodeType":"YulFunctionCall","src":"11146:34:66"},"nativeSrc":"11146:34:66","nodeType":"YulExpressionStatement","src":"11146:34:66"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"10912:274:66","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11002:9:66","nodeType":"YulTypedName","src":"11002:9:66","type":""},{"name":"value1","nativeSrc":"11013:6:66","nodeType":"YulTypedName","src":"11013:6:66","type":""},{"name":"value0","nativeSrc":"11021:6:66","nodeType":"YulTypedName","src":"11021:6:66","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"11032:4:66","nodeType":"YulTypedName","src":"11032:4:66","type":""}],"src":"10912:274:66"},{"body":{"nativeSrc":"11223:95:66","nodeType":"YulBlock","src":"11223:95:66","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11240:1:66","nodeType":"YulLiteral","src":"11240:1:66","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"11247:3:66","nodeType":"YulLiteral","src":"11247:3:66","type":"","value":"224"},{"kind":"number","nativeSrc":"11252:10:66","nodeType":"YulLiteral","src":"11252:10:66","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"11243:3:66","nodeType":"YulIdentifier","src":"11243:3:66"},"nativeSrc":"11243:20:66","nodeType":"YulFunctionCall","src":"11243:20:66"}],"functionName":{"name":"mstore","nativeSrc":"11233:6:66","nodeType":"YulIdentifier","src":"11233:6:66"},"nativeSrc":"11233:31:66","nodeType":"YulFunctionCall","src":"11233:31:66"},"nativeSrc":"11233:31:66","nodeType":"YulExpressionStatement","src":"11233:31:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11280:1:66","nodeType":"YulLiteral","src":"11280:1:66","type":"","value":"4"},{"kind":"number","nativeSrc":"11283:4:66","nodeType":"YulLiteral","src":"11283:4:66","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"11273:6:66","nodeType":"YulIdentifier","src":"11273:6:66"},"nativeSrc":"11273:15:66","nodeType":"YulFunctionCall","src":"11273:15:66"},"nativeSrc":"11273:15:66","nodeType":"YulExpressionStatement","src":"11273:15:66"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11304:1:66","nodeType":"YulLiteral","src":"11304:1:66","type":"","value":"0"},{"kind":"number","nativeSrc":"11307:4:66","nodeType":"YulLiteral","src":"11307:4:66","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"11297:6:66","nodeType":"YulIdentifier","src":"11297:6:66"},"nativeSrc":"11297:15:66","nodeType":"YulFunctionCall","src":"11297:15:66"},"nativeSrc":"11297:15:66","nodeType":"YulExpressionStatement","src":"11297:15:66"}]},"name":"panic_error_0x12","nativeSrc":"11191:127:66","nodeType":"YulFunctionDefinition","src":"11191:127:66"}]},"contents":"{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := 0\n        value := calldataload(add(headStart, 32))\n        value1 := value\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        let value := 0\n        value := calldataload(add(headStart, 64))\n        value2 := value\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_available_length_bytes(src, length, end) -> array\n    {\n        let size := 0\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let result := and(add(length, 31), not(31))\n        size := add(result, 0x20)\n        let memPtr := 0\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(result, 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        array := memPtr\n        mstore(memPtr, length)\n        if gt(add(src, length), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), src, length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        let value := 0\n        value := calldataload(add(headStart, 64))\n        value2 := value\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value3 := abi_decode_available_length_bytes(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_string_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        value1 := abi_decode_available_length_bytes(add(_1, 32), calldataload(_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory_with_cleanup(add(value1, 0x20), end_1, length_1)\n        end := add(end_1, length_1)\n    }\n    function abi_encode_tuple_t_stringliteral_d8f036579390a0987d4ad9019af725baa50b0e5d7c04e2e356c36b1f83b2da03__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"UniqueNFT: The only NFT has alre\")\n        mstore(add(headStart, 96), \"ady been minted\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_1273b4ad278fd53b35fe872e354cdd577d65adcb7b1d095e4baf15f107084221__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"UniqueNFT: Maximum supply reache\")\n        mstore(add(headStart, 96), \"d\")\n        tail := add(headStart, 128)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            mstore(0, array)\n            let data := keccak256(0, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _1 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _1) { start := add(start, 1) }\n            { sstore(start, 0) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        srcOffset := 0x20\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, 0x20) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, 0x20)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n}","id":66,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063b88d4fde11610071578063b88d4fde14610240578063c87b56dd14610253578063d0def52114610266578063e985e9c514610279578063f2fde38b1461028c57600080fd5b806370a08231146101f9578063715018a61461020c5780638da5cb5b1461021457806395d89b4114610225578063a22cb4651461022d57600080fd5b806318160ddd116100f457806318160ddd146101a357806323b872dd146101b557806336ae5040146101c857806342842e0e146101d35780636352211e146101e657600080fd5b806301ffc9a71461012657806306fdde031461014e578063081812fc14610163578063095ea7b31461018e575b600080fd5b610139610134366004610ff1565b61029f565b60405190151581526020015b60405180910390f35b6101566102ca565b604051610145919061105e565b610176610171366004611071565b61035c565b6040516001600160a01b039091168152602001610145565b6101a161019c3660046110a6565b610385565b005b6008545b604051908152602001610145565b6101a16101c33660046110d0565b610394565b60095460ff16610139565b6101a16101e13660046110d0565b610424565b6101766101f4366004611071565b610444565b6101a761020736600461110d565b61044f565b6101a1610497565b6007546001600160a01b0316610176565b6101566104ab565b6101a161023b366004611128565b6104ba565b6101a161024e3660046111f4565b6104c5565b610156610261366004611071565b6104dd565b6101a7610274366004611270565b6105ee565b6101396102873660046112d2565b610703565b6101a161029a36600461110d565b610731565b60006001600160e01b03198216632483248360e11b14806102c457506102c48261076f565b92915050565b6060600080546102d990611305565b80601f016020809104026020016040519081016040528092919081815260200182805461030590611305565b80156103525780601f1061032757610100808354040283529160200191610352565b820191906000526020600020905b81548152906001019060200180831161033557829003601f168201915b5050505050905090565b6000610367826107bf565b506000828152600460205260409020546001600160a01b03166102c4565b6103908282336107f8565b5050565b6001600160a01b0382166103c357604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103d0838333610805565b9050836001600160a01b0316816001600160a01b03161461041e576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103ba565b50505050565b61043f838383604051806020016040528060008152506104c5565b505050565b60006102c4826107bf565b60006001600160a01b03821661047b576040516322718ad960e21b8152600060048201526024016103ba565b506001600160a01b031660009081526003602052604090205490565b61049f6108fe565b6104a9600061092b565b565b6060600180546102d990611305565b61039033838361097d565b6104d0848484610394565b61041e3385858585610a1c565b60606104e8826107bf565b506000828152600660205260408120805461050290611305565b80601f016020809104026020016040519081016040528092919081815260200182805461052e90611305565b801561057b5780601f106105505761010080835404028352916020019161057b565b820191906000526020600020905b81548152906001019060200180831161055e57829003601f168201915b50505050509050600061059960408051602081019091526000815290565b905080516000036105ab575092915050565b8151156105dd5780826040516020016105c592919061133f565b60405160208183030381529060405292505050919050565b6105e684610b47565b949350505050565b60006105f86108fe565b60095460ff16156106635760405162461bcd60e51b815260206004820152602f60248201527f556e697175654e46543a20546865206f6e6c79204e46542068617320616c726560448201526e18591e481899595b881b5a5b9d1959608a1b60648201526084016103ba565b6001600854106106bf5760405162461bcd60e51b815260206004820152602160248201527f556e697175654e46543a204d6178696d756d20737570706c79207265616368656044820152601960fa1b60648201526084016103ba565b6008546106cc8482610bbc565b6106d68184610bd6565b6001600860008282546106e9919061136e565b90915550506009805460ff19166001179055905092915050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6107396108fe565b6001600160a01b03811661076357604051631e4fbdf760e01b8152600060048201526024016103ba565b61076c8161092b565b50565b60006001600160e01b031982166380ac58cd60e01b14806107a057506001600160e01b03198216635b5e139f60e01b145b806102c457506301ffc9a760e01b6001600160e01b03198316146102c4565b6000818152600260205260408120546001600160a01b0316806102c457604051637e27328960e01b8152600481018490526024016103ba565b61043f8383836001610c26565b6000828152600260205260408120546001600160a01b039081169083161561083257610832818486610d2c565b6001600160a01b038116156108705761084f600085600080610c26565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561089f576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6007546001600160a01b031633146104a95760405163118cdaa760e01b81523360048201526024016103ba565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166109af57604051630b61174360e31b81526001600160a01b03831660048201526024016103ba565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610b4057604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290610a5e90889088908790879060040161138f565b6020604051808303816000875af1925050508015610a99575060408051601f3d908101601f19168201909252610a96918101906113cc565b60015b610b02573d808015610ac7576040519150601f19603f3d011682016040523d82523d6000602084013e610acc565b606091505b508051600003610afa57604051633250574960e11b81526001600160a01b03851660048201526024016103ba565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610b3e57604051633250574960e11b81526001600160a01b03851660048201526024016103ba565b505b5050505050565b6060610b52826107bf565b506000610b6a60408051602081019091526000815290565b90506000815111610b8a5760405180602001604052806000815250610bb5565b80610b9484610d90565b604051602001610ba592919061133f565b6040516020818303038152906040525b9392505050565b610390828260405180602001604052806000815250610e23565b6000828152600660205260409020610bee8282611430565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b8080610c3a57506001600160a01b03821615155b15610cfc576000610c4a846107bf565b90506001600160a01b03831615801590610c765750826001600160a01b0316816001600160a01b031614155b8015610c895750610c878184610703565b155b15610cb25760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103ba565b8115610cfa5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610d37838383610e3b565b61043f576001600160a01b038316610d6557604051637e27328960e01b8152600481018290526024016103ba565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103ba565b60606000610d9d83610e9e565b600101905060008167ffffffffffffffff811115610dbd57610dbd611164565b6040519080825280601f01601f191660200182016040528015610de7576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610df157509392505050565b610e2d8383610f76565b61043f336000858585610a1c565b60006001600160a01b038316158015906105e65750826001600160a01b0316846001600160a01b03161480610e755750610e758484610703565b806105e65750506000908152600460205260409020546001600160a01b03908116911614919050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610edd5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610f09576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610f2757662386f26fc10000830492506010015b6305f5e1008310610f3f576305f5e100830492506008015b6127108310610f5357612710830492506004015b60648310610f65576064830492506002015b600a83106102c45760010192915050565b6001600160a01b038216610fa057604051633250574960e11b8152600060048201526024016103ba565b6000610fae83836000610805565b90506001600160a01b0381161561043f576040516339e3563760e11b8152600060048201526024016103ba565b6001600160e01b03198116811461076c57600080fd5b60006020828403121561100357600080fd5b8135610bb581610fdb565b60005b83811015611029578181015183820152602001611011565b50506000910152565b6000815180845261104a81602086016020860161100e565b601f01601f19169290920160200192915050565b602081526000610bb56020830184611032565b60006020828403121561108357600080fd5b5035919050565b80356001600160a01b03811681146110a157600080fd5b919050565b600080604083850312156110b957600080fd5b6110c28361108a565b946020939093013593505050565b6000806000606084860312156110e557600080fd5b6110ee8461108a565b92506110fc6020850161108a565b929592945050506040919091013590565b60006020828403121561111f57600080fd5b610bb58261108a565b6000806040838503121561113b57600080fd5b6111448361108a565b91506020830135801515811461115957600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008067ffffffffffffffff84111561119557611195611164565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff821117156111c4576111c4611164565b6040528381529050808284018510156111dc57600080fd5b83836020830137600060208583010152509392505050565b6000806000806080858703121561120a57600080fd5b6112138561108a565b93506112216020860161108a565b925060408501359150606085013567ffffffffffffffff81111561124457600080fd5b8501601f8101871361125557600080fd5b6112648782356020840161117a565b91505092959194509250565b6000806040838503121561128357600080fd5b61128c8361108a565b9150602083013567ffffffffffffffff8111156112a857600080fd5b8301601f810185136112b957600080fd5b6112c88582356020840161117a565b9150509250929050565b600080604083850312156112e557600080fd5b6112ee8361108a565b91506112fc6020840161108a565b90509250929050565b600181811c9082168061131957607f821691505b60208210810361133957634e487b7160e01b600052602260045260246000fd5b50919050565b6000835161135181846020880161100e565b83519083019061136581836020880161100e565b01949350505050565b808201808211156102c457634e487b7160e01b600052601160045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906113c290830184611032565b9695505050505050565b6000602082840312156113de57600080fd5b8151610bb581610fdb565b601f82111561043f57806000526020600020601f840160051c810160208510156114105750805b601f840160051c820191505b81811015610b40576000815560010161141c565b815167ffffffffffffffff81111561144a5761144a611164565b61145e816114588454611305565b846113e9565b6020601f821160018114611492576000831561147a5750848201515b600019600385901b1c1916600184901b178455610b40565b600084815260208120601f198516915b828110156114c257878501518255602094850194600190920191016114a2565b50848210156114e05786840151600019600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220c31df74f3673a60309abee9f5f7d151ceba9b6e3201800381e94aba236150a9c64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x121 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xB88D4FDE GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0xD0DEF521 EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x28C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x225 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x36AE5040 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x1E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x18E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x139 PUSH2 0x134 CALLDATASIZE PUSH1 0x4 PUSH2 0xFF1 JUMP JUMPDEST PUSH2 0x29F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x156 PUSH2 0x2CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x145 SWAP2 SWAP1 PUSH2 0x105E JUMP JUMPDEST PUSH2 0x176 PUSH2 0x171 CALLDATASIZE PUSH1 0x4 PUSH2 0x1071 JUMP JUMPDEST PUSH2 0x35C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x19C CALLDATASIZE PUSH1 0x4 PUSH2 0x10A6 JUMP JUMPDEST PUSH2 0x385 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x8 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x145 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x1C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D0 JUMP JUMPDEST PUSH2 0x394 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0xFF AND PUSH2 0x139 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x1E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x10D0 JUMP JUMPDEST PUSH2 0x424 JUMP JUMPDEST PUSH2 0x176 PUSH2 0x1F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1071 JUMP JUMPDEST PUSH2 0x444 JUMP JUMPDEST PUSH2 0x1A7 PUSH2 0x207 CALLDATASIZE PUSH1 0x4 PUSH2 0x110D JUMP JUMPDEST PUSH2 0x44F JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x497 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x176 JUMP JUMPDEST PUSH2 0x156 PUSH2 0x4AB JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0x1128 JUMP JUMPDEST PUSH2 0x4BA JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x24E CALLDATASIZE PUSH1 0x4 PUSH2 0x11F4 JUMP JUMPDEST PUSH2 0x4C5 JUMP JUMPDEST PUSH2 0x156 PUSH2 0x261 CALLDATASIZE PUSH1 0x4 PUSH2 0x1071 JUMP JUMPDEST PUSH2 0x4DD JUMP JUMPDEST PUSH2 0x1A7 PUSH2 0x274 CALLDATASIZE PUSH1 0x4 PUSH2 0x1270 JUMP JUMPDEST PUSH2 0x5EE JUMP JUMPDEST PUSH2 0x139 PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0x12D2 JUMP JUMPDEST PUSH2 0x703 JUMP JUMPDEST PUSH2 0x1A1 PUSH2 0x29A CALLDATASIZE PUSH1 0x4 PUSH2 0x110D JUMP JUMPDEST PUSH2 0x731 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x24832483 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x2C4 JUMPI POP PUSH2 0x2C4 DUP3 PUSH2 0x76F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x2D9 SWAP1 PUSH2 0x1305 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x305 SWAP1 PUSH2 0x1305 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x352 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x327 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x352 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x335 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x367 DUP3 PUSH2 0x7BF JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2C4 JUMP JUMPDEST PUSH2 0x390 DUP3 DUP3 CALLER PUSH2 0x7F8 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3C3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3D0 DUP4 DUP4 CALLER PUSH2 0x805 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x41E JUMPI PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3BA JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x43F DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x4C5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C4 DUP3 PUSH2 0x7BF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x47B JUMPI PUSH1 0x40 MLOAD PUSH4 0x22718AD9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x49F PUSH2 0x8FE JUMP JUMPDEST PUSH2 0x4A9 PUSH1 0x0 PUSH2 0x92B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x2D9 SWAP1 PUSH2 0x1305 JUMP JUMPDEST PUSH2 0x390 CALLER DUP4 DUP4 PUSH2 0x97D JUMP JUMPDEST PUSH2 0x4D0 DUP5 DUP5 DUP5 PUSH2 0x394 JUMP JUMPDEST PUSH2 0x41E CALLER DUP6 DUP6 DUP6 DUP6 PUSH2 0xA1C JUMP JUMPDEST PUSH1 0x60 PUSH2 0x4E8 DUP3 PUSH2 0x7BF JUMP JUMPDEST POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0x502 SWAP1 PUSH2 0x1305 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x52E SWAP1 PUSH2 0x1305 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x57B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x550 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x55E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0x599 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x5AB JUMPI POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x5DD JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5C5 SWAP3 SWAP2 SWAP1 PUSH2 0x133F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x5E6 DUP5 PUSH2 0xB47 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F8 PUSH2 0x8FE JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x663 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697175654E46543A20546865206F6E6C79204E46542068617320616C7265 PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x18591E481899595B881B5A5B9D1959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x8 SLOAD LT PUSH2 0x6BF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x556E697175654E46543A204D6178696D756D20737570706C7920726561636865 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0xFA SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH2 0x6CC DUP5 DUP3 PUSH2 0xBBC JUMP JUMPDEST PUSH2 0x6D6 DUP2 DUP5 PUSH2 0xBD6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6E9 SWAP2 SWAP1 PUSH2 0x136E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x9 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x739 PUSH2 0x8FE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x763 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH2 0x76C DUP2 PUSH2 0x92B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x7A0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x2C4 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x2C4 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x2C4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH2 0x43F DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0xC26 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP1 DUP4 AND ISZERO PUSH2 0x832 JUMPI PUSH2 0x832 DUP2 DUP5 DUP7 PUSH2 0xD2C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x870 JUMPI PUSH2 0x84F PUSH1 0x0 DUP6 PUSH1 0x0 DUP1 PUSH2 0xC26 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO PUSH2 0x89F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP8 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x4A9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR SWAP1 SWAP4 SSTORE PUSH1 0x40 MLOAD SWAP2 AND SWAP2 SWAP1 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x9AF JUMPI PUSH1 0x40 MLOAD PUSH4 0xB611743 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0xB40 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xA5E SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x138F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xA99 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xA96 SWAP2 DUP2 ADD SWAP1 PUSH2 0x13CC JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xB02 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xAC7 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xACC JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xAFA JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ PUSH2 0xB3E JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xB52 DUP3 PUSH2 0x7BF JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xB6A PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0xB8A JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xBB5 JUMP JUMPDEST DUP1 PUSH2 0xB94 DUP5 PUSH2 0xD90 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xBA5 SWAP3 SWAP2 SWAP1 PUSH2 0x133F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x390 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0xE23 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xBEE DUP3 DUP3 PUSH2 0x1430 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH32 0xF8E1A15ABA9398E019F0B49DF1A4FDE98EE17AE345CB5F6B5E2C27F5033E8CE7 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST DUP1 DUP1 PUSH2 0xC3A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0xCFC JUMPI PUSH1 0x0 PUSH2 0xC4A DUP5 PUSH2 0x7BF JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xC76 JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xC89 JUMPI POP PUSH2 0xC87 DUP2 DUP5 PUSH2 0x703 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0xCB2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST DUP2 ISZERO PUSH2 0xCFA JUMPI DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xD37 DUP4 DUP4 DUP4 PUSH2 0xE3B JUMP JUMPDEST PUSH2 0x43F JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xD65 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x177E802F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xD9D DUP4 PUSH2 0xE9E JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDBD JUMPI PUSH2 0xDBD PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xDE7 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xDF1 JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xE2D DUP4 DUP4 PUSH2 0xF76 JUMP JUMPDEST PUSH2 0x43F CALLER PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0xA1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5E6 JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xE75 JUMPI POP PUSH2 0xE75 DUP5 DUP5 PUSH2 0x703 JUMP JUMPDEST DUP1 PUSH2 0x5E6 JUMPI POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND EQ SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0xEDD JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0xF09 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0xF27 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0xF3F JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0xF53 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0xF65 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x2C4 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xFA0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFAE DUP4 DUP4 PUSH1 0x0 PUSH2 0x805 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x43F JUMPI PUSH1 0x40 MLOAD PUSH4 0x39E35637 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x3BA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x76C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1003 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xBB5 DUP2 PUSH2 0xFDB JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1029 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1011 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x104A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x100E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xBB5 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1032 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1083 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x10A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10C2 DUP4 PUSH2 0x108A JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x10E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10EE DUP5 PUSH2 0x108A JUMP JUMPDEST SWAP3 POP PUSH2 0x10FC PUSH1 0x20 DUP6 ADD PUSH2 0x108A JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x111F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB5 DUP3 PUSH2 0x108A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x113B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1144 DUP4 PUSH2 0x108A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1159 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 GT ISZERO PUSH2 0x1195 JUMPI PUSH2 0x1195 PUSH2 0x1164 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x1F DUP6 ADD DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x11C4 JUMPI PUSH2 0x11C4 PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE SWAP1 POP DUP1 DUP3 DUP5 ADD DUP6 LT ISZERO PUSH2 0x11DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP4 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x120A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1213 DUP6 PUSH2 0x108A JUMP JUMPDEST SWAP4 POP PUSH2 0x1221 PUSH1 0x20 DUP7 ADD PUSH2 0x108A JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x1255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1264 DUP8 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x117A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x128C DUP4 PUSH2 0x108A JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x12A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x12B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12C8 DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH2 0x117A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x12E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x12EE DUP4 PUSH2 0x108A JUMP JUMPDEST SWAP2 POP PUSH2 0x12FC PUSH1 0x20 DUP5 ADD PUSH2 0x108A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x1319 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x1339 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x1351 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x100E JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x1365 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x100E JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x2C4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x13C2 SWAP1 DUP4 ADD DUP5 PUSH2 0x1032 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x13DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xBB5 DUP2 PUSH2 0xFDB JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x43F JUMPI DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x1410 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB40 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x141C JUMP JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x144A JUMPI PUSH2 0x144A PUSH2 0x1164 JUMP JUMPDEST PUSH2 0x145E DUP2 PUSH2 0x1458 DUP5 SLOAD PUSH2 0x1305 JUMP JUMPDEST DUP5 PUSH2 0x13E9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x1492 JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x147A JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0xB40 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x14C2 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x14A2 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x14E0 JUMPI DUP7 DUP5 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC3 SAR 0xF7 0x4F CALLDATASIZE PUSH20 0xA60309ABEE9F5F7D151CEBA9B6E3201800381E94 0xAB LOG2 CALLDATASIZE ISZERO EXP SWAP13 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"249:1401:62:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;938:207:43;;;;;;:::i;:::-;;:::i;:::-;;;565:14:66;;558:22;540:41;;528:2;513:18;938:207:43;;;;;;;;2364:89:40;;;:::i;:::-;;;;;;;:::i;3496:154::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1743:32:66;;;1725:51;;1713:2;1698:18;3496:154:40;1579:203:66;3322:113:40;;;;;;:::i;:::-;;:::i;:::-;;1411:92:62;1481:15;;1411:92;;;2416:25:66;;;2404:2;2389:18;1411:92:62;2270:177:66;4142:578:40;;;;;;:::i;:::-;;:::i;1568:80:62:-;1632:9;;;;1568:80;;4786:132:40;;;;;;:::i;:::-;;:::i;2184:118::-;;;;;;:::i;:::-;;:::i;1919:208::-;;;;;;:::i;:::-;;:::i;2293:101:28:-;;;:::i;1638:85::-;1710:6;;-1:-1:-1;;;;;1710:6:28;1638:85;;2517:93:40;;;:::i;3717:144::-;;;;;;:::i;:::-;;:::i;4984:233::-;;;;;;:::i;:::-;;:::i;1211:593:43:-;;;;;;:::i;:::-;;:::i;821:525:62:-;;;;;;:::i;:::-;;:::i;3927:153:40:-;;;;;;:::i;:::-;;:::i;2543:215:28:-;;;;;;:::i;:::-;;:::i;938:207:43:-;1040:4;-1:-1:-1;;;;;;1063:35:43;;-1:-1:-1;;;1063:35:43;;:75;;;1102:36;1126:11;1102:23;:36::i;:::-;1056:82;938:207;-1:-1:-1;;938:207:43:o;2364:89:40:-;2409:13;2441:5;2434:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2364:89;:::o;3496:154::-;3563:7;3582:22;3596:7;3582:13;:22::i;:::-;-1:-1:-1;6033:7:40;6059:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6059:24:40;3622:21;5963:127;3322:113;3393:35;3402:2;3406:7;735:10:46;3393:8:40;:35::i;:::-;3322:113;;:::o;4142:578::-;-1:-1:-1;;;;;4236:16:40;;4232:87;;4275:33;;-1:-1:-1;;;4275:33:40;;4305:1;4275:33;;;1725:51:66;1698:18;;4275:33:40;;;;;;;;4232:87;4537:21;4561:34;4569:2;4573:7;735:10:46;4561:7:40;:34::i;:::-;4537:58;;4626:4;-1:-1:-1;;;;;4609:21:40;:13;-1:-1:-1;;;;;4609:21:40;;4605:109;;4653:50;;-1:-1:-1;;;4653:50:40;;-1:-1:-1;;;;;6342:32:66;;;4653:50:40;;;6324:51:66;6391:18;;;6384:34;;;6454:32;;6434:18;;;6427:60;6297:18;;4653:50:40;6122:371:66;4605:109:40;4222:498;4142:578;;;:::o;4786:132::-;4872:39;4889:4;4895:2;4899:7;4872:39;;;;;;;;;;;;:16;:39::i;:::-;4786:132;;;:::o;2184:118::-;2247:7;2273:22;2287:7;2273:13;:22::i;1919:208::-;1982:7;-1:-1:-1;;;;;2005:19:40;;2001:87;;2047:30;;-1:-1:-1;;;2047:30:40;;2074:1;2047:30;;;1725:51:66;1698:18;;2047:30:40;1579:203:66;2001:87:40;-1:-1:-1;;;;;;2104:16:40;;;;;:9;:16;;;;;;;1919:208::o;2293:101:28:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2517:93:40:-;2564:13;2596:7;2589:14;;;;;:::i;3717:144::-;3802:52;735:10:46;3835:8:40;3845;3802:18;:52::i;4984:233::-;5097:31;5110:4;5116:2;5120:7;5097:12;:31::i;:::-;5138:72;735:10:46;5186:4:40;5192:2;5196:7;5205:4;5138:33;:72::i;1211:593:43:-;1284:13;1309:22;1323:7;1309:13;:22::i;:::-;-1:-1:-1;1342:23:43;1368:19;;;:10;:19;;;;;1342:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1397:18;1418:10;3249:9:40;;;;;;;;;-1:-1:-1;3249:9:40;;;3173:92;1418:10:43;1397:31;;1507:4;1501:18;1523:1;1501:23;1497:70;;-1:-1:-1;1547:9:43;1211:593;-1:-1:-1;;1211:593:43:o;1497:70::-;1666:23;;:27;1662:95;;1730:4;1736:9;1716:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1709:37;;;;1211:593;;;:::o;1662:95::-;1774:23;1789:7;1774:14;:23::i;:::-;1767:30;1211:593;-1:-1:-1;;;;1211:593:43:o;821:525:62:-;926:7;1531:13:28;:11;:13::i;:::-;954:9:62::1;::::0;::::1;;953:10;945:70;;;::::0;-1:-1:-1;;;945:70:62;;7201:2:66;945:70:62::1;::::0;::::1;7183:21:66::0;7240:2;7220:18;;;7213:30;7279:34;7259:18;;;7252:62;-1:-1:-1;;;7330:18:66;;;7323:45;7385:19;;945:70:62::1;6999:411:66::0;945:70:62::1;374:1;1046:15;;:28;1025:108;;;::::0;-1:-1:-1;;;1025:108:62;;7617:2:66;1025:108:62::1;::::0;::::1;7599:21:66::0;7656:2;7636:18;;;7629:30;7695:34;7675:18;;;7668:62;-1:-1:-1;;;7746:18:66;;;7739:31;7787:19;;1025:108:62::1;7415:397:66::0;1025:108:62::1;1162:15;::::0;1187:29:::1;1197:9:::0;1162:15;1187:9:::1;:29::i;:::-;1226:31;1239:7;1248:8;1226:12;:31::i;:::-;1287:1;1268:15;;:20;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;1298:9:62::1;:16:::0;;-1:-1:-1;;1298:16:62::1;1310:4;1298:16;::::0;;1332:7;-1:-1:-1;821:525:62;;;;:::o;3927:153:40:-;-1:-1:-1;;;;;4038:25:40;;;4015:4;4038:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;3927:153::o;2543:215:28:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:28;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:28;;2700:1:::1;2672:31;::::0;::::1;1725:51:66::0;1698:18;;2672:31:28::1;1579:203:66::0;2623:91:28::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;1560:300:40:-;1662:4;-1:-1:-1;;;;;;1697:40:40;;-1:-1:-1;;;1697:40:40;;:104;;-1:-1:-1;;;;;;;1753:48:40;;-1:-1:-1;;;1753:48:40;1697:104;:156;;;-1:-1:-1;;;;;;;;;;862:40:51;;;1817:36:40;763:146:51;16212:241:40;16275:7;5824:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5824:16:40;;16337:88;;16383:31;;-1:-1:-1;;;16383:31:40;;;;;2416:25:66;;;2389:18;;16383:31:40;2270:177:66;14492:120:40;14572:33;14581:2;14585:7;14594:4;14600;14572:8;:33::i;8861:795::-;8947:7;5824:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5824:16:40;;;;9058:18;;;9054:86;;9092:37;9109:4;9115;9121:7;9092:16;:37::i;:::-;-1:-1:-1;;;;;9184:18:40;;;9180:256;;9300:48;9317:1;9321:7;9338:1;9342:5;9300:8;:48::i;:::-;-1:-1:-1;;;;;9391:15:40;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;9391:20:40;;;9180:256;-1:-1:-1;;;;;9450:16:40;;;9446:107;;-1:-1:-1;;;;;9510:13:40;;;;;;:9;:13;;;;;:18;;9527:1;9510:18;;;9446:107;9563:16;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9563:21:40;-1:-1:-1;;;;;9563:21:40;;;;;;;;;9600:27;;9563:16;;9600:27;;;;;;;9645:4;8861:795;-1:-1:-1;;;;8861:795:40:o;1796:162:28:-;1710:6;;-1:-1:-1;;;;;1710:6:28;735:10:46;1855:23:28;1851:101;;1901:40;;-1:-1:-1;;;1901:40:28;;735:10:46;1901:40:28;;;1725:51:66;1698:18;;1901:40:28;1579:203:66;2912:187:28;3004:6;;;-1:-1:-1;;;;;3020:17:28;;;-1:-1:-1;;;;;;3020:17:28;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;15665:312:40:-;-1:-1:-1;;;;;15772:22:40;;15768:91;;15817:31;;-1:-1:-1;;;15817:31:40;;-1:-1:-1;;;;;1743:32:66;;15817:31:40;;;1725:51:66;1698:18;;15817:31:40;1579:203:66;15768:91:40;-1:-1:-1;;;;;15868:25:40;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;15868:46:40;;;;;;;;;;15929:41;;540::66;;;15929::40;;513:18:66;15929:41:40;;;;;;;15665:312;;;:::o;993:924:45:-;-1:-1:-1;;;;;1173:14:45;;;:18;1169:742;;1211:67;;-1:-1:-1;;;1211:67:45;;-1:-1:-1;;;;;1211:36:45;;;;;:67;;1248:8;;1258:4;;1264:7;;1273:4;;1211:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1211:67:45;;;;;;;;-1:-1:-1;;1211:67:45;;;;;;;;;;;;:::i;:::-;;;1207:694;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1568:6;:13;1585:1;1568:18;1564:323;;1672:39;;-1:-1:-1;;;1672:39:45;;-1:-1:-1;;;;;1743:32:66;;1672:39:45;;;1725:51:66;1698:18;;1672:39:45;1579:203:66;1564:323:45;1839:6;1833:13;1824:6;1820:2;1816:15;1809:38;1207:694;-1:-1:-1;;;;;;1325:51:45;;-1:-1:-1;;;1325:51:45;1321:182;;1445:39;;-1:-1:-1;;;1445:39:45;;-1:-1:-1;;;;;1743:32:66;;1445:39:45;;;1725:51:66;1698:18;;1445:39:45;1579:203:66;1321:182:45;1279:238;1207:694;993:924;;;;;:::o;2676:255:40:-;2740:13;2765:22;2779:7;2765:13;:22::i;:::-;;2798:21;2822:10;3249:9;;;;;;;;;-1:-1:-1;3249:9:40;;;3173:92;2822:10;2798:34;;2873:1;2855:7;2849:21;:25;:75;;;;;;;;;;;;;;;;;2891:7;2900:18;:7;:16;:18::i;:::-;2877:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2849:75;2842:82;2676:255;-1:-1:-1;;;2676:255:40:o;10656:100::-;10723:26;10733:2;10737:7;10723:26;;;;;;;;;;;;:9;:26::i;1932:167:43:-;2023:19;;;;:10;:19;;;;;:31;2045:9;2023:19;:31;:::i;:::-;-1:-1:-1;2069:23:43;;2416:25:66;;;2069:23:43;;2404:2:66;2389:18;2069:23:43;;;;;;;1932:167;;:::o;14794:662:40:-;14954:9;:31;;;-1:-1:-1;;;;;;14967:18:40;;;;14954:31;14950:460;;;15001:13;15017:22;15031:7;15017:13;:22::i;:::-;15001:38;-1:-1:-1;;;;;;15167:18:40;;;;;;:35;;;15198:4;-1:-1:-1;;;;;15189:13:40;:5;-1:-1:-1;;;;;15189:13:40;;;15167:35;:69;;;;;15207:29;15224:5;15231:4;15207:16;:29::i;:::-;15206:30;15167:69;15163:142;;;15263:27;;-1:-1:-1;;;15263:27:40;;-1:-1:-1;;;;;1743:32:66;;15263:27:40;;;1725:51:66;1698:18;;15263:27:40;1579:203:66;15163:142:40;15323:9;15319:81;;;15377:7;15373:2;-1:-1:-1;;;;;15357:28:40;15366:5;-1:-1:-1;;;;;15357:28:40;;;;;;;;;;;15319:81;14987:423;14950:460;-1:-1:-1;;15420:24:40;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15420:29:40;-1:-1:-1;;;;;15420:29:40;;;;;;;;;;14794:662::o;7105:368::-;7217:38;7231:5;7238:7;7247;7217:13;:38::i;:::-;7212:255;;-1:-1:-1;;;;;7275:19:40;;7271:186;;7321:31;;-1:-1:-1;;;7321:31:40;;;;;2416:25:66;;;2389:18;;7321:31:40;2270:177:66;7271:186:40;7398:44;;-1:-1:-1;;;7398:44:40;;-1:-1:-1;;;;;11104:32:66;;7398:44:40;;;11086:51:66;11153:18;;;11146:34;;;11059:18;;7398:44:40;10912:274:66;1308:632:48;1364:13;1413:14;1430:17;1441:5;1430:10;:17::i;:::-;1450:1;1430:21;1413:38;;1465:20;1499:6;1488:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1488:18:48;-1:-1:-1;1465:41:48;-1:-1:-1;1595:28:48;;;1611:2;1595:28;1650:247;-1:-1:-1;;1681:5:48;-1:-1:-1;;;1780:2:48;1769:14;;1764:32;1681:5;1751:46;1841:2;1832:11;;;-1:-1:-1;1861:21:48;1650:247;1861:21;-1:-1:-1;1917:6:48;1308:632;-1:-1:-1;;;1308:632:48:o;10977:207:40:-;11071:18;11077:2;11081:7;11071:5;:18::i;:::-;11099:78;735:10:46;11155:1:40;11159:2;11163:7;11172:4;11099:33;:78::i;6401:272::-;6504:4;-1:-1:-1;;;;;6539:21:40;;;;;;:127;;;6586:7;-1:-1:-1;;;;;6577:16:40;:5;-1:-1:-1;;;;;6577:16:40;;:52;;;;6597:32;6614:5;6621:7;6597:16;:32::i;:::-;6577:88;;;-1:-1:-1;;6033:7:40;6059:24;;;:15;:24;;;;;;-1:-1:-1;;;;;6059:24:40;;;6633:32;;;;6520:146;-1:-1:-1;6401:272:40:o;29154:916:53:-;29207:7;;-1:-1:-1;;;29282:17:53;;29278:103;;-1:-1:-1;;;29319:17:53;;;-1:-1:-1;29364:2:53;29354:12;29278:103;29407:8;29398:5;:17;29394:103;;29444:8;29435:17;;;-1:-1:-1;29480:2:53;29470:12;29394:103;29523:8;29514:5;:17;29510:103;;29560:8;29551:17;;;-1:-1:-1;29596:2:53;29586:12;29510:103;29639:7;29630:5;:16;29626:100;;29675:7;29666:16;;;-1:-1:-1;29710:1:53;29700:11;29626:100;29752:7;29743:5;:16;29739:100;;29788:7;29779:16;;;-1:-1:-1;29823:1:53;29813:11;29739:100;29865:7;29856:5;:16;29852:100;;29901:7;29892:16;;;-1:-1:-1;29936:1:53;29926:11;29852:100;29978:7;29969:5;:16;29965:66;;30015:1;30005:11;30057:6;29154:916;-1:-1:-1;;29154:916:53:o;9978:327:40:-;-1:-1:-1;;;;;10045:16:40;;10041:87;;10084:33;;-1:-1:-1;;;10084:33:40;;10114:1;10084:33;;;1725:51:66;1698:18;;10084:33:40;1579:203:66;10041:87:40;10137:21;10161:32;10169:2;10173:7;10190:1;10161:7;:32::i;:::-;10137:56;-1:-1:-1;;;;;;10207:27:40;;;10203:96;;10257:31;;-1:-1:-1;;;10257:31:40;;10285:1;10257:31;;;1725:51:66;1698:18;;10257:31:40;1579:203:66;14:131;-1:-1:-1;;;;;;88:32:66;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:66;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:66;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:66:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:226::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1521:23:66;;1348:226;-1:-1:-1;1348:226:66:o;1787:173::-;1855:20;;-1:-1:-1;;;;;1904:31:66;;1894:42;;1884:70;;1950:1;1947;1940:12;1884:70;1787:173;;;:::o;1965:300::-;2033:6;2041;2094:2;2082:9;2073:7;2069:23;2065:32;2062:52;;;2110:1;2107;2100:12;2062:52;2133:29;2152:9;2133:29;:::i;:::-;2123:39;2231:2;2216:18;;;;2203:32;;-1:-1:-1;;;1965:300:66:o;2452:374::-;2529:6;2537;2545;2598:2;2586:9;2577:7;2573:23;2569:32;2566:52;;;2614:1;2611;2604:12;2566:52;2637:29;2656:9;2637:29;:::i;:::-;2627:39;;2685:38;2719:2;2708:9;2704:18;2685:38;:::i;:::-;2452:374;;2675:48;;-1:-1:-1;;;2792:2:66;2777:18;;;;2764:32;;2452:374::o;2831:186::-;2890:6;2943:2;2931:9;2922:7;2918:23;2914:32;2911:52;;;2959:1;2956;2949:12;2911:52;2982:29;3001:9;2982:29;:::i;3022:347::-;3087:6;3095;3148:2;3136:9;3127:7;3123:23;3119:32;3116:52;;;3164:1;3161;3154:12;3116:52;3187:29;3206:9;3187:29;:::i;:::-;3177:39;;3266:2;3255:9;3251:18;3238:32;3313:5;3306:13;3299:21;3292:5;3289:32;3279:60;;3335:1;3332;3325:12;3279:60;3358:5;3348:15;;;3022:347;;;;;:::o;3374:127::-;3435:10;3430:3;3426:20;3423:1;3416:31;3466:4;3463:1;3456:15;3490:4;3487:1;3480:15;3506:715;3570:5;3602:1;3626:18;3618:6;3615:30;3612:56;;;3648:18;;:::i;:::-;-1:-1:-1;3803:2:66;3797:9;-1:-1:-1;;3716:2:66;3695:15;;3691:29;;3861:2;3849:15;3845:29;3833:42;;3926:22;;;3905:18;3890:34;;3887:62;3884:88;;;3952:18;;:::i;:::-;3988:2;3981:22;4036;;;4021:6;-1:-1:-1;4021:6:66;4073:16;;;4070:25;-1:-1:-1;4067:45:66;;;4108:1;4105;4098:12;4067:45;4158:6;4153:3;4146:4;4138:6;4134:17;4121:44;4213:1;4206:4;4197:6;4189;4185:19;4181:30;4174:41;;3506:715;;;;;:::o;4226:712::-;4321:6;4329;4337;4345;4398:3;4386:9;4377:7;4373:23;4369:33;4366:53;;;4415:1;4412;4405:12;4366:53;4438:29;4457:9;4438:29;:::i;:::-;4428:39;;4486:38;4520:2;4509:9;4505:18;4486:38;:::i;:::-;4476:48;-1:-1:-1;4593:2:66;4578:18;;4565:32;;-1:-1:-1;4672:2:66;4657:18;;4644:32;4699:18;4688:30;;4685:50;;;4731:1;4728;4721:12;4685:50;4754:22;;4807:4;4799:13;;4795:27;-1:-1:-1;4785:55:66;;4836:1;4833;4826:12;4785:55;4859:73;4924:7;4919:2;4906:16;4901:2;4897;4893:11;4859:73;:::i;:::-;4849:83;;;4226:712;;;;;;;:::o;4943:524::-;5021:6;5029;5082:2;5070:9;5061:7;5057:23;5053:32;5050:52;;;5098:1;5095;5088:12;5050:52;5121:29;5140:9;5121:29;:::i;:::-;5111:39;;5201:2;5190:9;5186:18;5173:32;5228:18;5220:6;5217:30;5214:50;;;5260:1;5257;5250:12;5214:50;5283:22;;5336:4;5328:13;;5324:27;-1:-1:-1;5314:55:66;;5365:1;5362;5355:12;5314:55;5388:73;5453:7;5448:2;5435:16;5430:2;5426;5422:11;5388:73;:::i;:::-;5378:83;;;4943:524;;;;;:::o;5472:260::-;5540:6;5548;5601:2;5589:9;5580:7;5576:23;5572:32;5569:52;;;5617:1;5614;5607:12;5569:52;5640:29;5659:9;5640:29;:::i;:::-;5630:39;;5688:38;5722:2;5711:9;5707:18;5688:38;:::i;:::-;5678:48;;5472:260;;;;;:::o;5737:380::-;5816:1;5812:12;;;;5859;;;5880:61;;5934:4;5926:6;5922:17;5912:27;;5880:61;5987:2;5979:6;5976:14;5956:18;5953:38;5950:161;;6033:10;6028:3;6024:20;6021:1;6014:31;6068:4;6065:1;6058:15;6096:4;6093:1;6086:15;5950:161;;5737:380;;;:::o;6498:496::-;6677:3;6715:6;6709:13;6731:66;6790:6;6785:3;6778:4;6770:6;6766:17;6731:66;:::i;:::-;6860:13;;6819:16;;;;6882:70;6860:13;6819:16;6929:4;6917:17;;6882:70;:::i;:::-;6968:20;;6498:496;-1:-1:-1;;;;6498:496:66:o;7817:222::-;7882:9;;;7903:10;;;7900:133;;;7955:10;7950:3;7946:20;7943:1;7936:31;7990:4;7987:1;7980:15;8018:4;8015:1;8008:15;8044:485;-1:-1:-1;;;;;8275:32:66;;;8257:51;;8344:32;;8339:2;8324:18;;8317:60;8408:2;8393:18;;8386:34;;;8456:3;8451:2;8436:18;;8429:31;;;-1:-1:-1;;8477:46:66;;8503:19;;8495:6;8477:46;:::i;:::-;8469:54;8044:485;-1:-1:-1;;;;;;8044:485:66:o;8534:249::-;8603:6;8656:2;8644:9;8635:7;8631:23;8627:32;8624:52;;;8672:1;8669;8662:12;8624:52;8704:9;8698:16;8723:30;8747:5;8723:30;:::i;8914:518::-;9016:2;9011:3;9008:11;9005:421;;;9052:5;9049:1;9042:16;9096:4;9093:1;9083:18;9166:2;9154:10;9150:19;9147:1;9143:27;9137:4;9133:38;9202:4;9190:10;9187:20;9184:47;;;-1:-1:-1;9225:4:66;9184:47;9280:2;9275:3;9271:12;9268:1;9264:20;9258:4;9254:31;9244:41;;9335:81;9353:2;9346:5;9343:13;9335:81;;;9412:1;9398:16;;9379:1;9368:13;9335:81;;9608:1299;9734:3;9728:10;9761:18;9753:6;9750:30;9747:56;;;9783:18;;:::i;:::-;9812:97;9902:6;9862:38;9894:4;9888:11;9862:38;:::i;:::-;9856:4;9812:97;:::i;:::-;9958:4;9989:2;9978:14;;10006:1;10001:649;;;;10694:1;10711:6;10708:89;;;-1:-1:-1;10763:19:66;;;10757:26;10708:89;-1:-1:-1;;9565:1:66;9561:11;;;9557:24;9553:29;9543:40;9589:1;9585:11;;;9540:57;10810:81;;9971:930;;10001:649;8861:1;8854:14;;;8898:4;8885:18;;-1:-1:-1;;10037:20:66;;;10155:222;10169:7;10166:1;10163:14;10155:222;;;10251:19;;;10245:26;10230:42;;10358:4;10343:20;;;;10311:1;10299:14;;;;10185:12;10155:222;;;10159:3;10405:6;10396:7;10393:19;10390:201;;;10466:19;;;10460:26;-1:-1:-1;;10549:1:66;10545:14;;;10561:3;10541:24;10537:37;10533:42;10518:58;10503:74;;10390:201;-1:-1:-1;;;;10637:1:66;10621:14;;;10617:22;10604:36;;-1:-1:-1;9608:1299:66:o"},"gasEstimates":{"creation":{"codeDepositCost":"1082600","executionCost":"infinite","totalCost":"infinite"},"external":{"approve(address,uint256)":"31537","balanceOf(address)":"2612","getApproved(uint256)":"infinite","isApprovedForAll(address,address)":"infinite","isMinted()":"2360","mint(address,string)":"infinite","name()":"infinite","owner()":"2398","ownerOf(uint256)":"infinite","renounceOwnership()":"infinite","safeTransferFrom(address,address,uint256)":"infinite","safeTransferFrom(address,address,uint256,bytes)":"infinite","setApprovalForAll(address,bool)":"26770","supportsInterface(bytes4)":"infinite","symbol()":"infinite","tokenURI(uint256)":"infinite","totalSupply()":"2304","transferFrom(address,address,uint256)":"infinite","transferOwnership(address)":"28446"}},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","isMinted()":"36ae5040","mint(address,string)":"d0def521","name()":"06fdde03","owner()":"8da5cb5b","ownerOf(uint256)":"6352211e","renounceOwnership()":"715018a6","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"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\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toTokenId\",\"type\":\"uint256\"}],\"name\":\"BatchMetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MetadataUpdate\",\"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\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isMinted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"BatchMetadataUpdate(uint256,uint256)\":{\"details\":\"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs.\"},\"MetadataUpdate(uint256)\":{\"details\":\"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"isMinted()\":{\"details\":\"\\u68c0\\u67e5NFT\\u662f\\u5426\\u5df2\\u7ecf\\u88ab\\u94f8\\u9020\"},\"mint(address,string)\":{\"details\":\"\\u94f8\\u9020\\u552f\\u4e00\\u7684NFT\",\"params\":{\"recipient\":\"NFT\\u63a5\\u6536\\u8005\\u5730\\u5740\",\"tokenURI\":\"NFT\\u7684\\u5143\\u6570\\u636eURI\"}},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"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.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"\\u8fd4\\u56de\\u5f53\\u524d\\u94f8\\u9020\\u7684NFT\\u603b\\u6570\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/UniqueNFT.sol\":\"UniqueNFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * The initial owner is set to the address provided by the deployer. This can\\n * later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    /**\\n     * @dev The caller account is not authorized to perform an operation.\\n     */\\n    error OwnableUnauthorizedAccount(address account);\\n\\n    /**\\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\\n     */\\n    error OwnableInvalidOwner(address owner);\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\\n     */\\n    constructor(address initialOwner) {\\n        if (initialOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(initialOwner);\\n    }\\n\\n    /**\\n     * @dev Throws if called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        _checkOwner();\\n        _;\\n    }\\n\\n    /**\\n     * @dev Returns the address of the current owner.\\n     */\\n    function owner() public view virtual returns (address) {\\n        return _owner;\\n    }\\n\\n    /**\\n     * @dev Throws if the sender is not the owner.\\n     */\\n    function _checkOwner() internal view virtual {\\n        if (owner() != _msgSender()) {\\n            revert OwnableUnauthorizedAccount(_msgSender());\\n        }\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby disabling any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        _transferOwnership(address(0));\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        if (newOwner == address(0)) {\\n            revert OwnableInvalidOwner(address(0));\\n        }\\n        _transferOwnership(newOwner);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Internal function without access restriction.\\n     */\\n    function _transferOwnership(address newOwner) internal virtual {\\n        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../utils/introspection/IERC165.sol\\\";\\n\",\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC4906.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC4906.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\nimport {IERC721} from \\\"./IERC721.sol\\\";\\n\\n/// @title ERC-721 Metadata Update Extension\\ninterface IERC4906 is IERC165, IERC721 {\\n    /// @dev This event emits when the metadata of a token is changed.\\n    /// So that the third-party platforms such as NFT market could\\n    /// timely update the images and related attributes of the NFT.\\n    event MetadataUpdate(uint256 _tokenId);\\n\\n    /// @dev This event emits when the metadata of a range of tokens is changed.\\n    /// So that the third-party platforms such as NFT market could\\n    /// timely update the images and related attributes of the NFTs.\\n    event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);\\n}\\n\",\"keccak256\":\"0x1b8691e244f6e11d987459993671db0af33e6a29f7805eac6a9925cc6b601957\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721} from \\\"../token/ERC721/IERC721.sol\\\";\\n\",\"keccak256\":\"0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Standard ERC-20 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\\n */\\ninterface IERC20Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC20InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC20InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     * @param allowance Amount of tokens a `spender` is allowed to operate with.\\n     * @param needed Minimum amount required to perform a transfer.\\n     */\\n    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC20InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\\n     * @param spender Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC20InvalidSpender(address spender);\\n}\\n\\n/**\\n * @dev Standard ERC-721 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\\n */\\ninterface IERC721Errors {\\n    /**\\n     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\\n     * Used in balance queries.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721InvalidOwner(address owner);\\n\\n    /**\\n     * @dev Indicates a `tokenId` whose `owner` is the zero address.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721NonexistentToken(uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param tokenId Identifier number of a token.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC721InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC721InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC721InsufficientApproval(address operator, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC721InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC721InvalidOperator(address operator);\\n}\\n\\n/**\\n * @dev Standard ERC-1155 Errors\\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\\n */\\ninterface IERC1155Errors {\\n    /**\\n     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     * @param balance Current balance for the interacting account.\\n     * @param needed Minimum amount required to perform a transfer.\\n     * @param tokenId Identifier number of a token.\\n     */\\n    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\\n\\n    /**\\n     * @dev Indicates a failure with the token `sender`. Used in transfers.\\n     * @param sender Address whose tokens are being transferred.\\n     */\\n    error ERC1155InvalidSender(address sender);\\n\\n    /**\\n     * @dev Indicates a failure with the token `receiver`. Used in transfers.\\n     * @param receiver Address to which tokens are being transferred.\\n     */\\n    error ERC1155InvalidReceiver(address receiver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     * @param owner Address of the current owner of a token.\\n     */\\n    error ERC1155MissingApprovalForAll(address operator, address owner);\\n\\n    /**\\n     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\\n     * @param approver Address initiating an approval operation.\\n     */\\n    error ERC1155InvalidApprover(address approver);\\n\\n    /**\\n     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\\n     * @param operator Address that may be allowed to operate on tokens without being their owner.\\n     */\\n    error ERC1155InvalidOperator(address operator);\\n\\n    /**\\n     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\\n     * Used in batch transfers.\\n     * @param idsLength Length of the array of token identifiers\\n     * @param valuesLength Length of the array of token amounts\\n     */\\n    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\\n}\\n\",\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721} from \\\"./IERC721.sol\\\";\\nimport {IERC721Metadata} from \\\"./extensions/IERC721Metadata.sol\\\";\\nimport {ERC721Utils} from \\\"./utils/ERC721Utils.sol\\\";\\nimport {Context} from \\\"../../utils/Context.sol\\\";\\nimport {Strings} from \\\"../../utils/Strings.sol\\\";\\nimport {IERC165, ERC165} from \\\"../../utils/introspection/ERC165.sol\\\";\\nimport {IERC721Errors} from \\\"../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\nabstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Errors {\\n    using Strings for uint256;\\n\\n    // Token name\\n    string private _name;\\n\\n    // Token symbol\\n    string private _symbol;\\n\\n    mapping(uint256 tokenId => address) private _owners;\\n\\n    mapping(address owner => uint256) private _balances;\\n\\n    mapping(uint256 tokenId => address) private _tokenApprovals;\\n\\n    mapping(address owner => mapping(address operator => bool)) private _operatorApprovals;\\n\\n    /**\\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n        return\\n            interfaceId == type(IERC721).interfaceId ||\\n            interfaceId == type(IERC721Metadata).interfaceId ||\\n            super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-balanceOf}.\\n     */\\n    function balanceOf(address owner) public view virtual returns (uint256) {\\n        if (owner == address(0)) {\\n            revert ERC721InvalidOwner(address(0));\\n        }\\n        return _balances[owner];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-ownerOf}.\\n     */\\n    function ownerOf(uint256 tokenId) public view virtual returns (address) {\\n        return _requireOwned(tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-name}.\\n     */\\n    function name() public view virtual returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-symbol}.\\n     */\\n    function symbol() public view virtual returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual returns (string memory) {\\n        _requireOwned(tokenId);\\n\\n        string memory baseURI = _baseURI();\\n        return bytes(baseURI).length > 0 ? string.concat(baseURI, tokenId.toString()) : \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n     * by default, can be overridden in child contracts.\\n     */\\n    function _baseURI() internal view virtual returns (string memory) {\\n        return \\\"\\\";\\n    }\\n\\n    /**\\n     * @dev See {IERC721-approve}.\\n     */\\n    function approve(address to, uint256 tokenId) public virtual {\\n        _approve(to, tokenId, _msgSender());\\n    }\\n\\n    /**\\n     * @dev See {IERC721-getApproved}.\\n     */\\n    function getApproved(uint256 tokenId) public view virtual returns (address) {\\n        _requireOwned(tokenId);\\n\\n        return _getApproved(tokenId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-setApprovalForAll}.\\n     */\\n    function setApprovalForAll(address operator, bool approved) public virtual {\\n        _setApprovalForAll(_msgSender(), operator, approved);\\n    }\\n\\n    /**\\n     * @dev See {IERC721-isApprovedForAll}.\\n     */\\n    function isApprovedForAll(address owner, address operator) public view virtual returns (bool) {\\n        return _operatorApprovals[owner][operator];\\n    }\\n\\n    /**\\n     * @dev See {IERC721-transferFrom}.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) public virtual {\\n        if (to == address(0)) {\\n            revert ERC721InvalidReceiver(address(0));\\n        }\\n        // Setting an \\\"auth\\\" arguments enables the `_isAuthorized` check which verifies that the token exists\\n        // (from != 0). Therefore, it is not needed to verify that the return value is not 0 here.\\n        address previousOwner = _update(to, tokenId, _msgSender());\\n        if (previousOwner != from) {\\n            revert ERC721IncorrectOwner(from, tokenId, previousOwner);\\n        }\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) public {\\n        safeTransferFrom(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev See {IERC721-safeTransferFrom}.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual {\\n        transferFrom(from, to, tokenId);\\n        ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n     *\\n     * IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\\n     * core ERC-721 logic MUST be matched with the use of {_increaseBalance} to keep balances\\n     * consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\\n     * `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`.\\n     */\\n    function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n        return _owners[tokenId];\\n    }\\n\\n    /**\\n     * @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted.\\n     */\\n    function _getApproved(uint256 tokenId) internal view virtual returns (address) {\\n        return _tokenApprovals[tokenId];\\n    }\\n\\n    /**\\n     * @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\\n     * particular (ignoring whether it is owned by `owner`).\\n     *\\n     * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\\n     * assumption.\\n     */\\n    function _isAuthorized(address owner, address spender, uint256 tokenId) internal view virtual returns (bool) {\\n        return\\n            spender != address(0) &&\\n            (owner == spender || isApprovedForAll(owner, spender) || _getApproved(tokenId) == spender);\\n    }\\n\\n    /**\\n     * @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\\n     * Reverts if:\\n     * - `spender` does not have approval from `owner` for `tokenId`.\\n     * - `spender` does not have approval to manage all of `owner`'s assets.\\n     *\\n     * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\\n     * assumption.\\n     */\\n    function _checkAuthorized(address owner, address spender, uint256 tokenId) internal view virtual {\\n        if (!_isAuthorized(owner, spender, tokenId)) {\\n            if (owner == address(0)) {\\n                revert ERC721NonexistentToken(tokenId);\\n            } else {\\n                revert ERC721InsufficientApproval(spender, tokenId);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n     *\\n     * NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\\n     * a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\\n     *\\n     * WARNING: Increasing an account's balance using this function tends to be paired with an override of the\\n     * {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\\n     * remain consistent with one another.\\n     */\\n    function _increaseBalance(address account, uint128 value) internal virtual {\\n        unchecked {\\n            _balances[account] += value;\\n        }\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\\n     * (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\\n     *\\n     * The `auth` argument is optional. If the value passed is non 0, then this function will check that\\n     * `auth` is either the owner of the token, or approved to operate on the token (by the owner).\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}.\\n     */\\n    function _update(address to, uint256 tokenId, address auth) internal virtual returns (address) {\\n        address from = _ownerOf(tokenId);\\n\\n        // Perform (optional) operator check\\n        if (auth != address(0)) {\\n            _checkAuthorized(from, auth, tokenId);\\n        }\\n\\n        // Execute the update\\n        if (from != address(0)) {\\n            // Clear approval. No need to re-authorize or emit the Approval event\\n            _approve(address(0), tokenId, address(0), false);\\n\\n            unchecked {\\n                _balances[from] -= 1;\\n            }\\n        }\\n\\n        if (to != address(0)) {\\n            unchecked {\\n                _balances[to] += 1;\\n            }\\n        }\\n\\n        _owners[tokenId] = to;\\n\\n        emit Transfer(from, to, tokenId);\\n\\n        return from;\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId` and transfers it to `to`.\\n     *\\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - `to` cannot be the zero address.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _mint(address to, uint256 tokenId) internal {\\n        if (to == address(0)) {\\n            revert ERC721InvalidReceiver(address(0));\\n        }\\n        address previousOwner = _update(to, tokenId, address(0));\\n        if (previousOwner != address(0)) {\\n            revert ERC721InvalidSender(address(0));\\n        }\\n    }\\n\\n    /**\\n     * @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must not exist.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeMint(address to, uint256 tokenId) internal {\\n        _safeMint(to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\\n        _mint(to, tokenId);\\n        ERC721Utils.checkOnERC721Received(_msgSender(), address(0), to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Destroys `tokenId`.\\n     * The approval is cleared when the token is burned.\\n     * This is an internal function that does not check if the sender is authorized to operate on the token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _burn(uint256 tokenId) internal {\\n        address previousOwner = _update(address(0), tokenId, address(0));\\n        if (previousOwner == address(0)) {\\n            revert ERC721NonexistentToken(tokenId);\\n        }\\n    }\\n\\n    /**\\n     * @dev Transfers `tokenId` from `from` to `to`.\\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _transfer(address from, address to, uint256 tokenId) internal {\\n        if (to == address(0)) {\\n            revert ERC721InvalidReceiver(address(0));\\n        }\\n        address previousOwner = _update(to, tokenId, address(0));\\n        if (previousOwner == address(0)) {\\n            revert ERC721NonexistentToken(tokenId);\\n        } else if (previousOwner != from) {\\n            revert ERC721IncorrectOwner(from, tokenId, previousOwner);\\n        }\\n    }\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\\n     * are aware of the ERC-721 standard to prevent tokens from being forever locked.\\n     *\\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n     *\\n     * This internal function is like {safeTransferFrom} in the sense that it invokes\\n     * {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - `to` cannot be the zero address.\\n     * - `from` cannot be the zero address.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function _safeTransfer(address from, address to, uint256 tokenId) internal {\\n        _safeTransfer(from, to, tokenId, \\\"\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n     */\\n    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\\n        _transfer(from, to, tokenId);\\n        ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\\n    }\\n\\n    /**\\n     * @dev Approve `to` to operate on `tokenId`\\n     *\\n     * The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\\n     * either the owner of the token, or approved to operate on all tokens held by this owner.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\\n     */\\n    function _approve(address to, uint256 tokenId, address auth) internal {\\n        _approve(to, tokenId, auth, true);\\n    }\\n\\n    /**\\n     * @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\\n     * emitted in the context of transfers.\\n     */\\n    function _approve(address to, uint256 tokenId, address auth, bool emitEvent) internal virtual {\\n        // Avoid reading the owner unless necessary\\n        if (emitEvent || auth != address(0)) {\\n            address owner = _requireOwned(tokenId);\\n\\n            // We do not use _isAuthorized because single-token approvals should not be able to call approve\\n            if (auth != address(0) && owner != auth && !isApprovedForAll(owner, auth)) {\\n                revert ERC721InvalidApprover(auth);\\n            }\\n\\n            if (emitEvent) {\\n                emit Approval(owner, to, tokenId);\\n            }\\n        }\\n\\n        _tokenApprovals[tokenId] = to;\\n    }\\n\\n    /**\\n     * @dev Approve `operator` to operate on all of `owner` tokens\\n     *\\n     * Requirements:\\n     * - operator can't be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\\n        if (operator == address(0)) {\\n            revert ERC721InvalidOperator(operator);\\n        }\\n        _operatorApprovals[owner][operator] = approved;\\n        emit ApprovalForAll(owner, operator, approved);\\n    }\\n\\n    /**\\n     * @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\\n     * Returns the owner.\\n     *\\n     * Overrides to ownership logic should be done to {_ownerOf}.\\n     */\\n    function _requireOwned(uint256 tokenId) internal view returns (address) {\\n        address owner = _ownerOf(tokenId);\\n        if (owner == address(0)) {\\n            revert ERC721NonexistentToken(tokenId);\\n        }\\n        return owner;\\n    }\\n}\\n\",\"keccak256\":\"0x39ed367e54765186281efcfe83e47cf0ad62cc879f10e191360712507125f29a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\\n     *   {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @title ERC-721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC-721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n    /**\\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n     * by `operator` from `from`, this function is called.\\n     *\\n     * It must return its Solidity selector to confirm the token transfer.\\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be\\n     * reverted.\\n     *\\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n     */\\n    function onERC721Received(\\n        address operator,\\n        address from,\\n        uint256 tokenId,\\n        bytes calldata data\\n    ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC721/extensions/ERC721URIStorage.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {ERC721} from \\\"../ERC721.sol\\\";\\nimport {Strings} from \\\"../../../utils/Strings.sol\\\";\\nimport {IERC4906} from \\\"../../../interfaces/IERC4906.sol\\\";\\nimport {IERC165} from \\\"../../../interfaces/IERC165.sol\\\";\\n\\n/**\\n * @dev ERC-721 token with storage based token URI management.\\n */\\nabstract contract ERC721URIStorage is IERC4906, ERC721 {\\n    using Strings for uint256;\\n\\n    // Interface ID as defined in ERC-4906. This does not correspond to a traditional interface ID as ERC-4906 only\\n    // defines events and does not include any external function.\\n    bytes4 private constant ERC4906_INTERFACE_ID = bytes4(0x49064906);\\n\\n    // Optional mapping for token URIs\\n    mapping(uint256 tokenId => string) private _tokenURIs;\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, IERC165) returns (bool) {\\n        return interfaceId == ERC4906_INTERFACE_ID || super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev See {IERC721Metadata-tokenURI}.\\n     */\\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n        _requireOwned(tokenId);\\n\\n        string memory _tokenURI = _tokenURIs[tokenId];\\n        string memory base = _baseURI();\\n\\n        // If there is no base URI, return the token URI.\\n        if (bytes(base).length == 0) {\\n            return _tokenURI;\\n        }\\n        // If both are set, concatenate the baseURI and tokenURI (via string.concat).\\n        if (bytes(_tokenURI).length > 0) {\\n            return string.concat(base, _tokenURI);\\n        }\\n\\n        return super.tokenURI(tokenId);\\n    }\\n\\n    /**\\n     * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\\n     *\\n     * Emits {IERC4906-MetadataUpdate}.\\n     */\\n    function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\\n        _tokenURIs[tokenId] = _tokenURI;\\n        emit MetadataUpdate(tokenId);\\n    }\\n}\\n\",\"keccak256\":\"0x2b27b58570ff2456c7e65022a356c7e4f205bfabf95d0e870855a86587bb1356\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721} from \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n    /**\\n     * @dev Returns the token collection name.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the token collection symbol.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n     */\\n    function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC721/utils/ERC721Utils.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC721Receiver} from \\\"../IERC721Receiver.sol\\\";\\nimport {IERC721Errors} from \\\"../../../interfaces/draft-IERC6093.sol\\\";\\n\\n/**\\n * @dev Library that provide common ERC-721 utility functions.\\n *\\n * See https://eips.ethereum.org/EIPS/eip-721[ERC-721].\\n *\\n * _Available since v5.1._\\n */\\nlibrary ERC721Utils {\\n    /**\\n     * @dev Performs an acceptance check for the provided `operator` by calling {IERC721Receiver-onERC721Received}\\n     * on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).\\n     *\\n     * The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).\\n     * Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept\\n     * the transfer.\\n     */\\n    function checkOnERC721Received(\\n        address operator,\\n        address from,\\n        address to,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) internal {\\n        if (to.code.length > 0) {\\n            try IERC721Receiver(to).onERC721Received(operator, from, tokenId, data) returns (bytes4 retval) {\\n                if (retval != IERC721Receiver.onERC721Received.selector) {\\n                    // Token rejected\\n                    revert IERC721Errors.ERC721InvalidReceiver(to);\\n                }\\n            } catch (bytes memory reason) {\\n                if (reason.length == 0) {\\n                    // non-IERC721Receiver implementer\\n                    revert IERC721Errors.ERC721InvalidReceiver(to);\\n                } else {\\n                    assembly (\\\"memory-safe\\\") {\\n                        revert(add(32, reason), mload(reason))\\n                    }\\n                }\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xddab643169f47a2c5291afafcbfdca045d9e6835553307d090bc048b6dabd0ac\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Panic.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Helper library for emitting standardized panic codes.\\n *\\n * ```solidity\\n * contract Example {\\n *      using Panic for uint256;\\n *\\n *      // Use any of the declared internal constants\\n *      function foo() { Panic.GENERIC.panic(); }\\n *\\n *      // Alternatively\\n *      function foo() { Panic.panic(Panic.GENERIC); }\\n * }\\n * ```\\n *\\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\\n *\\n * _Available since v5.1._\\n */\\n// slither-disable-next-line unused-state\\nlibrary Panic {\\n    /// @dev generic / unspecified error\\n    uint256 internal constant GENERIC = 0x00;\\n    /// @dev used by the assert() builtin\\n    uint256 internal constant ASSERT = 0x01;\\n    /// @dev arithmetic underflow or overflow\\n    uint256 internal constant UNDER_OVERFLOW = 0x11;\\n    /// @dev division or modulo by zero\\n    uint256 internal constant DIVISION_BY_ZERO = 0x12;\\n    /// @dev enum conversion error\\n    uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\\n    /// @dev invalid encoding in storage\\n    uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\\n    /// @dev empty array pop\\n    uint256 internal constant EMPTY_ARRAY_POP = 0x31;\\n    /// @dev array out of bounds access\\n    uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\\n    /// @dev resource error (too large allocation or too large array)\\n    uint256 internal constant RESOURCE_ERROR = 0x41;\\n    /// @dev calling invalid internal function\\n    uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\\n\\n    /// @dev Reverts with a panic code. Recommended to use with\\n    /// the internal constants with predefined codes.\\n    function panic(uint256 code) internal pure {\\n        assembly (\\\"memory-safe\\\") {\\n            mstore(0x00, 0x4e487b71)\\n            mstore(0x20, code)\\n            revert(0x1c, 0x24)\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Math} from \\\"./math/Math.sol\\\";\\nimport {SafeCast} from \\\"./math/SafeCast.sol\\\";\\nimport {SignedMath} from \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    using SafeCast for *;\\n\\n    bytes16 private constant HEX_DIGITS = \\\"0123456789abcdef\\\";\\n    uint8 private constant ADDRESS_LENGTH = 20;\\n    uint256 private constant SPECIAL_CHARS_LOOKUP =\\n        (1 << 0x08) | // backspace\\n            (1 << 0x09) | // tab\\n            (1 << 0x0a) | // newline\\n            (1 << 0x0c) | // form feed\\n            (1 << 0x0d) | // carriage return\\n            (1 << 0x22) | // double quote\\n            (1 << 0x5c); // backslash\\n\\n    /**\\n     * @dev The `value` string doesn't fit in the specified `length`.\\n     */\\n    error StringsInsufficientHexLength(uint256 value, uint256 length);\\n\\n    /**\\n     * @dev The string being parsed contains characters that are not in scope of the given base.\\n     */\\n    error StringsInvalidChar();\\n\\n    /**\\n     * @dev The string being parsed is not a properly formatted address.\\n     */\\n    error StringsInvalidAddressFormat();\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            uint256 length = Math.log10(value) + 1;\\n            string memory buffer = new string(length);\\n            uint256 ptr;\\n            assembly (\\\"memory-safe\\\") {\\n                ptr := add(buffer, add(32, length))\\n            }\\n            while (true) {\\n                ptr--;\\n                assembly (\\\"memory-safe\\\") {\\n                    mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\\n                }\\n                value /= 10;\\n                if (value == 0) break;\\n            }\\n            return buffer;\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n     */\\n    function toStringSigned(int256 value) internal pure returns (string memory) {\\n        return string.concat(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value)));\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        unchecked {\\n            return toHexString(value, Math.log256(value) + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        uint256 localValue = value;\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = HEX_DIGITS[localValue & 0xf];\\n            localValue >>= 4;\\n        }\\n        if (localValue != 0) {\\n            revert StringsInsufficientHexLength(value, length);\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\\n     * representation.\\n     */\\n    function toHexString(address addr) internal pure returns (string memory) {\\n        return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\\n    }\\n\\n    /**\\n     * @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\\n     * representation, according to EIP-55.\\n     */\\n    function toChecksumHexString(address addr) internal pure returns (string memory) {\\n        bytes memory buffer = bytes(toHexString(addr));\\n\\n        // hash the hex part of buffer (skip length + 2 bytes, length 40)\\n        uint256 hashValue;\\n        assembly (\\\"memory-safe\\\") {\\n            hashValue := shr(96, keccak256(add(buffer, 0x22), 40))\\n        }\\n\\n        for (uint256 i = 41; i > 1; --i) {\\n            // possible values for buffer[i] are 48 (0) to 57 (9) and 97 (a) to 102 (f)\\n            if (hashValue & 0xf > 7 && uint8(buffer[i]) > 96) {\\n                // case shift by xoring with 0x20\\n                buffer[i] ^= 0x20;\\n            }\\n            hashValue >>= 4;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Returns true if the two strings are equal.\\n     */\\n    function equal(string memory a, string memory b) internal pure returns (bool) {\\n        return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\\n    }\\n\\n    /**\\n     * @dev Parse a decimal string and returns the value as a `uint256`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `[0-9]*`\\n     * - The result must fit into an `uint256` type\\n     */\\n    function parseUint(string memory input) internal pure returns (uint256) {\\n        return parseUint(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `[0-9]*`\\n     * - The result must fit into an `uint256` type\\n     */\\n    function parseUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\\n        (bool success, uint256 value) = tryParseUint(input, begin, end);\\n        if (!success) revert StringsInvalidChar();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseUint(string memory input) internal pure returns (bool success, uint256 value) {\\n        return _tryParseUintUncheckedBounds(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid\\n     * character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseUint(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, uint256 value) {\\n        if (end > bytes(input).length || begin > end) return (false, 0);\\n        return _tryParseUintUncheckedBounds(input, begin, end);\\n    }\\n\\n    /**\\n     * @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\\n     */\\n    function _tryParseUintUncheckedBounds(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) private pure returns (bool success, uint256 value) {\\n        bytes memory buffer = bytes(input);\\n\\n        uint256 result = 0;\\n        for (uint256 i = begin; i < end; ++i) {\\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\\n            if (chr > 9) return (false, 0);\\n            result *= 10;\\n            result += chr;\\n        }\\n        return (true, result);\\n    }\\n\\n    /**\\n     * @dev Parse a decimal string and returns the value as a `int256`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `[-+]?[0-9]*`\\n     * - The result must fit in an `int256` type.\\n     */\\n    function parseInt(string memory input) internal pure returns (int256) {\\n        return parseInt(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `[-+]?[0-9]*`\\n     * - The result must fit in an `int256` type.\\n     */\\n    function parseInt(string memory input, uint256 begin, uint256 end) internal pure returns (int256) {\\n        (bool success, int256 value) = tryParseInt(input, begin, end);\\n        if (!success) revert StringsInvalidChar();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if\\n     * the result does not fit in a `int256`.\\n     *\\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\\n     */\\n    function tryParseInt(string memory input) internal pure returns (bool success, int256 value) {\\n        return _tryParseIntUncheckedBounds(input, 0, bytes(input).length);\\n    }\\n\\n    uint256 private constant ABS_MIN_INT256 = 2 ** 255;\\n\\n    /**\\n     * @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid\\n     * character or if the result does not fit in a `int256`.\\n     *\\n     * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`.\\n     */\\n    function tryParseInt(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, int256 value) {\\n        if (end > bytes(input).length || begin > end) return (false, 0);\\n        return _tryParseIntUncheckedBounds(input, begin, end);\\n    }\\n\\n    /**\\n     * @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that\\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\\n     */\\n    function _tryParseIntUncheckedBounds(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) private pure returns (bool success, int256 value) {\\n        bytes memory buffer = bytes(input);\\n\\n        // Check presence of a negative sign.\\n        bytes1 sign = begin == end ? bytes1(0) : bytes1(_unsafeReadBytesOffset(buffer, begin)); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\\n        bool positiveSign = sign == bytes1(\\\"+\\\");\\n        bool negativeSign = sign == bytes1(\\\"-\\\");\\n        uint256 offset = (positiveSign || negativeSign).toUint();\\n\\n        (bool absSuccess, uint256 absValue) = tryParseUint(input, begin + offset, end);\\n\\n        if (absSuccess && absValue < ABS_MIN_INT256) {\\n            return (true, negativeSign ? -int256(absValue) : int256(absValue));\\n        } else if (absSuccess && negativeSign && absValue == ABS_MIN_INT256) {\\n            return (true, type(int256).min);\\n        } else return (false, 0);\\n    }\\n\\n    /**\\n     * @dev Parse a hexadecimal string (with or without \\\"0x\\\" prefix), and returns the value as a `uint256`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]*`\\n     * - The result must fit in an `uint256` type.\\n     */\\n    function parseHexUint(string memory input) internal pure returns (uint256) {\\n        return parseHexUint(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]*`\\n     * - The result must fit in an `uint256` type.\\n     */\\n    function parseHexUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) {\\n        (bool success, uint256 value) = tryParseHexUint(input, begin, end);\\n        if (!success) revert StringsInvalidChar();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseHexUint(string memory input) internal pure returns (bool success, uint256 value) {\\n        return _tryParseHexUintUncheckedBounds(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an\\n     * invalid character.\\n     *\\n     * NOTE: This function will revert if the result does not fit in a `uint256`.\\n     */\\n    function tryParseHexUint(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, uint256 value) {\\n        if (end > bytes(input).length || begin > end) return (false, 0);\\n        return _tryParseHexUintUncheckedBounds(input, begin, end);\\n    }\\n\\n    /**\\n     * @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that\\n     * `begin <= end <= input.length`. Other inputs would result in undefined behavior.\\n     */\\n    function _tryParseHexUintUncheckedBounds(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) private pure returns (bool success, uint256 value) {\\n        bytes memory buffer = bytes(input);\\n\\n        // skip 0x prefix if present\\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(buffer, begin)) == bytes2(\\\"0x\\\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\\n        uint256 offset = hasPrefix.toUint() * 2;\\n\\n        uint256 result = 0;\\n        for (uint256 i = begin + offset; i < end; ++i) {\\n            uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i)));\\n            if (chr > 15) return (false, 0);\\n            result *= 16;\\n            unchecked {\\n                // Multiplying by 16 is equivalent to a shift of 4 bits (with additional overflow check).\\n                // This guarantees that adding a value < 16 will not cause an overflow, hence the unchecked.\\n                result += chr;\\n            }\\n        }\\n        return (true, result);\\n    }\\n\\n    /**\\n     * @dev Parse a hexadecimal string (with or without \\\"0x\\\" prefix), and returns the value as an `address`.\\n     *\\n     * Requirements:\\n     * - The string must be formatted as `(0x)?[0-9a-fA-F]{40}`\\n     */\\n    function parseAddress(string memory input) internal pure returns (address) {\\n        return parseAddress(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and\\n     * `end` (excluded).\\n     *\\n     * Requirements:\\n     * - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}`\\n     */\\n    function parseAddress(string memory input, uint256 begin, uint256 end) internal pure returns (address) {\\n        (bool success, address value) = tryParseAddress(input, begin, end);\\n        if (!success) revert StringsInvalidAddressFormat();\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly\\n     * formatted address. See {parseAddress-string} requirements.\\n     */\\n    function tryParseAddress(string memory input) internal pure returns (bool success, address value) {\\n        return tryParseAddress(input, 0, bytes(input).length);\\n    }\\n\\n    /**\\n     * @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly\\n     * formatted address. See {parseAddress-string-uint256-uint256} requirements.\\n     */\\n    function tryParseAddress(\\n        string memory input,\\n        uint256 begin,\\n        uint256 end\\n    ) internal pure returns (bool success, address value) {\\n        if (end > bytes(input).length || begin > end) return (false, address(0));\\n\\n        bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(bytes(input), begin)) == bytes2(\\\"0x\\\"); // don't do out-of-bound (possibly unsafe) read if sub-string is empty\\n        uint256 expectedLength = 40 + hasPrefix.toUint() * 2;\\n\\n        // check that input is the correct length\\n        if (end - begin == expectedLength) {\\n            // length guarantees that this does not overflow, and value is at most type(uint160).max\\n            (bool s, uint256 v) = _tryParseHexUintUncheckedBounds(input, begin, end);\\n            return (s, address(uint160(v)));\\n        } else {\\n            return (false, address(0));\\n        }\\n    }\\n\\n    function _tryParseChr(bytes1 chr) private pure returns (uint8) {\\n        uint8 value = uint8(chr);\\n\\n        // Try to parse `chr`:\\n        // - Case 1: [0-9]\\n        // - Case 2: [a-f]\\n        // - Case 3: [A-F]\\n        // - otherwise not supported\\n        unchecked {\\n            if (value > 47 && value < 58) value -= 48;\\n            else if (value > 96 && value < 103) value -= 87;\\n            else if (value > 64 && value < 71) value -= 55;\\n            else return type(uint8).max;\\n        }\\n\\n        return value;\\n    }\\n\\n    /**\\n     * @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata.\\n     *\\n     * WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped.\\n     *\\n     * NOTE: This function escapes all unicode characters, and not just the ones in ranges defined in section 2.5 of\\n     * RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). ECMAScript's `JSON.parse` does recover escaped unicode\\n     * characters that are not in this range, but other tooling may provide different results.\\n     */\\n    function escapeJSON(string memory input) internal pure returns (string memory) {\\n        bytes memory buffer = bytes(input);\\n        bytes memory output = new bytes(2 * buffer.length); // worst case scenario\\n        uint256 outputLength = 0;\\n\\n        for (uint256 i; i < buffer.length; ++i) {\\n            bytes1 char = bytes1(_unsafeReadBytesOffset(buffer, i));\\n            if (((SPECIAL_CHARS_LOOKUP & (1 << uint8(char))) != 0)) {\\n                output[outputLength++] = \\\"\\\\\\\\\\\";\\n                if (char == 0x08) output[outputLength++] = \\\"b\\\";\\n                else if (char == 0x09) output[outputLength++] = \\\"t\\\";\\n                else if (char == 0x0a) output[outputLength++] = \\\"n\\\";\\n                else if (char == 0x0c) output[outputLength++] = \\\"f\\\";\\n                else if (char == 0x0d) output[outputLength++] = \\\"r\\\";\\n                else if (char == 0x5c) output[outputLength++] = \\\"\\\\\\\\\\\";\\n                else if (char == 0x22) {\\n                    // solhint-disable-next-line quotes\\n                    output[outputLength++] = '\\\"';\\n                }\\n            } else {\\n                output[outputLength++] = char;\\n            }\\n        }\\n        // write the actual length and deallocate unused memory\\n        assembly (\\\"memory-safe\\\") {\\n            mstore(output, outputLength)\\n            mstore(0x40, add(output, shl(5, shr(5, add(outputLength, 63)))))\\n        }\\n\\n        return string(output);\\n    }\\n\\n    /**\\n     * @dev Reads a bytes32 from a bytes array without bounds checking.\\n     *\\n     * NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the\\n     * assembly block as such would prevent some optimizations.\\n     */\\n    function _unsafeReadBytesOffset(bytes memory buffer, uint256 offset) private pure returns (bytes32 value) {\\n        // This is not memory safe in the general case, but all calls to this private function are within bounds.\\n        assembly (\\\"memory-safe\\\") {\\n            value := mload(add(buffer, add(0x20, offset)))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x81c274a60a7ae232ae3dc9ff3a4011b4849a853c13b0832cd3351bb1bb2f0dae\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Panic} from \\\"../Panic.sol\\\";\\nimport {SafeCast} from \\\"./SafeCast.sol\\\";\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n    enum Rounding {\\n        Floor, // Toward negative infinity\\n        Ceil, // Toward positive infinity\\n        Trunc, // Toward zero\\n        Expand // Away from zero\\n    }\\n\\n    /**\\n     * @dev Return the 512-bit addition of two uint256.\\n     *\\n     * The result is stored in two 256 variables such that sum = high * 2\\u00b2\\u2075\\u2076 + low.\\n     */\\n    function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\\n        assembly (\\\"memory-safe\\\") {\\n            low := add(a, b)\\n            high := lt(low, a)\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the 512-bit multiplication of two uint256.\\n     *\\n     * The result is stored in two 256 variables such that product = high * 2\\u00b2\\u2075\\u2076 + low.\\n     */\\n    function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) {\\n        // 512-bit multiply [high low] = x * y. Compute the product mod 2\\u00b2\\u2075\\u2076 and mod 2\\u00b2\\u2075\\u2076 - 1, then use\\n        // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n        // variables such that product = high * 2\\u00b2\\u2075\\u2076 + low.\\n        assembly (\\\"memory-safe\\\") {\\n            let mm := mulmod(a, b, not(0))\\n            low := mul(a, b)\\n            high := sub(sub(mm, low), lt(mm, low))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a + b;\\n            success = c >= a;\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a - b;\\n            success = c <= a;\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow).\\n     */\\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            uint256 c = a * b;\\n            assembly (\\\"memory-safe\\\") {\\n                // Only true when the multiplication doesn't overflow\\n                // (c / a == b) || (a == 0)\\n                success := or(eq(div(c, a), b), iszero(a))\\n            }\\n            // equivalent to: success ? c : 0\\n            result = c * SafeCast.toUint(success);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\\n     */\\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            success = b > 0;\\n            assembly (\\\"memory-safe\\\") {\\n                // The `DIV` opcode returns zero when the denominator is 0.\\n                result := div(a, b)\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\\n     */\\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\\n        unchecked {\\n            success = b > 0;\\n            assembly (\\\"memory-safe\\\") {\\n                // The `MOD` opcode returns zero when the denominator is 0.\\n                result := mod(a, b)\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating addition, bounds to `2\\u00b2\\u2075\\u2076 - 1` instead of overflowing.\\n     */\\n    function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (bool success, uint256 result) = tryAdd(a, b);\\n        return ternary(success, result, type(uint256).max);\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing.\\n     */\\n    function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (, uint256 result) = trySub(a, b);\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Unsigned saturating multiplication, bounds to `2\\u00b2\\u2075\\u2076 - 1` instead of overflowing.\\n     */\\n    function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        (bool success, uint256 result) = tryMul(a, b);\\n        return ternary(success, result, type(uint256).max);\\n    }\\n\\n    /**\\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\\n     *\\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\\n     * one branch when needed, making this function more expensive.\\n     */\\n    function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\\n        unchecked {\\n            // branchless ternary works because:\\n            // b ^ (a ^ b) == a\\n            // b ^ 0 == b\\n            return b ^ ((a ^ b) * SafeCast.toUint(condition));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the largest of two numbers.\\n     */\\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return ternary(a > b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two numbers.\\n     */\\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return ternary(a < b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the average of two numbers. The result is rounded towards\\n     * zero.\\n     */\\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n        // (a + b) / 2 can overflow.\\n        return (a & b) + (a ^ b) / 2;\\n    }\\n\\n    /**\\n     * @dev Returns the ceiling of the division of two numbers.\\n     *\\n     * This differs from standard division with `/` in that it rounds towards infinity instead\\n     * of rounding towards zero.\\n     */\\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n        if (b == 0) {\\n            // Guarantee the same behavior as in a regular Solidity division.\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n\\n        // The following calculation ensures accurate ceiling division without overflow.\\n        // Since a is non-zero, (a - 1) / b will not overflow.\\n        // The largest possible result occurs when (a - 1) / b is type(uint256).max,\\n        // but the largest value we can obtain is type(uint256).max - 1, which happens\\n        // when a = type(uint256).max and b = 1.\\n        unchecked {\\n            return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\\n     * denominator == 0.\\n     *\\n     * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\\n     * Uniswap Labs also under MIT license.\\n     */\\n    function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n        unchecked {\\n            (uint256 high, uint256 low) = mul512(x, y);\\n\\n            // Handle non-overflow cases, 256 by 256 division.\\n            if (high == 0) {\\n                // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n                // The surrounding unchecked block does not change this fact.\\n                // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n                return low / denominator;\\n            }\\n\\n            // Make sure the result is less than 2\\u00b2\\u2075\\u2076. Also prevents denominator == 0.\\n            if (denominator <= high) {\\n                Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\\n            }\\n\\n            ///////////////////////////////////////////////\\n            // 512 by 256 division.\\n            ///////////////////////////////////////////////\\n\\n            // Make division exact by subtracting the remainder from [high low].\\n            uint256 remainder;\\n            assembly (\\\"memory-safe\\\") {\\n                // Compute remainder using mulmod.\\n                remainder := mulmod(x, y, denominator)\\n\\n                // Subtract 256 bit number from 512 bit number.\\n                high := sub(high, gt(remainder, low))\\n                low := sub(low, remainder)\\n            }\\n\\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\\n            // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\\n\\n            uint256 twos = denominator & (0 - denominator);\\n            assembly (\\\"memory-safe\\\") {\\n                // Divide denominator by twos.\\n                denominator := div(denominator, twos)\\n\\n                // Divide [high low] by twos.\\n                low := div(low, twos)\\n\\n                // Flip twos such that it is 2\\u00b2\\u2075\\u2076 / twos. If twos is zero, then it becomes one.\\n                twos := add(div(sub(0, twos), twos), 1)\\n            }\\n\\n            // Shift in bits from high into low.\\n            low |= high * twos;\\n\\n            // Invert denominator mod 2\\u00b2\\u2075\\u2076. Now that denominator is an odd number, it has an inverse modulo 2\\u00b2\\u2075\\u2076 such\\n            // that denominator * inv \\u2261 1 mod 2\\u00b2\\u2075\\u2076. Compute the inverse by starting with a seed that is correct for\\n            // four bits. That is, denominator * inv \\u2261 1 mod 2\\u2074.\\n            uint256 inverse = (3 * denominator) ^ 2;\\n\\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\\n            // works in modular arithmetic, doubling the correct bits in each step.\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u2078\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b9\\u2076\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b3\\u00b2\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u2076\\u2074\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b9\\u00b2\\u2078\\n            inverse *= 2 - denominator * inverse; // inverse mod 2\\u00b2\\u2075\\u2076\\n\\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n            // This will give us the correct result modulo 2\\u00b2\\u2075\\u2076. Since the preconditions guarantee that the outcome is\\n            // less than 2\\u00b2\\u2075\\u2076, this is the final result. We don't need to compute the high bits of the result and high\\n            // is no longer required.\\n            result = low * inverse;\\n            return result;\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates x * y / denominator with full precision, following the selected rounding direction.\\n     */\\n    function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n        return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\\n    }\\n\\n    /**\\n     * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256.\\n     */\\n    function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) {\\n        unchecked {\\n            (uint256 high, uint256 low) = mul512(x, y);\\n            if (high >= 1 << n) {\\n                Panic.panic(Panic.UNDER_OVERFLOW);\\n            }\\n            return (high << (256 - n)) | (low >> n);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates x * y >> n with full precision, following the selected rounding direction.\\n     */\\n    function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) {\\n        return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0);\\n    }\\n\\n    /**\\n     * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\\n     *\\n     * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\\n     * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\\n     *\\n     * If the input value is not inversible, 0 is returned.\\n     *\\n     * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\\n     * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\\n     */\\n    function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\\n        unchecked {\\n            if (n == 0) return 0;\\n\\n            // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\\n            // Used to compute integers x and y such that: ax + ny = gcd(a, n).\\n            // When the gcd is 1, then the inverse of a modulo n exists and it's x.\\n            // ax + ny = 1\\n            // ax = 1 + (-y)n\\n            // ax \\u2261 1 (mod n) # x is the inverse of a modulo n\\n\\n            // If the remainder is 0 the gcd is n right away.\\n            uint256 remainder = a % n;\\n            uint256 gcd = n;\\n\\n            // Therefore the initial coefficients are:\\n            // ax + ny = gcd(a, n) = n\\n            // 0a + 1n = n\\n            int256 x = 0;\\n            int256 y = 1;\\n\\n            while (remainder != 0) {\\n                uint256 quotient = gcd / remainder;\\n\\n                (gcd, remainder) = (\\n                    // The old remainder is the next gcd to try.\\n                    remainder,\\n                    // Compute the next remainder.\\n                    // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\\n                    // where gcd is at most n (capped to type(uint256).max)\\n                    gcd - remainder * quotient\\n                );\\n\\n                (x, y) = (\\n                    // Increment the coefficient of a.\\n                    y,\\n                    // Decrement the coefficient of n.\\n                    // Can overflow, but the result is casted to uint256 so that the\\n                    // next value of y is \\\"wrapped around\\\" to a value between 0 and n - 1.\\n                    x - y * int256(quotient)\\n                );\\n            }\\n\\n            if (gcd != 1) return 0; // No inverse exists.\\n            return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\\n        }\\n    }\\n\\n    /**\\n     * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\\n     *\\n     * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\\n     * prime, then `a**(p-1) \\u2261 1 mod p`. As a consequence, we have `a * a**(p-2) \\u2261 1 mod p`, which means that\\n     * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\\n     *\\n     * NOTE: this function does NOT check that `p` is a prime greater than `2`.\\n     */\\n    function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\\n        unchecked {\\n            return Math.modExp(a, p - 2, p);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\\n     *\\n     * Requirements:\\n     * - modulus can't be zero\\n     * - underlying staticcall to precompile must succeed\\n     *\\n     * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\\n     * sure the chain you're using it on supports the precompiled contract for modular exponentiation\\n     * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\\n     * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\\n     * interpreted as 0.\\n     */\\n    function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\\n        (bool success, uint256 result) = tryModExp(b, e, m);\\n        if (!success) {\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\\n     * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\\n     * to operate modulo 0 or if the underlying precompile reverted.\\n     *\\n     * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\\n     * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\\n     * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\\n     * of a revert, but the result may be incorrectly interpreted as 0.\\n     */\\n    function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\\n        if (m == 0) return (false, 0);\\n        assembly (\\\"memory-safe\\\") {\\n            let ptr := mload(0x40)\\n            // | Offset    | Content    | Content (Hex)                                                      |\\n            // |-----------|------------|--------------------------------------------------------------------|\\n            // | 0x00:0x1f | size of b  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x20:0x3f | size of e  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x40:0x5f | size of m  | 0x0000000000000000000000000000000000000000000000000000000000000020 |\\n            // | 0x60:0x7f | value of b | 0x<.............................................................b> |\\n            // | 0x80:0x9f | value of e | 0x<.............................................................e> |\\n            // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\\n            mstore(ptr, 0x20)\\n            mstore(add(ptr, 0x20), 0x20)\\n            mstore(add(ptr, 0x40), 0x20)\\n            mstore(add(ptr, 0x60), b)\\n            mstore(add(ptr, 0x80), e)\\n            mstore(add(ptr, 0xa0), m)\\n\\n            // Given the result < m, it's guaranteed to fit in 32 bytes,\\n            // so we can use the memory scratch space located at offset 0.\\n            success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\\n            result := mload(0x00)\\n        }\\n    }\\n\\n    /**\\n     * @dev Variant of {modExp} that supports inputs of arbitrary length.\\n     */\\n    function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\\n        (bool success, bytes memory result) = tryModExp(b, e, m);\\n        if (!success) {\\n            Panic.panic(Panic.DIVISION_BY_ZERO);\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\\n     */\\n    function tryModExp(\\n        bytes memory b,\\n        bytes memory e,\\n        bytes memory m\\n    ) internal view returns (bool success, bytes memory result) {\\n        if (_zeroBytes(m)) return (false, new bytes(0));\\n\\n        uint256 mLen = m.length;\\n\\n        // Encode call args in result and move the free memory pointer\\n        result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\\n\\n        assembly (\\\"memory-safe\\\") {\\n            let dataPtr := add(result, 0x20)\\n            // Write result on top of args to avoid allocating extra memory.\\n            success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\\n            // Overwrite the length.\\n            // result.length > returndatasize() is guaranteed because returndatasize() == m.length\\n            mstore(result, mLen)\\n            // Set the memory pointer after the returned data.\\n            mstore(0x40, add(dataPtr, mLen))\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns whether the provided byte array is zero.\\n     */\\n    function _zeroBytes(bytes memory byteArray) private pure returns (bool) {\\n        for (uint256 i = 0; i < byteArray.length; ++i) {\\n            if (byteArray[i] != 0) {\\n                return false;\\n            }\\n        }\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\\n     * towards zero.\\n     *\\n     * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\\n     * using integer operations.\\n     */\\n    function sqrt(uint256 a) internal pure returns (uint256) {\\n        unchecked {\\n            // Take care of easy edge cases when a == 0 or a == 1\\n            if (a <= 1) {\\n                return a;\\n            }\\n\\n            // In this function, we use Newton's method to get a root of `f(x) := x\\u00b2 - a`. It involves building a\\n            // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\\n            // the current value as `\\u03b5_n = | x_n - sqrt(a) |`.\\n            //\\n            // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\\n            // of the target. (i.e. `2**(e-1) \\u2264 sqrt(a) < 2**e`). We know that `e \\u2264 128` because `(2\\u00b9\\u00b2\\u2078)\\u00b2 = 2\\u00b2\\u2075\\u2076` is\\n            // bigger than any uint256.\\n            //\\n            // By noticing that\\n            // `2**(e-1) \\u2264 sqrt(a) < 2**e \\u2192 (2**(e-1))\\u00b2 \\u2264 a < (2**e)\\u00b2 \\u2192 2**(2*e-2) \\u2264 a < 2**(2*e)`\\n            // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\\n            // to the msb function.\\n            uint256 aa = a;\\n            uint256 xn = 1;\\n\\n            if (aa >= (1 << 128)) {\\n                aa >>= 128;\\n                xn <<= 64;\\n            }\\n            if (aa >= (1 << 64)) {\\n                aa >>= 64;\\n                xn <<= 32;\\n            }\\n            if (aa >= (1 << 32)) {\\n                aa >>= 32;\\n                xn <<= 16;\\n            }\\n            if (aa >= (1 << 16)) {\\n                aa >>= 16;\\n                xn <<= 8;\\n            }\\n            if (aa >= (1 << 8)) {\\n                aa >>= 8;\\n                xn <<= 4;\\n            }\\n            if (aa >= (1 << 4)) {\\n                aa >>= 4;\\n                xn <<= 2;\\n            }\\n            if (aa >= (1 << 2)) {\\n                xn <<= 1;\\n            }\\n\\n            // We now have x_n such that `x_n = 2**(e-1) \\u2264 sqrt(a) < 2**e = 2 * x_n`. This implies \\u03b5_n \\u2264 2**(e-1).\\n            //\\n            // We can refine our estimation by noticing that the middle of that interval minimizes the error.\\n            // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to \\u03b5_n \\u2264 2**(e-2).\\n            // This is going to be our x_0 (and \\u03b5_0)\\n            xn = (3 * xn) >> 1; // \\u03b5_0 := | x_0 - sqrt(a) | \\u2264 2**(e-2)\\n\\n            // From here, Newton's method give us:\\n            // x_{n+1} = (x_n + a / x_n) / 2\\n            //\\n            // One should note that:\\n            // x_{n+1}\\u00b2 - a = ((x_n + a / x_n) / 2)\\u00b2 - a\\n            //              = ((x_n\\u00b2 + a) / (2 * x_n))\\u00b2 - a\\n            //              = (x_n\\u2074 + 2 * a * x_n\\u00b2 + a\\u00b2) / (4 * x_n\\u00b2) - a\\n            //              = (x_n\\u2074 + 2 * a * x_n\\u00b2 + a\\u00b2 - 4 * a * x_n\\u00b2) / (4 * x_n\\u00b2)\\n            //              = (x_n\\u2074 - 2 * a * x_n\\u00b2 + a\\u00b2) / (4 * x_n\\u00b2)\\n            //              = (x_n\\u00b2 - a)\\u00b2 / (2 * x_n)\\u00b2\\n            //              = ((x_n\\u00b2 - a) / (2 * x_n))\\u00b2\\n            //              \\u2265 0\\n            // Which proves that for all n \\u2265 1, sqrt(a) \\u2264 x_n\\n            //\\n            // This gives us the proof of quadratic convergence of the sequence:\\n            // \\u03b5_{n+1} = | x_{n+1} - sqrt(a) |\\n            //         = | (x_n + a / x_n) / 2 - sqrt(a) |\\n            //         = | (x_n\\u00b2 + a - 2*x_n*sqrt(a)) / (2 * x_n) |\\n            //         = | (x_n - sqrt(a))\\u00b2 / (2 * x_n) |\\n            //         = | \\u03b5_n\\u00b2 / (2 * x_n) |\\n            //         = \\u03b5_n\\u00b2 / | (2 * x_n) |\\n            //\\n            // For the first iteration, we have a special case where x_0 is known:\\n            // \\u03b5_1 = \\u03b5_0\\u00b2 / | (2 * x_0) |\\n            //     \\u2264 (2**(e-2))\\u00b2 / (2 * (2**(e-1) + 2**(e-2)))\\n            //     \\u2264 2**(2*e-4) / (3 * 2**(e-1))\\n            //     \\u2264 2**(e-3) / 3\\n            //     \\u2264 2**(e-3-log2(3))\\n            //     \\u2264 2**(e-4.5)\\n            //\\n            // For the following iterations, we use the fact that, 2**(e-1) \\u2264 sqrt(a) \\u2264 x_n:\\n            // \\u03b5_{n+1} = \\u03b5_n\\u00b2 / | (2 * x_n) |\\n            //         \\u2264 (2**(e-k))\\u00b2 / (2 * 2**(e-1))\\n            //         \\u2264 2**(2*e-2*k) / 2**e\\n            //         \\u2264 2**(e-2*k)\\n            xn = (xn + a / xn) >> 1; // \\u03b5_1 := | x_1 - sqrt(a) | \\u2264 2**(e-4.5)  -- special case, see above\\n            xn = (xn + a / xn) >> 1; // \\u03b5_2 := | x_2 - sqrt(a) | \\u2264 2**(e-9)    -- general case with k = 4.5\\n            xn = (xn + a / xn) >> 1; // \\u03b5_3 := | x_3 - sqrt(a) | \\u2264 2**(e-18)   -- general case with k = 9\\n            xn = (xn + a / xn) >> 1; // \\u03b5_4 := | x_4 - sqrt(a) | \\u2264 2**(e-36)   -- general case with k = 18\\n            xn = (xn + a / xn) >> 1; // \\u03b5_5 := | x_5 - sqrt(a) | \\u2264 2**(e-72)   -- general case with k = 36\\n            xn = (xn + a / xn) >> 1; // \\u03b5_6 := | x_6 - sqrt(a) | \\u2264 2**(e-144)  -- general case with k = 72\\n\\n            // Because e \\u2264 128 (as discussed during the first estimation phase), we know have reached a precision\\n            // \\u03b5_6 \\u2264 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\\n            // sqrt(a) or sqrt(a) + 1.\\n            return xn - SafeCast.toUint(xn > a / xn);\\n        }\\n    }\\n\\n    /**\\n     * @dev Calculates sqrt(a), following the selected rounding direction.\\n     */\\n    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = sqrt(a);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 2 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     */\\n    function log2(uint256 x) internal pure returns (uint256 r) {\\n        // If value has upper 128 bits set, log2 result is at least 128\\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\\n        // If upper 64 bits of 128-bit half set, add 64 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\\n        // If upper 32 bits of 64-bit half set, add 32 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\\n        // If upper 16 bits of 32-bit half set, add 16 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\\n        // If upper 8 bits of 16-bit half set, add 8 to result\\n        r |= SafeCast.toUint((x >> r) > 0xff) << 3;\\n        // If upper 4 bits of 8-bit half set, add 4 to result\\n        r |= SafeCast.toUint((x >> r) > 0xf) << 2;\\n\\n        // Shifts value right by the current result and use it as an index into this lookup table:\\n        //\\n        // | x (4 bits) |  index  | table[index] = MSB position |\\n        // |------------|---------|-----------------------------|\\n        // |    0000    |    0    |        table[0] = 0         |\\n        // |    0001    |    1    |        table[1] = 0         |\\n        // |    0010    |    2    |        table[2] = 1         |\\n        // |    0011    |    3    |        table[3] = 1         |\\n        // |    0100    |    4    |        table[4] = 2         |\\n        // |    0101    |    5    |        table[5] = 2         |\\n        // |    0110    |    6    |        table[6] = 2         |\\n        // |    0111    |    7    |        table[7] = 2         |\\n        // |    1000    |    8    |        table[8] = 3         |\\n        // |    1001    |    9    |        table[9] = 3         |\\n        // |    1010    |   10    |        table[10] = 3        |\\n        // |    1011    |   11    |        table[11] = 3        |\\n        // |    1100    |   12    |        table[12] = 3        |\\n        // |    1101    |   13    |        table[13] = 3        |\\n        // |    1110    |   14    |        table[14] = 3        |\\n        // |    1111    |   15    |        table[15] = 3        |\\n        //\\n        // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes.\\n        assembly (\\\"memory-safe\\\") {\\n            r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000))\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log2(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 10 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     */\\n    function log10(uint256 value) internal pure returns (uint256) {\\n        uint256 result = 0;\\n        unchecked {\\n            if (value >= 10 ** 64) {\\n                value /= 10 ** 64;\\n                result += 64;\\n            }\\n            if (value >= 10 ** 32) {\\n                value /= 10 ** 32;\\n                result += 32;\\n            }\\n            if (value >= 10 ** 16) {\\n                value /= 10 ** 16;\\n                result += 16;\\n            }\\n            if (value >= 10 ** 8) {\\n                value /= 10 ** 8;\\n                result += 8;\\n            }\\n            if (value >= 10 ** 4) {\\n                value /= 10 ** 4;\\n                result += 4;\\n            }\\n            if (value >= 10 ** 2) {\\n                value /= 10 ** 2;\\n                result += 2;\\n            }\\n            if (value >= 10 ** 1) {\\n                result += 1;\\n            }\\n        }\\n        return result;\\n    }\\n\\n    /**\\n     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log10(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Return the log in base 256 of a positive value rounded towards zero.\\n     * Returns 0 if given 0.\\n     *\\n     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n     */\\n    function log256(uint256 x) internal pure returns (uint256 r) {\\n        // If value has upper 128 bits set, log2 result is at least 128\\n        r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7;\\n        // If upper 64 bits of 128-bit half set, add 64 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6;\\n        // If upper 32 bits of 64-bit half set, add 32 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5;\\n        // If upper 16 bits of 32-bit half set, add 16 to result\\n        r |= SafeCast.toUint((x >> r) > 0xffff) << 4;\\n        // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8\\n        return (r >> 3) | SafeCast.toUint((x >> r) > 0xff);\\n    }\\n\\n    /**\\n     * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n     * Returns 0 if given 0.\\n     */\\n    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n        unchecked {\\n            uint256 result = log256(value);\\n            return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\\n     */\\n    function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\\n        return uint8(rounding) % 2 == 1;\\n    }\\n}\\n\",\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\\n * checks.\\n *\\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\\n * easily result in undesired exploitation or bugs, since developers usually\\n * assume that overflows raise errors. `SafeCast` restores this intuition by\\n * reverting the transaction when such an operation overflows.\\n *\\n * Using this library instead of the unchecked operations eliminates an entire\\n * class of bugs, so it's recommended to use it always.\\n */\\nlibrary SafeCast {\\n    /**\\n     * @dev Value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\\n\\n    /**\\n     * @dev An int value doesn't fit in an uint of `bits` size.\\n     */\\n    error SafeCastOverflowedIntToUint(int256 value);\\n\\n    /**\\n     * @dev Value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\\n\\n    /**\\n     * @dev An uint value doesn't fit in an int of `bits` size.\\n     */\\n    error SafeCastOverflowedUintToInt(uint256 value);\\n\\n    /**\\n     * @dev Returns the downcasted uint248 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint248).\\n     *\\n     * Counterpart to Solidity's `uint248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toUint248(uint256 value) internal pure returns (uint248) {\\n        if (value > type(uint248).max) {\\n            revert SafeCastOverflowedUintDowncast(248, value);\\n        }\\n        return uint248(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint240 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint240).\\n     *\\n     * Counterpart to Solidity's `uint240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toUint240(uint256 value) internal pure returns (uint240) {\\n        if (value > type(uint240).max) {\\n            revert SafeCastOverflowedUintDowncast(240, value);\\n        }\\n        return uint240(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint232 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint232).\\n     *\\n     * Counterpart to Solidity's `uint232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toUint232(uint256 value) internal pure returns (uint232) {\\n        if (value > type(uint232).max) {\\n            revert SafeCastOverflowedUintDowncast(232, value);\\n        }\\n        return uint232(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint224 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint224).\\n     *\\n     * Counterpart to Solidity's `uint224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toUint224(uint256 value) internal pure returns (uint224) {\\n        if (value > type(uint224).max) {\\n            revert SafeCastOverflowedUintDowncast(224, value);\\n        }\\n        return uint224(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint216 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint216).\\n     *\\n     * Counterpart to Solidity's `uint216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toUint216(uint256 value) internal pure returns (uint216) {\\n        if (value > type(uint216).max) {\\n            revert SafeCastOverflowedUintDowncast(216, value);\\n        }\\n        return uint216(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint208 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint208).\\n     *\\n     * Counterpart to Solidity's `uint208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toUint208(uint256 value) internal pure returns (uint208) {\\n        if (value > type(uint208).max) {\\n            revert SafeCastOverflowedUintDowncast(208, value);\\n        }\\n        return uint208(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint200 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint200).\\n     *\\n     * Counterpart to Solidity's `uint200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toUint200(uint256 value) internal pure returns (uint200) {\\n        if (value > type(uint200).max) {\\n            revert SafeCastOverflowedUintDowncast(200, value);\\n        }\\n        return uint200(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint192 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint192).\\n     *\\n     * Counterpart to Solidity's `uint192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toUint192(uint256 value) internal pure returns (uint192) {\\n        if (value > type(uint192).max) {\\n            revert SafeCastOverflowedUintDowncast(192, value);\\n        }\\n        return uint192(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint184 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint184).\\n     *\\n     * Counterpart to Solidity's `uint184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toUint184(uint256 value) internal pure returns (uint184) {\\n        if (value > type(uint184).max) {\\n            revert SafeCastOverflowedUintDowncast(184, value);\\n        }\\n        return uint184(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint176 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint176).\\n     *\\n     * Counterpart to Solidity's `uint176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toUint176(uint256 value) internal pure returns (uint176) {\\n        if (value > type(uint176).max) {\\n            revert SafeCastOverflowedUintDowncast(176, value);\\n        }\\n        return uint176(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint168 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint168).\\n     *\\n     * Counterpart to Solidity's `uint168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toUint168(uint256 value) internal pure returns (uint168) {\\n        if (value > type(uint168).max) {\\n            revert SafeCastOverflowedUintDowncast(168, value);\\n        }\\n        return uint168(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint160 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint160).\\n     *\\n     * Counterpart to Solidity's `uint160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toUint160(uint256 value) internal pure returns (uint160) {\\n        if (value > type(uint160).max) {\\n            revert SafeCastOverflowedUintDowncast(160, value);\\n        }\\n        return uint160(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint152 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint152).\\n     *\\n     * Counterpart to Solidity's `uint152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toUint152(uint256 value) internal pure returns (uint152) {\\n        if (value > type(uint152).max) {\\n            revert SafeCastOverflowedUintDowncast(152, value);\\n        }\\n        return uint152(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint144 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint144).\\n     *\\n     * Counterpart to Solidity's `uint144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toUint144(uint256 value) internal pure returns (uint144) {\\n        if (value > type(uint144).max) {\\n            revert SafeCastOverflowedUintDowncast(144, value);\\n        }\\n        return uint144(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint136 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint136).\\n     *\\n     * Counterpart to Solidity's `uint136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toUint136(uint256 value) internal pure returns (uint136) {\\n        if (value > type(uint136).max) {\\n            revert SafeCastOverflowedUintDowncast(136, value);\\n        }\\n        return uint136(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint128 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint128).\\n     *\\n     * Counterpart to Solidity's `uint128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toUint128(uint256 value) internal pure returns (uint128) {\\n        if (value > type(uint128).max) {\\n            revert SafeCastOverflowedUintDowncast(128, value);\\n        }\\n        return uint128(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint120 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint120).\\n     *\\n     * Counterpart to Solidity's `uint120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toUint120(uint256 value) internal pure returns (uint120) {\\n        if (value > type(uint120).max) {\\n            revert SafeCastOverflowedUintDowncast(120, value);\\n        }\\n        return uint120(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint112 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint112).\\n     *\\n     * Counterpart to Solidity's `uint112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toUint112(uint256 value) internal pure returns (uint112) {\\n        if (value > type(uint112).max) {\\n            revert SafeCastOverflowedUintDowncast(112, value);\\n        }\\n        return uint112(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint104 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint104).\\n     *\\n     * Counterpart to Solidity's `uint104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toUint104(uint256 value) internal pure returns (uint104) {\\n        if (value > type(uint104).max) {\\n            revert SafeCastOverflowedUintDowncast(104, value);\\n        }\\n        return uint104(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint96 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint96).\\n     *\\n     * Counterpart to Solidity's `uint96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toUint96(uint256 value) internal pure returns (uint96) {\\n        if (value > type(uint96).max) {\\n            revert SafeCastOverflowedUintDowncast(96, value);\\n        }\\n        return uint96(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint88 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint88).\\n     *\\n     * Counterpart to Solidity's `uint88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toUint88(uint256 value) internal pure returns (uint88) {\\n        if (value > type(uint88).max) {\\n            revert SafeCastOverflowedUintDowncast(88, value);\\n        }\\n        return uint88(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint80 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint80).\\n     *\\n     * Counterpart to Solidity's `uint80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toUint80(uint256 value) internal pure returns (uint80) {\\n        if (value > type(uint80).max) {\\n            revert SafeCastOverflowedUintDowncast(80, value);\\n        }\\n        return uint80(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint72 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint72).\\n     *\\n     * Counterpart to Solidity's `uint72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toUint72(uint256 value) internal pure returns (uint72) {\\n        if (value > type(uint72).max) {\\n            revert SafeCastOverflowedUintDowncast(72, value);\\n        }\\n        return uint72(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint64 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint64).\\n     *\\n     * Counterpart to Solidity's `uint64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toUint64(uint256 value) internal pure returns (uint64) {\\n        if (value > type(uint64).max) {\\n            revert SafeCastOverflowedUintDowncast(64, value);\\n        }\\n        return uint64(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint56 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint56).\\n     *\\n     * Counterpart to Solidity's `uint56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toUint56(uint256 value) internal pure returns (uint56) {\\n        if (value > type(uint56).max) {\\n            revert SafeCastOverflowedUintDowncast(56, value);\\n        }\\n        return uint56(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint48 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint48).\\n     *\\n     * Counterpart to Solidity's `uint48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toUint48(uint256 value) internal pure returns (uint48) {\\n        if (value > type(uint48).max) {\\n            revert SafeCastOverflowedUintDowncast(48, value);\\n        }\\n        return uint48(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint40 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint40).\\n     *\\n     * Counterpart to Solidity's `uint40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toUint40(uint256 value) internal pure returns (uint40) {\\n        if (value > type(uint40).max) {\\n            revert SafeCastOverflowedUintDowncast(40, value);\\n        }\\n        return uint40(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint32 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint32).\\n     *\\n     * Counterpart to Solidity's `uint32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toUint32(uint256 value) internal pure returns (uint32) {\\n        if (value > type(uint32).max) {\\n            revert SafeCastOverflowedUintDowncast(32, value);\\n        }\\n        return uint32(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint24 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint24).\\n     *\\n     * Counterpart to Solidity's `uint24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toUint24(uint256 value) internal pure returns (uint24) {\\n        if (value > type(uint24).max) {\\n            revert SafeCastOverflowedUintDowncast(24, value);\\n        }\\n        return uint24(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint16 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint16).\\n     *\\n     * Counterpart to Solidity's `uint16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toUint16(uint256 value) internal pure returns (uint16) {\\n        if (value > type(uint16).max) {\\n            revert SafeCastOverflowedUintDowncast(16, value);\\n        }\\n        return uint16(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted uint8 from uint256, reverting on\\n     * overflow (when the input is greater than largest uint8).\\n     *\\n     * Counterpart to Solidity's `uint8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toUint8(uint256 value) internal pure returns (uint8) {\\n        if (value > type(uint8).max) {\\n            revert SafeCastOverflowedUintDowncast(8, value);\\n        }\\n        return uint8(value);\\n    }\\n\\n    /**\\n     * @dev Converts a signed int256 into an unsigned uint256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be greater than or equal to 0.\\n     */\\n    function toUint256(int256 value) internal pure returns (uint256) {\\n        if (value < 0) {\\n            revert SafeCastOverflowedIntToUint(value);\\n        }\\n        return uint256(value);\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int248 from int256, reverting on\\n     * overflow (when the input is less than smallest int248 or\\n     * greater than largest int248).\\n     *\\n     * Counterpart to Solidity's `int248` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 248 bits\\n     */\\n    function toInt248(int256 value) internal pure returns (int248 downcasted) {\\n        downcasted = int248(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(248, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int240 from int256, reverting on\\n     * overflow (when the input is less than smallest int240 or\\n     * greater than largest int240).\\n     *\\n     * Counterpart to Solidity's `int240` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 240 bits\\n     */\\n    function toInt240(int256 value) internal pure returns (int240 downcasted) {\\n        downcasted = int240(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(240, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int232 from int256, reverting on\\n     * overflow (when the input is less than smallest int232 or\\n     * greater than largest int232).\\n     *\\n     * Counterpart to Solidity's `int232` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 232 bits\\n     */\\n    function toInt232(int256 value) internal pure returns (int232 downcasted) {\\n        downcasted = int232(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(232, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int224 from int256, reverting on\\n     * overflow (when the input is less than smallest int224 or\\n     * greater than largest int224).\\n     *\\n     * Counterpart to Solidity's `int224` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 224 bits\\n     */\\n    function toInt224(int256 value) internal pure returns (int224 downcasted) {\\n        downcasted = int224(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(224, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int216 from int256, reverting on\\n     * overflow (when the input is less than smallest int216 or\\n     * greater than largest int216).\\n     *\\n     * Counterpart to Solidity's `int216` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 216 bits\\n     */\\n    function toInt216(int256 value) internal pure returns (int216 downcasted) {\\n        downcasted = int216(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(216, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int208 from int256, reverting on\\n     * overflow (when the input is less than smallest int208 or\\n     * greater than largest int208).\\n     *\\n     * Counterpart to Solidity's `int208` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 208 bits\\n     */\\n    function toInt208(int256 value) internal pure returns (int208 downcasted) {\\n        downcasted = int208(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(208, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int200 from int256, reverting on\\n     * overflow (when the input is less than smallest int200 or\\n     * greater than largest int200).\\n     *\\n     * Counterpart to Solidity's `int200` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 200 bits\\n     */\\n    function toInt200(int256 value) internal pure returns (int200 downcasted) {\\n        downcasted = int200(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(200, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int192 from int256, reverting on\\n     * overflow (when the input is less than smallest int192 or\\n     * greater than largest int192).\\n     *\\n     * Counterpart to Solidity's `int192` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 192 bits\\n     */\\n    function toInt192(int256 value) internal pure returns (int192 downcasted) {\\n        downcasted = int192(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(192, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int184 from int256, reverting on\\n     * overflow (when the input is less than smallest int184 or\\n     * greater than largest int184).\\n     *\\n     * Counterpart to Solidity's `int184` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 184 bits\\n     */\\n    function toInt184(int256 value) internal pure returns (int184 downcasted) {\\n        downcasted = int184(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(184, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int176 from int256, reverting on\\n     * overflow (when the input is less than smallest int176 or\\n     * greater than largest int176).\\n     *\\n     * Counterpart to Solidity's `int176` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 176 bits\\n     */\\n    function toInt176(int256 value) internal pure returns (int176 downcasted) {\\n        downcasted = int176(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(176, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int168 from int256, reverting on\\n     * overflow (when the input is less than smallest int168 or\\n     * greater than largest int168).\\n     *\\n     * Counterpart to Solidity's `int168` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 168 bits\\n     */\\n    function toInt168(int256 value) internal pure returns (int168 downcasted) {\\n        downcasted = int168(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(168, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int160 from int256, reverting on\\n     * overflow (when the input is less than smallest int160 or\\n     * greater than largest int160).\\n     *\\n     * Counterpart to Solidity's `int160` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 160 bits\\n     */\\n    function toInt160(int256 value) internal pure returns (int160 downcasted) {\\n        downcasted = int160(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(160, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int152 from int256, reverting on\\n     * overflow (when the input is less than smallest int152 or\\n     * greater than largest int152).\\n     *\\n     * Counterpart to Solidity's `int152` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 152 bits\\n     */\\n    function toInt152(int256 value) internal pure returns (int152 downcasted) {\\n        downcasted = int152(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(152, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int144 from int256, reverting on\\n     * overflow (when the input is less than smallest int144 or\\n     * greater than largest int144).\\n     *\\n     * Counterpart to Solidity's `int144` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 144 bits\\n     */\\n    function toInt144(int256 value) internal pure returns (int144 downcasted) {\\n        downcasted = int144(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(144, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int136 from int256, reverting on\\n     * overflow (when the input is less than smallest int136 or\\n     * greater than largest int136).\\n     *\\n     * Counterpart to Solidity's `int136` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 136 bits\\n     */\\n    function toInt136(int256 value) internal pure returns (int136 downcasted) {\\n        downcasted = int136(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(136, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int128 from int256, reverting on\\n     * overflow (when the input is less than smallest int128 or\\n     * greater than largest int128).\\n     *\\n     * Counterpart to Solidity's `int128` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 128 bits\\n     */\\n    function toInt128(int256 value) internal pure returns (int128 downcasted) {\\n        downcasted = int128(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(128, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int120 from int256, reverting on\\n     * overflow (when the input is less than smallest int120 or\\n     * greater than largest int120).\\n     *\\n     * Counterpart to Solidity's `int120` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 120 bits\\n     */\\n    function toInt120(int256 value) internal pure returns (int120 downcasted) {\\n        downcasted = int120(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(120, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int112 from int256, reverting on\\n     * overflow (when the input is less than smallest int112 or\\n     * greater than largest int112).\\n     *\\n     * Counterpart to Solidity's `int112` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 112 bits\\n     */\\n    function toInt112(int256 value) internal pure returns (int112 downcasted) {\\n        downcasted = int112(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(112, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int104 from int256, reverting on\\n     * overflow (when the input is less than smallest int104 or\\n     * greater than largest int104).\\n     *\\n     * Counterpart to Solidity's `int104` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 104 bits\\n     */\\n    function toInt104(int256 value) internal pure returns (int104 downcasted) {\\n        downcasted = int104(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(104, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int96 from int256, reverting on\\n     * overflow (when the input is less than smallest int96 or\\n     * greater than largest int96).\\n     *\\n     * Counterpart to Solidity's `int96` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 96 bits\\n     */\\n    function toInt96(int256 value) internal pure returns (int96 downcasted) {\\n        downcasted = int96(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(96, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int88 from int256, reverting on\\n     * overflow (when the input is less than smallest int88 or\\n     * greater than largest int88).\\n     *\\n     * Counterpart to Solidity's `int88` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 88 bits\\n     */\\n    function toInt88(int256 value) internal pure returns (int88 downcasted) {\\n        downcasted = int88(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(88, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int80 from int256, reverting on\\n     * overflow (when the input is less than smallest int80 or\\n     * greater than largest int80).\\n     *\\n     * Counterpart to Solidity's `int80` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 80 bits\\n     */\\n    function toInt80(int256 value) internal pure returns (int80 downcasted) {\\n        downcasted = int80(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(80, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int72 from int256, reverting on\\n     * overflow (when the input is less than smallest int72 or\\n     * greater than largest int72).\\n     *\\n     * Counterpart to Solidity's `int72` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 72 bits\\n     */\\n    function toInt72(int256 value) internal pure returns (int72 downcasted) {\\n        downcasted = int72(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(72, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int64 from int256, reverting on\\n     * overflow (when the input is less than smallest int64 or\\n     * greater than largest int64).\\n     *\\n     * Counterpart to Solidity's `int64` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 64 bits\\n     */\\n    function toInt64(int256 value) internal pure returns (int64 downcasted) {\\n        downcasted = int64(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(64, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int56 from int256, reverting on\\n     * overflow (when the input is less than smallest int56 or\\n     * greater than largest int56).\\n     *\\n     * Counterpart to Solidity's `int56` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 56 bits\\n     */\\n    function toInt56(int256 value) internal pure returns (int56 downcasted) {\\n        downcasted = int56(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(56, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int48 from int256, reverting on\\n     * overflow (when the input is less than smallest int48 or\\n     * greater than largest int48).\\n     *\\n     * Counterpart to Solidity's `int48` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 48 bits\\n     */\\n    function toInt48(int256 value) internal pure returns (int48 downcasted) {\\n        downcasted = int48(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(48, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int40 from int256, reverting on\\n     * overflow (when the input is less than smallest int40 or\\n     * greater than largest int40).\\n     *\\n     * Counterpart to Solidity's `int40` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 40 bits\\n     */\\n    function toInt40(int256 value) internal pure returns (int40 downcasted) {\\n        downcasted = int40(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(40, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int32 from int256, reverting on\\n     * overflow (when the input is less than smallest int32 or\\n     * greater than largest int32).\\n     *\\n     * Counterpart to Solidity's `int32` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 32 bits\\n     */\\n    function toInt32(int256 value) internal pure returns (int32 downcasted) {\\n        downcasted = int32(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(32, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int24 from int256, reverting on\\n     * overflow (when the input is less than smallest int24 or\\n     * greater than largest int24).\\n     *\\n     * Counterpart to Solidity's `int24` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 24 bits\\n     */\\n    function toInt24(int256 value) internal pure returns (int24 downcasted) {\\n        downcasted = int24(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(24, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int16 from int256, reverting on\\n     * overflow (when the input is less than smallest int16 or\\n     * greater than largest int16).\\n     *\\n     * Counterpart to Solidity's `int16` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 16 bits\\n     */\\n    function toInt16(int256 value) internal pure returns (int16 downcasted) {\\n        downcasted = int16(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(16, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the downcasted int8 from int256, reverting on\\n     * overflow (when the input is less than smallest int8 or\\n     * greater than largest int8).\\n     *\\n     * Counterpart to Solidity's `int8` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - input must fit into 8 bits\\n     */\\n    function toInt8(int256 value) internal pure returns (int8 downcasted) {\\n        downcasted = int8(value);\\n        if (downcasted != value) {\\n            revert SafeCastOverflowedIntDowncast(8, value);\\n        }\\n    }\\n\\n    /**\\n     * @dev Converts an unsigned uint256 into a signed int256.\\n     *\\n     * Requirements:\\n     *\\n     * - input must be less than or equal to maxInt256.\\n     */\\n    function toInt256(uint256 value) internal pure returns (int256) {\\n        // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\\n        if (value > uint256(type(int256).max)) {\\n            revert SafeCastOverflowedUintToInt(value);\\n        }\\n        return int256(value);\\n    }\\n\\n    /**\\n     * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\\n     */\\n    function toUint(bool b) internal pure returns (uint256 u) {\\n        assembly (\\\"memory-safe\\\") {\\n            u := iszero(iszero(b))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {SafeCast} from \\\"./SafeCast.sol\\\";\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n    /**\\n     * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\\n     *\\n     * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\\n     * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\\n     * one branch when needed, making this function more expensive.\\n     */\\n    function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {\\n        unchecked {\\n            // branchless ternary works because:\\n            // b ^ (a ^ b) == a\\n            // b ^ 0 == b\\n            return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the largest of two signed numbers.\\n     */\\n    function max(int256 a, int256 b) internal pure returns (int256) {\\n        return ternary(a > b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the smallest of two signed numbers.\\n     */\\n    function min(int256 a, int256 b) internal pure returns (int256) {\\n        return ternary(a < b, a, b);\\n    }\\n\\n    /**\\n     * @dev Returns the average of two signed numbers without overflow.\\n     * The result is rounded towards zero.\\n     */\\n    function average(int256 a, int256 b) internal pure returns (int256) {\\n        // Formula from the book \\\"Hacker's Delight\\\"\\n        int256 x = (a & b) + ((a ^ b) >> 1);\\n        return x + (int256(uint256(x) >> 255) & (a ^ b));\\n    }\\n\\n    /**\\n     * @dev Returns the absolute unsigned value of a signed value.\\n     */\\n    function abs(int256 n) internal pure returns (uint256) {\\n        unchecked {\\n            // Formula from the \\\"Bit Twiddling Hacks\\\" by Sean Eron Anderson.\\n            // Since `n` is a signed integer, the generated bytecode will use the SAR opcode to perform the right shift,\\n            // taking advantage of the most significant (or \\\"sign\\\" bit) in two's complement representation.\\n            // This opcode adds new most significant bits set to the value of the previous most significant bit. As a result,\\n            // the mask will either be `bytes32(0)` (if n is positive) or `~bytes32(0)` (if n is negative).\\n            int256 mask = n >> 255;\\n\\n            // A `bytes32(0)` mask leaves the input unchanged, while a `~bytes32(0)` mask complements it.\\n            return uint256((n + mask) ^ mask);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\"},\"contracts/UniqueNFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.28;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC721/ERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\ncontract UniqueNFT is ERC721URIStorage, Ownable {\\n    // \\u9650\\u5b9aNFT\\u7684\\u603b\\u6570\\u91cf\\u4e3a1\\n    uint256 private constant MAX_SUPPLY = 1;\\n\\n    // \\u8ffd\\u8e2a\\u5df2\\u94f8\\u9020\\u7684NFT\\u6570\\u91cf\\n    uint256 private _tokenIdCounter;\\n\\n    // \\u8bb0\\u5f55NFT\\u662f\\u5426\\u5df2\\u7ecf\\u88ab\\u94f8\\u9020\\n    bool private _isMinted;\\n\\n    constructor(\\n        address initialOwner\\n    ) ERC721(\\\"UniqueNFT\\\", \\\"UNFT\\\") Ownable(initialOwner) {\\n        _tokenIdCounter = 0;\\n        _isMinted = false;\\n    }\\n\\n    /**\\n     * @dev \\u94f8\\u9020\\u552f\\u4e00\\u7684NFT\\n     * @param recipient NFT\\u63a5\\u6536\\u8005\\u5730\\u5740\\n     * @param tokenURI NFT\\u7684\\u5143\\u6570\\u636eURI\\n     */\\n    function mint(\\n        address recipient,\\n        string memory tokenURI\\n    ) public onlyOwner returns (uint256) {\\n        require(!_isMinted, \\\"UniqueNFT: The only NFT has already been minted\\\");\\n        require(\\n            _tokenIdCounter < MAX_SUPPLY,\\n            \\\"UniqueNFT: Maximum supply reached\\\"\\n        );\\n\\n        uint256 tokenId = _tokenIdCounter;\\n        _safeMint(recipient, tokenId);\\n        _setTokenURI(tokenId, tokenURI);\\n\\n        _tokenIdCounter += 1;\\n        _isMinted = true;\\n\\n        return tokenId;\\n    }\\n\\n    /**\\n     * @dev \\u8fd4\\u56de\\u5f53\\u524d\\u94f8\\u9020\\u7684NFT\\u603b\\u6570\\n     */\\n    function totalSupply() public view returns (uint256) {\\n        return _tokenIdCounter;\\n    }\\n\\n    /**\\n     * @dev \\u68c0\\u67e5NFT\\u662f\\u5426\\u5df2\\u7ecf\\u88ab\\u94f8\\u9020\\n     */\\n    function isMinted() public view returns (bool) {\\n        return _isMinted;\\n    }\\n}\\n\",\"keccak256\":\"0x7a3678e0a8a8ff881f318f90f3211d6ffbbad93b580048dcfb2cbf5393599da5\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":5365,"contract":"contracts/UniqueNFT.sol:UniqueNFT","label":"_name","offset":0,"slot":"0","type":"t_string_storage"},{"astId":5367,"contract":"contracts/UniqueNFT.sol:UniqueNFT","label":"_symbol","offset":0,"slot":"1","type":"t_string_storage"},{"astId":5371,"contract":"contracts/UniqueNFT.sol:UniqueNFT","label":"_owners","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_address)"},{"astId":5375,"contract":"contracts/UniqueNFT.sol:UniqueNFT","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":5379,"contract":"contracts/UniqueNFT.sol:UniqueNFT","label":"_tokenApprovals","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_address)"},{"astId":5385,"contract":"contracts/UniqueNFT.sol:UniqueNFT","label":"_operatorApprovals","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_address,t_bool))"},{"astId":6452,"contract":"contracts/UniqueNFT.sol:UniqueNFT","label":"_tokenURIs","offset":0,"slot":"6","type":"t_mapping(t_uint256,t_string_storage)"},{"astId":3841,"contract":"contracts/UniqueNFT.sol:UniqueNFT","label":"_owner","offset":0,"slot":"7","type":"t_address"},{"astId":13303,"contract":"contracts/UniqueNFT.sol:UniqueNFT","label":"_tokenIdCounter","offset":0,"slot":"8","type":"t_uint256"},{"astId":13305,"contract":"contracts/UniqueNFT.sol:UniqueNFT","label":"_isMinted","offset":0,"slot":"9","type":"t_bool"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_bool))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => bool))","numberOfBytes":"32","value":"t_mapping(t_address,t_bool)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_string_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => string)","numberOfBytes":"32","value":"t_string_storage"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IERC6551Account.sol":{"IERC6551Account":{"abi":[{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"context","type":"bytes"}],"name":"isValidSigner","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"state","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"the ERC-165 identifier for this interface is `0x6faff5f1`","kind":"dev","methods":{"isValidSigner(address,bytes)":{"details":"Returns a magic value indicating whether a given signer is authorized to act on behalf of the account. MUST return the bytes4 magic value 0x523e3260 if the given signer is valid. By default, the holder of the non-fungible token the account is bound to MUST be considered a valid signer. Accounts MAY implement additional authorization logic which invalidates the holder as a signer or grants signing permissions to other non-holder accounts.","params":{"context":"Additional data used to determine whether the signer is valid","signer":"The address to check signing authorization for"},"returns":{"magicValue":"Magic value indicating whether the signer is valid"}},"state()":{"details":"Returns a value that SHOULD be modified each time the account changes state.","returns":{"_0":"The current account state"}},"token()":{"details":"Returns the identifier of the non-fungible token which owns the account. The return value of this function MUST be constant - it MUST NOT change over time.","returns":{"chainId":"      The EIP-155 ID of the chain the token exists on","tokenContract":"The contract address of the token","tokenId":"      The ID of the token"}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"isValidSigner(address,bytes)":"523e3260","state()":"c19d93fb","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"}],\"name\":\"isValidSigner\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is `0x6faff5f1`\",\"kind\":\"dev\",\"methods\":{\"isValidSigner(address,bytes)\":{\"details\":\"Returns a magic value indicating whether a given signer is authorized to act on behalf of the account. MUST return the bytes4 magic value 0x523e3260 if the given signer is valid. By default, the holder of the non-fungible token the account is bound to MUST be considered a valid signer. Accounts MAY implement additional authorization logic which invalidates the holder as a signer or grants signing permissions to other non-holder accounts.\",\"params\":{\"context\":\"Additional data used to determine whether the signer is valid\",\"signer\":\"The address to check signing authorization for\"},\"returns\":{\"magicValue\":\"Magic value indicating whether the signer is valid\"}},\"state()\":{\"details\":\"Returns a value that SHOULD be modified each time the account changes state.\",\"returns\":{\"_0\":\"The current account state\"}},\"token()\":{\"details\":\"Returns the identifier of the non-fungible token which owns the account. The return value of this function MUST be constant - it MUST NOT change over time.\",\"returns\":{\"chainId\":\"      The EIP-155 ID of the chain the token exists on\",\"tokenContract\":\"The contract address of the token\",\"tokenId\":\"      The ID of the token\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC6551Account.sol\":\"IERC6551Account\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC6551Account.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/// @dev the ERC-165 identifier for this interface is `0x6faff5f1`\\ninterface IERC6551Account {\\n    /**\\n     * @dev Allows the account to receive Ether.\\n     *\\n     * Accounts MUST implement a `receive` function.\\n     *\\n     * Accounts MAY perform arbitrary logic to restrict conditions\\n     * under which Ether can be received.\\n     */\\n    receive() external payable;\\n\\n    /**\\n     * @dev Returns the identifier of the non-fungible token which owns the account.\\n     *\\n     * The return value of this function MUST be constant - it MUST NOT change over time.\\n     *\\n     * @return chainId       The EIP-155 ID of the chain the token exists on\\n     * @return tokenContract The contract address of the token\\n     * @return tokenId       The ID of the token\\n     */\\n    function token()\\n        external\\n        view\\n        returns (uint256 chainId, address tokenContract, uint256 tokenId);\\n\\n    /**\\n     * @dev Returns a value that SHOULD be modified each time the account changes state.\\n     *\\n     * @return The current account state\\n     */\\n    function state() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns a magic value indicating whether a given signer is authorized to act on behalf\\n     * of the account.\\n     *\\n     * MUST return the bytes4 magic value 0x523e3260 if the given signer is valid.\\n     *\\n     * By default, the holder of the non-fungible token the account is bound to MUST be considered\\n     * a valid signer.\\n     *\\n     * Accounts MAY implement additional authorization logic which invalidates the holder as a\\n     * signer or grants signing permissions to other non-holder accounts.\\n     *\\n     * @param  signer     The address to check signing authorization for\\n     * @param  context    Additional data used to determine whether the signer is valid\\n     * @return magicValue Magic value indicating whether the signer is valid\\n     */\\n    function isValidSigner(address signer, bytes calldata context)\\n        external\\n        view\\n        returns (bytes4 magicValue);\\n}\\n\",\"keccak256\":\"0xda097894cc052f451ad669c5a07a9eda3f53a948f8080714850dc68cc1040b42\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IERC6551Executable.sol":{"IERC6551Executable":{"abi":[{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint8","name":"operation","type":"uint8"}],"name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"the ERC-165 identifier for this interface is `0x51945447`","kind":"dev","methods":{"execute(address,uint256,bytes,uint8)":{"details":"Executes a low-level operation if the caller is a valid signer on the account. Reverts and bubbles up error if operation fails. Accounts implementing this interface MUST accept the following operation parameter values: - 0 = CALL - 1 = DELEGATECALL - 2 = CREATE - 3 = CREATE2 Accounts implementing this interface MAY support additional operations or restrict a signer's ability to execute certain operations.","params":{"data":"The encoded operation calldata","operation":"A value indicating the type of operation to perform","to":"The target address of the operation","value":"The Ether value to be sent to the target"},"returns":{"_0":"The result of the operation"}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"execute(address,uint256,bytes,uint8)":"51945447"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"operation\",\"type\":\"uint8\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"the ERC-165 identifier for this interface is `0x51945447`\",\"kind\":\"dev\",\"methods\":{\"execute(address,uint256,bytes,uint8)\":{\"details\":\"Executes a low-level operation if the caller is a valid signer on the account. Reverts and bubbles up error if operation fails. Accounts implementing this interface MUST accept the following operation parameter values: - 0 = CALL - 1 = DELEGATECALL - 2 = CREATE - 3 = CREATE2 Accounts implementing this interface MAY support additional operations or restrict a signer's ability to execute certain operations.\",\"params\":{\"data\":\"The encoded operation calldata\",\"operation\":\"A value indicating the type of operation to perform\",\"to\":\"The target address of the operation\",\"value\":\"The Ether value to be sent to the target\"},\"returns\":{\"_0\":\"The result of the operation\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC6551Executable.sol\":\"IERC6551Executable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC6551Executable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n/// @dev the ERC-165 identifier for this interface is `0x51945447`\\ninterface IERC6551Executable {\\n    /**\\n     * @dev Executes a low-level operation if the caller is a valid signer on the account.\\n     *\\n     * Reverts and bubbles up error if operation fails.\\n     *\\n     * Accounts implementing this interface MUST accept the following operation parameter values:\\n     * - 0 = CALL\\n     * - 1 = DELEGATECALL\\n     * - 2 = CREATE\\n     * - 3 = CREATE2\\n     *\\n     * Accounts implementing this interface MAY support additional operations or restrict a signer's\\n     * ability to execute certain operations.\\n     *\\n     * @param to        The target address of the operation\\n     * @param value     The Ether value to be sent to the target\\n     * @param data      The encoded operation calldata\\n     * @param operation A value indicating the type of operation to perform\\n     * @return The result of the operation\\n     */\\n    function execute(address to, uint256 value, bytes calldata data, uint8 operation)\\n        external\\n        payable\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x9bdb7a7e324bf36203ec6ff68c454446cae3993c1054b0356a081fa52ec43a29\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IERC6551Registry.sol":{"IERC6551Registry":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"implementation","type":"address"},{"indexed":false,"internalType":"uint256","name":"chainId","type":"uint256"},{"indexed":false,"internalType":"address","name":"tokenContract","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"salt","type":"uint256"}],"name":"AccountCreated","type":"event"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"}],"name":"account","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"salt","type":"uint256"},{"internalType":"bytes","name":"initData","type":"bytes"}],"name":"createAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"ERC-165 identifier for this interface is 0x35e5c0ab","events":{"AccountCreated(address,address,uint256,address,uint256,uint256)":{"details":"Emitted when a new account is created"}},"kind":"dev","methods":{"account(address,uint256,address,uint256,uint256)":{"details":"Returns the account address associated with a specific token","params":{"chainId":"The EIP-155 ID of the chain where the token exists","implementation":"The address of the account implementation to use","salt":"A random value that allows for the creation of multiple accounts for the same NFT","tokenContract":"The address of the token contract","tokenId":"The ID of the token"}},"createAccount(address,uint256,address,uint256,uint256,bytes)":{"details":"Creates an ERC-6551 account","params":{"chainId":"The EIP-155 ID of the chain where the token exists","implementation":"The address of the account implementation to use","initData":"The initialization data for the account","salt":"A random value that allows for the creation of multiple accounts for the same NFT","tokenContract":"The address of the token contract","tokenId":"The ID of the token"}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"account(address,uint256,address,uint256,uint256)":"5e9bc536","createAccount(address,uint256,address,uint256,uint256,bytes)":"da7323b3"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"}],\"name\":\"AccountCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"}],\"name\":\"account\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initData\",\"type\":\"bytes\"}],\"name\":\"createAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC-165 identifier for this interface is 0x35e5c0ab\",\"events\":{\"AccountCreated(address,address,uint256,address,uint256,uint256)\":{\"details\":\"Emitted when a new account is created\"}},\"kind\":\"dev\",\"methods\":{\"account(address,uint256,address,uint256,uint256)\":{\"details\":\"Returns the account address associated with a specific token\",\"params\":{\"chainId\":\"The EIP-155 ID of the chain where the token exists\",\"implementation\":\"The address of the account implementation to use\",\"salt\":\"A random value that allows for the creation of multiple accounts for the same NFT\",\"tokenContract\":\"The address of the token contract\",\"tokenId\":\"The ID of the token\"}},\"createAccount(address,uint256,address,uint256,uint256,bytes)\":{\"details\":\"Creates an ERC-6551 account\",\"params\":{\"chainId\":\"The EIP-155 ID of the chain where the token exists\",\"implementation\":\"The address of the account implementation to use\",\"initData\":\"The initialization data for the account\",\"salt\":\"A random value that allows for the creation of multiple accounts for the same NFT\",\"tokenContract\":\"The address of the token contract\",\"tokenId\":\"The ID of the token\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC6551Registry.sol\":\"IERC6551Registry\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC6551Registry.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.28;\\n\\n/// @dev ERC-165 identifier for this interface is 0x35e5c0ab\\ninterface IERC6551Registry {\\n    /**\\n     * @dev Creates an ERC-6551 account\\n     * @param implementation The address of the account implementation to use\\n     * @param chainId The EIP-155 ID of the chain where the token exists\\n     * @param tokenContract The address of the token contract\\n     * @param tokenId The ID of the token\\n     * @param salt A random value that allows for the creation of multiple accounts for the same NFT\\n     * @param initData The initialization data for the account\\n     */\\n    function createAccount(\\n        address implementation,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId,\\n        uint256 salt,\\n        bytes calldata initData\\n    ) external returns (address);\\n\\n    /**\\n     * @dev Returns the account address associated with a specific token\\n     * @param implementation The address of the account implementation to use\\n     * @param chainId The EIP-155 ID of the chain where the token exists\\n     * @param tokenContract The address of the token contract\\n     * @param tokenId The ID of the token\\n     * @param salt A random value that allows for the creation of multiple accounts for the same NFT\\n     */\\n    function account(\\n        address implementation,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId,\\n        uint256 salt\\n    ) external view returns (address);\\n\\n    /**\\n     * @dev Emitted when a new account is created\\n     */\\n    event AccountCreated(\\n        address account,\\n        address implementation,\\n        uint256 chainId,\\n        address tokenContract,\\n        uint256 tokenId,\\n        uint256 salt\\n    );\\n}\\n\",\"keccak256\":\"0x36f83d43b30290bd3cf170fa53cc75de271cecc7bd900fe250d6fa5e18862b8b\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}}}}}